bmad-method 6.11.1-next.13 → 6.11.1-next.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.11.1-next.13",
4
+ "version": "6.11.1-next.14",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -30,10 +30,13 @@ Before listing artifacts or prompting the user, check whether you already know t
30
30
  Use the same routing as above.
31
31
 
32
32
  3. Otherwise — scan artifacts and ask
33
- - Active specs (`draft`, `ready-for-dev`, `in-progress`, `in-review`) in `{{.implementation_artifacts}}`? → List them and HALT. Ask user which to resume (or `[N]` for new).
34
- - If `draft` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-02-plan.md]]` (resume planning from the draft)
35
- - If `ready-for-dev` or `in-progress` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-03-implement.md]]`
36
- - If `in-review` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-04-review.md]]`
33
+ - Active specs (`draft`, `ready-for-dev`, `in-progress`, `in-review`) in `{{.implementation_artifacts}}`? → List them and HALT. Give the user a choice:
34
+ - Resume one of the listed specs
35
+ - **New** start new work
36
+ If `draft` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-02-plan.md]]` (resume planning from the draft)
37
+ If `ready-for-dev` or `in-progress` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-03-implement.md]]`
38
+ If `in-review` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-04-review.md]]`
39
+ If the user chooses **New**: proceed to INSTRUCTIONS
37
40
  - Unformatted spec or intent file lacking `status` frontmatter? → Suggest treating its contents as the starting intent. Do NOT attempt to infer a state and resume it.
38
41
 
39
42
  Never ask extra questions if you already understand what the user intends.
@@ -82,14 +85,16 @@ If the spec is an epic story and `{{.implementation_artifacts}}/sprint-status.ya
82
85
  4. Multi-goal check (see SCOPE STANDARD). If the intent fails the single-goal criteria:
83
86
  - Present detected distinct goals as a bullet list.
84
87
  - Explain briefly (2–4 sentences): why each goal qualifies as independently shippable, any coupling risks if split, and which goal you recommend tackling first.
85
- - HALT and ask human: `[S] Split — pick first goal, defer the rest` | `[K] Keep all goals — accept the risks`
86
- - On **S**: For each deferred goal, append one new entry to `{{.implementation_artifacts}}/deferred-work.md` using this format. Do not modify existing entries or look for duplicates. Narrow scope to the first-mentioned goal. Continue routing.
88
+ - HALT and give the user a choice:
89
+ - **Split** pick first goal, defer the rest.
90
+ - **Keep all goals** — accept the risks.
91
+ - If the user chooses **Split**: For each deferred goal, append one new entry to `{{.implementation_artifacts}}/deferred-work.md` using this format. Do not modify existing entries or look for duplicates. Narrow scope to the first-mentioned goal. Continue routing.
87
92
  ```markdown
88
93
  - source_spec: none
89
94
  summary: <one sentence naming the deferred goal>
90
95
  evidence: <why this was split from the current intent>
