mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-11-01 04:28:26 +08:00
fb28c032fbd1276cebca8b79b47fecc5331ed2fb
6
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fb28c032fb |
feat(skills): readers, agents, migration, help and docs name Sofia and the ticket file
bmad-build and bmad-build-auto load the active node's ticket file as the capability contract; bmad-architecture adopts the spine into the ticket's References through Sofia; the planning skills' closing offers name her SPEC capability; John's and Amelia's menus drop the items that invoked the retired skills and Sofia joins the roster. bmad migrate renders a v6 spec into the epic file, folds a pre-release spec-<slug>/ into its ticket (memlog entries in order, companions beside the ticket, CAP ids mapped to R), turns a loose spec folder into a backlog story, and drops the retired customization keys with a note. Help and docs describe one path: the initiative, epic or story file is the spec at its level, Sofia fills its requirements from what the user has and slices from it. |
||
|
|
b5420009c4 |
refactor: rename bmad-preview-ticketing to bmad-ticket (#2979)
* refactor: rename bmad-preview-ticketing to bmad-ticket The ticketing skill is no longer a preview; it is how BMad plans and tracks work. Rename the skill, update every reference, and drop the preview wording from the docs. The setup page moves to set-up-the-ticket-tree with a redirect from the old URL. * feat: forward bmad-preview-ticketing to bmad-ticket until v7 npx skills update does not install a renamed skill. Keep the old name as a forwarder that tells preview users about the rename, gives the install command, offers to rename their custom override file, and hands the request to bmad-ticket. Add a Breaking changelog entry. |
||
|
|
561eeedf38 |
feat(skills): retire planning and implementation artifact folders for the initiative store (#2968)
* feat(skills): retire planning and implementation artifact folders for the initiative store
Every document skill now writes into the active initiative under `output_folder`, as `<type>-<slug>/<type>-<slug>.md`, where the slug is what the document is about. `planning_artifacts` and `implementation_artifacts` are no longer read or seeded; a v6 project moves its files with `bmad migrate method`. The `bmad` skill gains `references/initiative.md` to show, switch, create, or clear the active initiative, and its help view reads the initiative folder instead of the retired paths. The repo's `CLAUDE.md` shim is removed, since Claude Code reads `AGENTS.md` natively.
* fix(ticketing): tickets live in output_folder, help runs the resolver, linter names the spine
Drops the ticketing store's separate root: the ticket tree is always {output_folder}/{active_initiative}, beside the documents, so an initiative created by the bmad skill is the one ticketing finds. The bmad help view now runs resolve_config.py when _bmad/config.toml exists instead of reading the user file alone. lint_spine.py reports the spine file, not the dependency name, for an unpinned Stack row.
* fix(docs): name the loose-work location where only the initiative folder was given
The brainstorming headless return reports the configured intent document name. The party-mode help row and four build docs say where files land when no initiative is active.
* docs: bring the English docs onto the initiative layout
The planning-skills diagram names the <type>-<slug>.md files. Planning pages state the output-folder fallback. The bmad skill replaces bmad-help everywhere, and the reference page says it also runs setup, status, migrate, and the active initiative. The v6 preview page leads with bmad migrate method. Tutorials install with the skills CLI and bmad setup. Config pages say where active_initiative lives and that output_folder carries the ticket tree. Loose path slips fixed, and an Unreleased changelog entry added.
|
||
|
|
5e33d3c03b |
feat(ticketing): build from the ticket tree without ticket files (#2944)
* docs(ticketing): shared rules for skills that use the ticket tree
Plan file name and place, status carried by the plan and who writes each value, how skills find the tree and run tickets.py, the baseline revision, and where code review and the retrospective write.
* docs(ticketing): backlog plans join by file stem, and a leaf file's status is read when there is no plan
* feat(ticketing): entries start without a file and take their state from the plan
* chore(tools): treat _bmad/method/scripts/ as install-only in the file reference check
* feat(ticketing): tickets.py is installed for every skill and finds the active initiative
* feat(ticketing): find and mark work on an entry that has only a plan
* docs(ticketing): board rules say who moves a ticket
* docs(ticketing): drop pull-to-start and the plan section
An entry is ready to start with no file, and the build's plan is its own file beside the leaf, so the ticketing skill stops describing a ## Plan section, a to_pull group, and publishing on pull. pull is only for refining, or for writing the file a tracker receives. On the repo store the committed tickets.toml is the publish; on a tracker publication is on_start or at_inception and the whole file is sent. spec_checkpoint becomes plan_checkpoint.
* docs(ticketing): method help and docs describe the ticket tree without ticket files
* refactor(ticketing): share tickets.py checks and test setup, and fix stale tree wording
* test(ticketing): decode tickets.py output as UTF-8, and skip the undecodable-argument test on Windows
* refactor(build): the build skills call their output a plan
Rename the build's output from spec to plan in bmad-build and bmad-build-auto with no change in behavior: plan-template.md, {plan_file}, [workflow] open_plan (no alias), bad_plan, Plan Change Log, plan-{slug}.md, source_plan, and the halt strings that name it. bmad-build records baseline_revision in place of baseline_commit. bmad-spec's spec_folder and SPEC.md keep their names. The renderer's open_plan label and the render tests follow, and a test renders both build skills with each pinned route.
* feat(build): bmad-build builds the next ready entry from the ticket tree
With no argument, bmad-build takes the first ready entry from tickets.py next,
reads it through find, and plans beside tickets.toml with the entry's ticket id.
Builds now stop at a new status, built, and never write done. tickets.py rows
carry a ref that find resolves, and a prerequisite in review counts as met.
* feat(build): bmad-build takes a named ticket and offers started plans from the tree
* refactor(build): bmad-build stops reading the old files
Drop the stories.yaml route, story_key and the sprint-status sync, and the
epic context compiled from the epics file. A tree ticket reads its epic file
and References, and takes continuity from its prerequisites' plans.
* feat(build): bmad-build-auto builds one ticket from the tree
With no work named, bmad-build-auto takes the active initiative's next
ready entry through tickets.py next and find; a named ref, ticket file,
or title resolves through find. Its plan lands at find's path with
ticket and baseline_revision, continuity comes from the plans of the
entry's prerequisites, and the run ends at built, never done. The
epic-story path no longer halts on an earlier plan in review.
* refactor(build): bmad-build-auto halts into the plan and stops reading the old files
A halt on a tree ticket runs tickets.py mark, which records the blocked
status and reason in the plan and creates it when there is none. Drop the
stories.yaml folder+id dispatch and the epic context compiled from the
epics file. bmad-build shows a blocked plan's reason and halts.
* docs(build): the loop contract describes bmad-build-auto on the ticket tree
* docs(build): the build docs and diagrams name the plan and take a ticket from the tree
* refactor(build): sweep stale story wording from the build skills and drop the dead open_plan clause
* fix(build): bmad-build-auto builds only what it is dispatched
An unattended worker must not choose its own work. Given no work it now
halts unclear intent instead of taking the first ready ticket from
tickets.py next; the orchestrator names each ticket.
* fix(build): bmad-build-auto takes a ticket only when the prompt names one
A bare ref, path, or title matched by shape could be something other
than a ticket, and was sent to find. A ticket is now a reference the
prompt calls a ticket, or a file whose frontmatter type is a ticket
type; find then resolves its plan, entry, and prerequisites.
* refactor(build): bmad-build names a ticket, then resolves it with find
Separate what counts as a ticket from the find call that resolves its
plan, entry, and prerequisites, as bmad-build-auto now does. No change
in which prompts count as a ticket.
* feat: review and retrospective from the ticket tree (#2954)
* feat(code-review): find the ticket in review through the tree and write to its plan
With no argument and nothing in the conversation, bmad-code-review runs
tickets.py status, offers the tickets in review, resolves the chosen one
through find to its plan, diffs from the plan's baseline_revision with
untracked files, and takes the claims from the commits since it. Findings
go into a dated block under the plan's Code Review section, deferred
findings included. The sprint-status tier, story_key, and the status and
sprint-status update are gone: the skill never changes a ticket's status.
* refactor(code-review): call the review's input a plan and drop the story-file route
Rename {spec_file} to {plan_file} with no alias across the steps, the
customize.toml lens and comment, and the render test. Findings go to the
plan's Code Review section whenever a plan is set and to the chat
otherwise; the baseline_revision detection, the Tasks/Subtasks condition,
and the Review Findings route are gone. The no-spec review mode becomes
no-plan, and the rule in step-04 names built as the status the build
leaves.
* feat(retrospective): read an epic folder from the ticket tree and write its retrospective there
* refactor(code-review): shorten the plan-file and ticket-tree tiers
* refactor(retrospective): drop the sprint status route, its script, and its tests
* refactor(correct-course): stop reading the epics file and writing sprint status
* docs(review,retrospective): describe code review, retrospective, and correct-course on the ticket tree
* refactor(review,retrospective): sweep duplicate rules and stale references from the epic
Say the retrospective's file name, only-write rule, and unfinished-ticket
verdict once each; describe git_evidence.py's output as the range's commits;
fix cross-references that named a missing workflow.md, a Close phase, a
Document Project input, and a step where a section or item was meant; and
align the finish-an-epic doc and help row with the plan as the status record.
* fix(retrospective): end the last plan's range at the epic's own work
A retrospective run after later work has landed counted those commits as
the epic's, since the last range ran to HEAD. When later work has landed,
the range now ends at the last commit belonging to this epic's tickets,
and the cut is recorded.
* feat: retire the legacy planning route and migrate ticket state (#2955)
* feat: retire the legacy planning route and migrate ticket state
* docs: drop the ticket-tree upgrade guide and changelog entry
Remove docs/start/upgrade-to-ticket-tree.md, its inbound links, and its
locale-coverage baseline entries. Revert the Unreleased CHANGELOG section.
* docs: keep the translated workflow map diagram unchanged
Only the vi-vn, cs, and zh-cn workflow-map pages embed this diagram, and
their text still describes the previous route.
* fix(ticketing): move a leaf's plan with it, say epic tickets need no file, write test files as UTF-8
---------
Co-authored-by: Brian Madison <bmadcode@gmail.com>
|
||
|
|
33bdfb5132 |
feat(build): shorten completion handoff (#2822)
Build now ends with a one or two sentence summary and a one-line offer of next steps: create a PR, use bmad-walkthrough, or make another change. The open_spec default is empty, so no editor opens unless customized, and Build no longer appends a Suggested Review Order to the spec; bmad-walkthrough generates a trail in conversation when the spec has none. Rename the in-session route to oneshot to match the step name, and rewrite step-oneshot in plain English. Guard sprint-status updates at the call sites so untracked work skips the sub-step, and shorten the sync instruction while keeping its edge cases. Resume in-progress oneshot specs on the oneshot route instead of dispatch, which expects a Code Map and Tasks the oneshot spec does not have. Drop the negative code -r renderer assertions, which only pinned the config default; the sentinel override test still covers open_spec substitution. Rework the walkthrough doc to open with the comprehension order a reader should follow and why a raw diff fails at it, frame "when to use" around understanding a change and deciding whether to ship, move the human-versus-agentic review note into an admonition, and drop the Review Trail section. |
||
|
|
c16dc729a9 |
docs: add Existing Codebases chapter (#2793)
Add a four-page chapter after Plan Larger Work: Start in an Existing Codebase (the repo is the knowledge; size the work from the source), Set and Maintain Project Context, Getting Deeper as the worked example, and The Theory of Project Context as optional last reading. Retire six English pages with redirects, drop the empty English Tutorials sidebar group, collapse Plan Larger Work and Existing Codebases in the sidebar, reflow how-to and explanation orders, and retarget Welcome, README, Plan, Reference, and style-guide links. Localized copies stay as deferred translation work. |