91
96
  ```
92
- - On **K**: Proceed as-is.
97
+ - If the user chooses **Keep all goals**: Proceed as-is.
93
98
  5. Route — choose exactly one:
94
99
 
95
100
  If the explicit spec-folder-plus-story-id pair had no matching story file, keep the colocated `spec_file` selected above. Otherwise, derive a valid kebab-case slug from the clarified intent. If the intent references a tracking identifier (story number, issue number, ticket ID), lead the slug with it (e.g. `3-2-digest-delivery`, `gh-47-fix-auth`). If `{{.implementation_artifacts}}/spec-{slug}.md` already exists: if its status is `draft`, treat it as the same work and resume it (set `spec_file` to that path, **EARLY EXIT** → `[[bmad-snapshot:step-02-plan.md]]`); otherwise append `-2`, `-3`, etc. Set `spec_file` = `{{.implementation_artifacts}}/spec-{slug}.md`.
@@ -35,7 +35,10 @@ story_key: '' # set at runtime when discovered from sprint status
35
35
 
36
36
  **Tier 3 — Sprint tracking.**
37
37
  Look for a sprint status file (`*sprint-status*`) in `{implementation_artifacts}` or `{planning_artifacts}`. If found, scan for stories with status `review`:
38
- - **Exactly one `review` story:** Set `{story_key}` to the story's key (e.g., `1-2-user-auth`). Suggest it: "I found story <story-id> in `review` status. Would you like to review its changes? [Y] Yes / [N] No, let me choose". If confirmed, use the story context to determine the diff source (branch name derived from story slug, or uncommitted changes). If declined, clear `{story_key}` and fall through.
38
+ - **Exactly one `review` story:** Set `{story_key}` to the story's key (e.g., `1-2-user-auth`). HALT and give the user a choice:
39
+ - **Review this story** — review the detected story `<story-id>` (status `review`).
40
+ - **Choose another target** — pick a different review target.
41
+ If the user chooses **Review this story**, use the story context to determine the diff source (branch name derived from story slug, or uncommitted changes). If they choose **Choose another target**, clear `{story_key}` and fall through.
39
42
  - **Multiple `review` stories:** Present them as numbered options alongside a manual choice option. Wait for user selection. If a story is selected, set `{story_key}` and use its context to determine the diff source. If manual choice is selected, clear `{story_key}` and fall through.
40
43
  - **None:** Fall through.
41
44
 
@@ -182,8 +182,12 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen
182
182
 
183
183
  <check if="mode is Incremental">
184
184
  <action>Present each edit proposal individually</action>
185
- <ask>Review and refine this change? Options: Approve [a], Edit [e], Skip [s]</ask>
186
- <action>Iterate on each proposal based on user feedback</action>
185
+ <action>HALT and give the user a choice:
186
+ - **Approve** accept this proposal
187
+ - **Edit** — refine this proposal
188
+ - **Skip** — drop this proposal
189
+ </action>
190
+ <action>If the user chooses **Approve**, keep the proposal. If they choose **Edit**, refine it with them. If they choose **Skip**, drop it. Continue to the next proposal.</action>
187
191
  </check>
188
192
 
189
193
  <action if="mode is Batch">Collect all edit proposals and present together at end of step</action>
@@ -232,7 +236,11 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen
232
236
 
233
237
  <action>Present complete Sprint Change Proposal to user</action>
234
238
  <action>Write Sprint Change Proposal document to {default_output_file}</action>
235
- <ask>Review complete proposal. Continue [c] or Edit [e]?</ask>
239
+ <action>HALT and give the user a choice:
240
+ - **Continue** — proceed to approval
241
+ - **Edit** — revise the proposal first
242
+ </action>
243
+ <action>If the user chooses **Edit**, revise the proposal with them and write the updated document before continuing.</action>
236
244
  </step>
237
245
 
238
246
  <step n="5" goal="Finalize and Route for Implementation">
@@ -19,7 +19,7 @@ You are BMad's shared refinement checkpoint: other skills invoke you at natural
19
19
 
20
20
  ## Serving the Catalog
21
21
 
22
- `scripts/pick_methods.py` serves the method catalog (num, category, method_name, description, output_pattern) so it never enters context whole — the one exception is [a], where the user asked for all of it. Invoke as:
22
+ `scripts/pick_methods.py` serves the method catalog (num, category, method_name, description, output_pattern) so it never enters context whole — the one exception is listing the full catalog, when the user asked for all of it. Invoke as:
23
23
 
24
24
  ```bash
25
25
  uv run {skill-root}/scripts/pick_methods.py --file {workflow.methods_file} <command>
@@ -28,7 +28,7 @@ uv run {skill-root}/scripts/pick_methods.py --file {workflow.methods_file} <comm
28
28
  If `{workflow.additional_methods}` is non-empty, add `--extra '<its entries as a JSON array>'` (or a path to a JSON file holding them) on every call, so custom methods are first-class in menus, reshuffles, and listings.
29
29
 
30
30
  - `categories` — category names + counts, the cheap map.
31
- - `list --category <cat> [--category <cat>]` — the index for chosen categories; `--all` dumps the whole catalog, only for [a].
31
+ - `list --category <cat> [--category <cat>]` — the index for chosen categories; `--all` dumps the whole catalog, only when listing all.
32
32
  - `show <name-or-num> [...]` — full rows by name or num.
33
33
  - `random -n 5 --spread [--exclude <name>]...` — a category-diverse random draw.
34
34
 
@@ -36,30 +36,29 @@ If `{workflow.additional_methods}` is non-empty, add `--extra '<its entries as a
36
36
 
37
37
  ## The Menu
38
38
 
39
- ```
40
- **Advanced Elicitation Options**
41
- Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed:
42
-
43
- 1. [Method Name]
44
- 2. [Method Name]
45
- 3. [Method Name]
46
- 4. [Method Name]
47
- 5. [Method Name]
48
- r. Reshuffle the list with 5 new options
49
- a. List all methods with descriptions
50
- x. Proceed / No Further Actions
51
- ```
39
+ HALT and give the user a choice:
40
+
41
+ - The five offered methods, listed by name. The user may pick one or several.
42
+ - **Reshuffle** — replace the list with five new options.
43
+ - **List all** — show the full catalog with descriptions.
44
+ - **Proceed** — no further elicitation.
52
45
 
53
- This menu is the interface other skills and their users rely on — keep its options and behavior stable. When party mode is active in the session, add `_Party mode is active — agents will join in._` under the heading. Handle the response:
46
+ This menu is the interface other skills and their users rely on — keep its options and behavior stable. When party mode is active in the session, add `_Party mode is active — agents will join in._` under the heading.
54
47
 
55
- - **1–5** run that method (several numbers: in sequence), then re-present the menu.
56
- - **r** reshuffle as above and re-present.
57
- - **a** show the full catalog (`list --all`) as a compact table; a pick by name or number runs like a numbered choice.
58
- - **x** done. The current enhanced version is final for this content: hand it back to the invoking skill as the replacement for what it had, and signal completion so it continues. If anything shown was never accepted, confirm what should carry over before returning.
59
- - **Anything else** treat as direction: apply it to the target and re-present the menu.
48
+ - If the user picks methods: run them (several: in sequence), then offer the menu again.
49
+ - If the user chooses **Reshuffle**: reshuffle as above and offer the menu again.
50
+ - If the user chooses **List all**: show the full catalog (`list --all`) as a compact table; a pick by name or number runs like a method choice.
51
+ - If the user chooses **Proceed**: done. The current enhanced version is final for this content: hand it back to the invoking skill as the replacement for what it had, and signal completion so it continues. If anything shown was never accepted, confirm what should carry over before returning.
52
+ - Any other reply is direction: apply it to the target and offer the menu again.
60
53
 
61
54
  ## Running a Method
62
55
 
63
- Use the method's description as its intent and its output_pattern as a flexible flow guide; scale depth to the target — a paragraph gets a light pass, an architecture decision gets the full treatment. Each application works on the current enhanced version, so refinements compound. Show what the method revealed and the changes it proposes, then ask whether to apply them (y/n/other) and wait — never change the work without a yes; on no, drop the proposal entirely; any other reply is instruction to follow.
56
+ Use the method's description as its intent and its output_pattern as a flexible flow guide; scale depth to the target — a paragraph gets a light pass, an architecture decision gets the full treatment. Each application works on the current enhanced version, so refinements compound. Show what the method revealed and the changes it proposes, then HALT and give the user a choice:
57
+
58
+ - **Apply** — accept the proposed changes.
59
+ - **Reject** — drop the proposal entirely.
60
+ - Or give different direction.
61
+
62
+ Never change the work unless the user accepts the proposal. If they reject it, drop the proposal entirely. Any other reply is instruction to follow.
64
63
 
65
64
  When a method casts personas (round tables, panels, debates), reuse party members already in the session if party mode is active; otherwise resolve installed agents on demand via `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key agents` (a four-layer merge of `_bmad/config.toml`, `config.user.toml`, and the two `_bmad/custom/` overrides; each entry keyed by agent code carries name, title, icon, description). If neither yields a fit, invent named viewpoints suited to the content.