bmad-method 6.11.1-next.42 → 6.11.1-next.44
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 +1 -1
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-build/SKILL.md +1 -1
- package/src/bmm-skills/ship/bmad-build/customize.toml +6 -15
- package/src/bmm-skills/ship/bmad-build/spec-template.md +4 -4
- package/src/bmm-skills/ship/bmad-build/step-01-clarify-and-route.md +2 -2
- package/src/bmm-skills/ship/bmad-build/step-02-plan.md +1 -1
- package/src/bmm-skills/ship/bmad-build/step-03-implement.md +1 -1
- package/src/bmm-skills/ship/bmad-build/step-05-present.md +6 -43
- package/src/bmm-skills/ship/bmad-build/step-oneshot.md +50 -38
- package/src/bmm-skills/ship/bmad-build/sync-sprint-status.md +5 -19
- package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
- package/tools/tests/__pycache__/test_validate_skills.cpython-311.pyc +0 -0
package/package.json
CHANGED
package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-build
|
|
3
|
-
description: 'Turns
|
|
3
|
+
description: 'Turns implementation work into working code, reviewed and verified. Use when the user delegates a feature, story, bug fix, or meaningful change; a bare story or issue link counts. Skip obvious, low-risk mechanical maintenance such as small ignore-file, typo-only, formatting-only, or configuration-hygiene edits. Explicit BMAD requests always qualify. Do not volunteer for user-directed interactive edits or version-control operations that only record existing work.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Run the following command exactly once without changing the current working directory. Replace `{project-root}` with the absolute path to the project root and `{skill-root}` with the absolute path to this skill's directory:
|
|
@@ -31,19 +31,16 @@ persistent_facts = []
|
|
|
31
31
|
|
|
32
32
|
on_complete = ""
|
|
33
33
|
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
# window so relative review links resolve in the correct workspace. Override
|
|
37
|
-
# this with the application and equivalent behavior you prefer. Set it to an
|
|
38
|
-
# empty string to disable automatic opening and all related completion output.
|
|
34
|
+
# Optional instructions for opening a completed spec. The empty default leaves
|
|
35
|
+
# the spec closed. Override this with the application and behavior you prefer.
|
|
39
36
|
# Example requests for bmad-customize: "Open completed specs in Cursor and
|
|
40
37
|
# reuse the project window" or "Do not open completed specs automatically."
|
|
41
38
|
#
|
|
42
39
|
# Example `open_spec` override instructions for bmad-build.user.toml:
|
|
43
40
|
# {project-root} and {spec_file} are substituted at run time.
|
|
44
41
|
#
|
|
45
|
-
# VS Code and compatible GUI editors —
|
|
46
|
-
# Windsurf, Antigravity, Zed, and similar editors can
|
|
42
|
+
# VS Code and compatible GUI editors — a custom override can use `code`; Cursor,
|
|
43
|
+
# Windsurf, Antigravity, Zed, and similar editors can use their own launcher.
|
|
47
44
|
# Preserve reuse-window behavior when the launcher supports it, and always pass
|
|
48
45
|
# the repository root first and the spec second:
|
|
49
46
|
# Run `code -r "{project-root}" "{spec_file}"`, root first.
|
|
@@ -61,13 +58,7 @@ on_complete = ""
|
|
|
61
58
|
# Emacs — reuse an Emacs server without waiting for the buffer to close:
|
|
62
59
|
# Run `cd "{project-root}" && emacsclient -n "{spec_file}"`.
|
|
63
60
|
#
|
|
64
|
-
|
|
65
|
-
# that the spec was sent to the chosen editor and contains a Suggested Review
|
|
66
|
-
# Order, then include the default navigation tip shown below.
|
|
67
|
-
|
|
68
|
-
open_spec = """
|
|
69
|
-
Run `code -r "{project-root}" "{spec_file}"` — the repository root first so VS Code opens in the right context, then the spec file. Always double-quote both paths to handle spaces and special characters. If `code` is unavailable or the command fails, skip gracefully and tell the user the spec file path instead. In the completion summary, note that the spec was sent to VS Code and that it contains a Suggested Review Order, then add this navigation tip: "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
|
|
70
|
-
"""
|
|
61
|
+
open_spec = ""
|
|
71
62
|
|
|
72
63
|
# Handoff for the implementation subagent in step 03. The whole execution
|
|
73
64
|
# recipe — a subagent by default, but an override may run it any other way
|
|
@@ -138,7 +129,7 @@ Do not invoke any skill, and do not spawn subagents of your own — you are the
|
|
|
138
129
|
|
|
139
130
|
"""
|
|
140
131
|
|
|
141
|
-
# Review layers for the
|
|
132
|
+
# Review layers for the oneshot route.
|
|
142
133
|
|
|
143
134
|
[[workflow.oneshot_review_layers]]
|
|
144
135
|
id = "blind-hunter"
|
|
@@ -3,7 +3,7 @@ title: '{title}'
|
|
|
3
3
|
type: 'feature' # feature | bugfix | refactor | chore
|
|
4
4
|
created: '{date}'
|
|
5
5
|
status: 'draft' # draft | ready-for-dev | in-progress | in-review | done
|
|
6
|
-
route: '' #
|
|
6
|
+
route: '' # oneshot | dispatch — set by step-02's route gate after design
|
|
7
7
|
review_loop_iteration: 0 # incremented by step-04 before each review loopback
|
|
8
8
|
context: [] # optional: `{project-root}/`-prefixed paths to project-wide standards/docs the implementation agent should load. Keep short — only what isn't already distilled into the spec body.
|
|
9
9
|
---
|
|
@@ -26,7 +26,7 @@ context: [] # optional: `{project-root}/`-prefixed paths to project-wide standar
|
|
|
26
26
|
## Boundaries & Constraints
|
|
27
27
|
|
|
28
28
|
<!-- Two tiers: Always = invariant rules. Never = out of scope + forbidden approaches. -->
|
|
29
|
-
<!-- If step-02's route gate reported all facts clean (route: '
|
|
29
|
+
<!-- If step-02's route gate reported all facts clean (route: 'oneshot'), DELETE THIS ENTIRE SECTION. -->
|
|
30
30
|
|
|
31
31
|
**Always:** INVARIANT_RULES
|
|
32
32
|
|
|
@@ -56,7 +56,7 @@ context: [] # optional: `{project-root}/`-prefixed paths to project-wide standar
|
|
|
56
56
|
## Code Map
|
|
57
57
|
|
|
58
58
|
<!-- Agent-populated during planning. Annotated paths prevent blind codebase searching. -->
|
|
59
|
-
<!-- If step-02's route gate reported all facts clean (route: '
|
|
59
|
+
<!-- If step-02's route gate reported all facts clean (route: 'oneshot'), DELETE THIS ENTIRE SECTION. -->
|
|
60
60
|
|
|
61
61
|
- `FILE` -- ROLE_OR_RELEVANCE
|
|
62
62
|
- `FILE` -- ROLE_OR_RELEVANCE
|
|
@@ -66,7 +66,7 @@ context: [] # optional: `{project-root}/`-prefixed paths to project-wide standar
|
|
|
66
66
|
<!-- Tasks: backtick-quoted file path -- action -- rationale. Prefer one task per file; group tightly-coupled changes when splitting would be artificial. -->
|
|
67
67
|
<!-- If an I/O Matrix is present, include a task to unit-test its edge cases. -->
|
|
68
68
|
<!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here. -->
|
|
69
|
-
<!-- If step-02's route gate reported all facts clean (route: '
|
|
69
|
+
<!-- If step-02's route gate reported all facts clean (route: 'oneshot'), DELETE THIS ENTIRE SECTION. -->
|
|
70
70
|
|
|
71
71
|
**Execution:**
|
|
72
72
|
- [ ] `FILE` -- ACTION -- RATIONALE
|
|
@@ -20,7 +20,7 @@ Before listing artifacts, resolve existing workflow state in this order. Skip th
|
|
|
20
20
|
Did the user pass a specific file path, spec name, or clear instruction this message?
|
|
21
21
|
- If the user explicitly supplied a spec folder and a story id, with no specific spec file path, set `spec_folder` and `story_id`. Read `{spec_folder}/stories.yaml`; if it is missing or fails to parse, HALT rather than falling back to `{{.implementation_artifacts}}`. Find the one entry whose string `id` exactly equals `story_id`; if none exists, HALT rather than falling back. Use that entry's `title` and `description` as the starting intent.
|
|
22
22
|
- Look for files matching `{spec_folder}/stories/{story_id}-*.md`. More than one match → HALT rather than choosing one. Exactly one match → set `spec_file` to that path and process it exactly as if the user had supplied that specific file path, including **Story-key resolution** and the existing status route below. No matches → derive a valid kebab-case slug from the entry's `title` (and `description` if needed), then set `spec_file` = `{spec_folder}/stories/{story_id}-{slug}.md` and proceed to INSTRUCTIONS.
|
|
23
|
-
- If it points to a file that matches the spec template (has `status` frontmatter with a recognized value: draft, ready-for-dev, in-progress, in-review, or done) → set `spec_file`. Before exiting, run **Story-key resolution** (below). Then **EARLY EXIT** to the appropriate step: `draft` → `[[bmad-snapshot:step-02-plan.md]]`, `ready-for-dev`/`in-progress` → `[[bmad-snapshot:step-03-implement.md]]
|
|
23
|
+
- If it points to a file that matches the spec template (has `status` frontmatter with a recognized value: draft, ready-for-dev, in-progress, in-review, or done) → set `spec_file`. Before exiting, run **Story-key resolution** (below). Then **EARLY EXIT** to the appropriate step: `draft` → `[[bmad-snapshot:step-02-plan.md]]`, `ready-for-dev`/`in-progress` → `[[bmad-snapshot:step-03-implement.md]]` (or `[[bmad-snapshot:step-oneshot.md]]` when `route` is `oneshot`), `in-review` → `[[bmad-snapshot:step-04-review.md]]`. For `done`, ingest as context and proceed to INSTRUCTIONS — do not resume.
|
|
24
24
|
- Anything else (intent files, external docs, plans, descriptions) → ingest it as starting intent and proceed to INSTRUCTIONS. Do not attempt to infer a workflow state from it.
|
|
25
25
|
|
|
26
26
|
2. Recent conversation
|
|
@@ -32,7 +32,7 @@ Before listing artifacts, resolve existing workflow state in this order. Skip th
|
|
|
32
32
|
- Resume one of the listed specs
|
|
33
33
|
- **New** — start new work
|
|
34
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]]`
|
|
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]]` (or `[[bmad-snapshot:step-oneshot.md]]` when `route` is `oneshot`)
|
|
36
36
|
If `in-review` selected: Set `spec_file`. Run **Story-key resolution** (below). **EARLY EXIT** → `[[bmad-snapshot:step-04-review.md]]`
|
|
37
37
|
If the user chooses **New**: proceed to INSTRUCTIONS
|
|
38
38
|
- 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.
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
- **Irreversibles** — things you cannot undo: migrations, data deletion or mutation, external side effects, deploy or config triggers.
|
|
18
18
|
- **Footprint** — how big: files you will change, and anything new that other code will call or depend on.
|
|
19
19
|
|
|
20
|
-
If there are no intent gaps, nothing irreversible, and the change is small: read `[[bmad-snapshot:spec-template.md]]` fully and write `{spec_file}` with only the frontmatter, `## Intent` (inside its `<frozen-after-approval>` block), and `## Implementation Notes`. Delete every other section; the template says you may. Set `route: '
|
|
20
|
+
If there are no intent gaps, nothing irreversible, and the change is small: read `[[bmad-snapshot:spec-template.md]]` fully and write `{spec_file}` with only the frontmatter, `## Intent` (inside its `<frozen-after-approval>` block), and `## Implementation Notes`. Delete every other section; the template says you may. Set `route: 'oneshot'` and `status: 'in-progress'`, resolving `date` to the current system date. If `preserved_intent` is non-empty, use it as the frozen block. **EARLY EXIT** → `[[bmad-snapshot:step-oneshot.md]]`.
|
|
21
21
|
|
|
22
22
|
Otherwise write the full spec. Set `route: 'dispatch'` and continue.
|
|
23
23
|
4. Read `[[bmad-snapshot:spec-template.md]]` fully. Fill it out from the intent and investigation, resolving the template's `date` field to the current system date. Put the investigation into `## Code Map`: paths, symbols or lines, what to reuse, and what not to change. Implementation should work from the spec without being told the investigation again. For each intent gap, add one `## Open Questions` entry: the choice, the options, and what each option means. Never write an intent gap into the frozen block as an assumption. If `preserved_intent` is non-empty, replace the `<frozen-after-approval>` block with it before writing. Write the result to `{spec_file}`.
|
|
@@ -24,7 +24,7 @@ Capture `baseline_commit` (current HEAD, or `NO_VCS` if version control is unava
|
|
|
24
24
|
|
|
25
25
|
Change `{spec_file}` status to `in-progress` in the frontmatter before starting implementation.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
If `{story_key}` is not empty and `{{.implementation_artifacts}}/sprint-status.yaml` exists, read `[[bmad-snapshot:sync-sprint-status.md]]` with `{target_status}` = `in-progress`.
|
|
28
28
|
|
|
29
29
|
Execute the implementation handoff below: substitute the runtime placeholders (e.g. `{spec_file}`) into it, then follow it verbatim.
|
|
30
30
|
|
|
@@ -10,49 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
## INSTRUCTIONS
|
|
12
12
|
|
|
13
|
-
### Generate Suggested Review Order
|
|
14
|
-
|
|
15
|
-
Read `{baseline_commit}` from `{spec_file}` frontmatter and construct the diff of all changes since that commit.
|
|
16
|
-
|
|
17
|
-
Append the review order as a `## Suggested Review Order` section to `{spec_file}` **after the last existing section**. Do not modify the Code Map.
|
|
18
|
-
|
|
19
|
-
Build the trail as an ordered sequence of **stops** — clickable `path:line` references with brief framing — optimized for a human reviewer reading top-down to understand the change:
|
|
20
|
-
|
|
21
|
-
1. **Order by concern, not by file.** Group stops by the conceptual concern they address (e.g., "validation logic", "schema change", "UI binding"). A single file may appear under multiple concerns.
|
|
22
|
-
2. **Lead with the entry point** — the single highest-leverage file:line a reviewer should look at first to grasp the design intent.
|
|
23
|
-
3. **Inside each concern**, order stops from most important / architecturally interesting to supporting. Lightly bias toward higher-risk or boundary-crossing stops.
|
|
24
|
-
4. **End with peripherals** — tests, config, types, and other supporting changes come last.
|
|
25
|
-
5. **Every code reference is a clickable spec-file-relative link.** Compute each link target as a relative path from `{spec_file}`'s directory to the changed file. Format each stop as a markdown link: `[short-name:line](../../path/to/file.ts#L42)`. Use a `#L` line anchor. Use the file's basename (or shortest unambiguous suffix) plus line number as the link text. The relative path must be dynamically derived — never hardcode the depth.
|
|
26
|
-
6. **Each stop gets one ultra-concise line of framing** (≤15 words) — why this approach was chosen here and what it achieves in the context of the change. No paragraphs.
|
|
27
|
-
|
|
28
|
-
Format each stop as framing first, link on the next indented line:
|
|
29
|
-
|
|
30
|
-
```markdown
|
|
31
|
-
## Suggested Review Order
|
|
32
|
-
|
|
33
|
-
**{Concern name}**
|
|
34
|
-
|
|
35
|
-
- {one-line framing}
|
|
36
|
-
[`file.ts:42`](../../src/path/to/file.ts#L42)
|
|
37
|
-
|
|
38
|
-
- {one-line framing}
|
|
39
|
-
[`other.ts:17`](../../src/path/to/other.ts#L17)
|
|
40
|
-
|
|
41
|
-
**{Next concern}**
|
|
42
|
-
|
|
43
|
-
- {one-line framing}
|
|
44
|
-
[`file.ts:88`](../../src/path/to/file.ts#L88)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
> The `../../` prefix above is illustrative — compute the actual relative path from `{spec_file}`'s directory to each target file.
|
|
48
|
-
|
|
49
|
-
When there is only one concern, omit the bold label — just list the stops directly.
|
|
50
|
-
|
|
51
13
|
### Mark Spec Done
|
|
52
14
|
|
|
53
15
|
Change `{spec_file}` status to `done` in the frontmatter.
|
|
54
16
|
|
|
55
|
-
|
|
17
|
+
If `{story_key}` is not empty and `{{.implementation_artifacts}}/sprint-status.yaml` exists, read `[[bmad-snapshot:sync-sprint-status.md]]` with `{target_status}` = `review`.
|
|
56
18
|
|
|
57
19
|
### Commit and Complete
|
|
58
20
|
|
|
@@ -62,14 +24,15 @@ If version control is available and the tree is dirty, create a local commit wit
|
|
|
62
24
|
|
|
63
25
|
### Display Summary
|
|
64
26
|
|
|
65
|
-
Display summary
|
|
27
|
+
Display a very short completion summary — one or two sentences — including:
|
|
66
28
|
|
|
29
|
+
- What changed.
|
|
30
|
+
- The verification and review result, including whether anything was deferred.
|
|
67
31
|
- The commit hash, if one was created.
|
|
68
|
-
- Review findings breakdown: patches applied, items deferred, and the rejected count — reasons are recorded in the spec's `## Review Triage Log`.
|
|
69
32
|
|
|
70
|
-
|
|
33
|
+
Do not list changed files, repeat details from the spec, or narrate the process unless the user asks.
|
|
71
34
|
|
|
72
|
-
Offer
|
|
35
|
+
Offer applicable next actions in one short line: when version control and a remote are available, create a pull request (and push first if needed); use `bmad-walkthrough`; or make another change.
|
|
73
36
|
|
|
74
37
|
Workflow complete.
|
|
75
38
|
|
|
@@ -1,95 +1,107 @@
|
|
|
1
1
|
# Step One-Shot: Implement, Review, Present
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
You reach this step from step 2, or from step 1 when resuming a spec whose `route` is `oneshot`. `{spec_file}` already exists.
|
|
4
4
|
|
|
5
5
|
## RULES
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
7
|
+
- Speak in `{{.communication_language}}`. Write files in `{{.document_output_language}}`.
|
|
8
|
+
- Do not push to a remote unless the user asks.
|
|
9
|
+
- Do not edit anything inside `<frozen-after-approval>` in `{spec_file}`.
|
|
10
|
+
- Review subagents must use the same model level as this session.
|
|
11
|
+
- Start all review subagents in this turn and wait for all of them to finish. Do not run them in the background or end your turn before they return.
|
|
12
12
|
|
|
13
13
|
## INSTRUCTIONS
|
|
14
14
|
|
|
15
15
|
### Implement
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
If `{story_key}` is not empty and `{{.implementation_artifacts}}/sprint-status.yaml` exists, read `[[bmad-snapshot:sync-sprint-status.md]]` with `{target_status}` = `in-progress`.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Build the change from `{spec_file}`. The Intent section is what you implement. As you work, add notes to `## Implementation Notes`: decisions you made, files you changed, surprises.
|
|
20
20
|
|
|
21
|
-
**
|
|
21
|
+
**When to stop and replan.** Stop coding if you learn something step 2 did not account for:
|
|
22
|
+
|
|
23
|
+
- the request left out something the user would notice in the result
|
|
24
|
+
- you need to do something you cannot undo
|
|
25
|
+
- the change is growing beyond what was planned
|
|
26
|
+
|
|
27
|
+
Write what triggered the stop in `## Implementation Notes`. Then update `{spec_file}`: add back `## Code Map` (filled in from what you learned while implementing) and `## Open Questions` (one question per gap), set `route: 'dispatch'` and `status: 'draft'`. Go back to `[[bmad-snapshot:step-02-plan.md]]` step 6.
|
|
22
28
|
|
|
23
29
|
### Review
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
Say which review layers you are skipping, then start every active layer before reading any results. Run them at the same time when you can. Fill in runtime placeholders first. When a layer tells you to launch a reviewer subagent, launch it with that prompt text. Do not read the reviewer's instruction file yourself. For any other customized instruction, do what it says:
|
|
26
32
|
|
|
27
33
|
{workflow.oneshot_review_layers}
|
|
28
34
|
|
|
29
|
-
If a layer
|
|
35
|
+
If a layer needs subagents and you cannot launch them, write the full prompt for each layer under `{{.implementation_artifacts}}` (with placeholders filled in, not just file paths). Stop and ask the user to run each prompt in a separate session and paste back the findings.
|
|
30
36
|
|
|
31
37
|
### Classify
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
Wait until every review layer has reported. Then judge each finding. Ignore severity labels from reviewers — you decide.
|
|
34
40
|
|
|
35
41
|
For each finding:
|
|
36
42
|
|
|
37
|
-
- **
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
42
|
-
-
|
|
43
|
+
- **Check the claim.** Go to the cited file and line. Does the problem the reviewer describes actually happen? Read surrounding code and callers until you can say yes or no. A nearby issue does not answer this one. Judge whether the bug is real, not whether the suggested fix sounds good. Code that fails loudly on a state you have not shown the program can reach is correct, not a bug.
|
|
44
|
+
|
|
45
|
+
- **Pick one verdict:**
|
|
46
|
+
- `high` (intolerable), `medium` (tolerable), or `low` (cosmetic or negligible) — the problem is real. Rate it by harm to users or developers. For developer-only issues, say where it will hurt. Vague complaints like "this is messy" are not `high`/`medium`/`low` — use `false` or `maybe-false`. When unsure how bad, pick the higher grade.
|
|
47
|
+
- `false` — you checked and the problem does not happen. Say what you found that disproves it.
|
|
48
|
+
- `maybe-false` — you could not tell. Say what you would need to check. Use this only when the code and diff are not enough to decide.
|
|
49
|
+
|
|
50
|
+
- Write down every finding with its verdict and evidence. Do not drop any.
|
|
43
51
|
|
|
44
|
-
Reject `false` findings
|
|
52
|
+
Reject `false` findings.
|
|
45
53
|
|
|
46
|
-
Reject `low` findings when
|
|
54
|
+
Reject `low` findings when users or developers would rarely hit the problem in normal use and the fix would add more than a simple correction or deletion.
|
|
47
55
|
|
|
48
|
-
|
|
56
|
+
Group what remains by root cause — two findings go together only if the same bug caused both. Same file or same fix is not enough. For each group, keep the worst verdict (`high` > `medium` > `low` > `maybe-false`). If a group has verified `high`, `medium`, or `low` members, route by the worst of those — not `defer` just because one member is `maybe-false`.
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
For each group:
|
|
59
|
+
|
|
60
|
+
- **patch** — This change caused or exposed the problem. The smallest fix is simple, adds no new public API, and does not guard code paths you did not show are reachable. Fix it now.
|
|
61
|
+
- **HALT** — Same as patch, but the smallest fix is not that simple. Stop and ask the user before continuing.
|
|
62
|
+
- **defer** — Everything else: old bugs not caused by this change, ideas for later, groups where every member is `maybe-false` and would be `medium` or `high` if true (record that severity marked unverified, and what would prove it; if it would only be `low`, reject it), or fixes that would edit CLAUDE.md, AGENTS.md, rules, or specs. Add one entry to `{{.implementation_artifacts}}/deferred-work.md`:
|
|
51
63
|
|
|
52
|
-
- **patch** — Patch every entry caused or exposed by this change that shows a defect that actually occurs, missing coverage for a specific case, or a broken gate or convention — not a state nothing reaches — and whose smallest fix is trivial, adds no public surface, and guards no state the finding did not demonstrate. Apply that smallest fix immediately.
|
|
53
|
-
- **HALT** — HALT on every entry caused or exposed by this change that shows the same evidence but whose smallest fix fails any of those conditions. Present it to the human for decision before proceeding.
|
|
54
|
-
- **defer** — Defer every other entry: pre-existing issues, improvement ideas, entries whose members are all `maybe-false` where the claim, if true, would be `medium` or `high` (record that severity marked unverified, plus what would settle it; if it would only be `low`, reject it with the same note), and any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, specs). Append one new entry to `{{.implementation_artifacts}}/deferred-work.md` using this format. Do not modify existing entries or look for duplicates.
|
|
55
64
|
```markdown
|
|
56
65
|
- source_spec: `{spec_file}`
|
|
57
66
|
summary: <one sentence>
|
|
58
|
-
evidence: <why this is real; for
|
|
67
|
+
evidence: <why this is real; for maybe-false, what would prove it>
|
|
59
68
|
```
|
|
60
69
|
|
|
70
|
+
Do not edit old entries or check for duplicates.
|
|
71
|
+
|
|
61
72
|
### Finalize Spec
|
|
62
73
|
|
|
63
74
|
Update `{spec_file}`:
|
|
64
75
|
|
|
65
|
-
1.
|
|
66
|
-
2.
|
|
67
|
-
3. **Review Triage Log** — only when the review produced findings: add the section with one line per finding with its verdict and evidence — the refutation for `false`, what would settle it for `maybe-false`, why a rejected `low` was not worth fixing.
|
|
76
|
+
1. Set `status: 'done'` in the frontmatter.
|
|
77
|
+
2. If review found anything, add `## Review Triage Log` with one line per finding: verdict and evidence. For `false`, the disproof. For `maybe-false`, what would settle it. For rejected `low`, why it was not worth fixing.
|
|
68
78
|
|
|
69
|
-
|
|
79
|
+
If `{story_key}` is not empty and `{{.implementation_artifacts}}/sprint-status.yaml` exists, read `[[bmad-snapshot:sync-sprint-status.md]]` with `{target_status}` = `review`.
|
|
70
80
|
|
|
71
81
|
### Commit
|
|
72
82
|
|
|
73
|
-
If
|
|
83
|
+
If git is available and there are uncommitted changes, commit with a conventional message based on the Intent. If git is not available, skip.
|
|
74
84
|
|
|
75
85
|
### Present
|
|
76
86
|
|
|
77
87
|
{workflow.open_spec}
|
|
78
88
|
|
|
79
|
-
|
|
89
|
+
Give the user a short summary — one or two sentences:
|
|
90
|
+
|
|
91
|
+
- What changed.
|
|
92
|
+
- Review result, including anything deferred.
|
|
93
|
+
- Commit hash, if you made one.
|
|
80
94
|
|
|
81
|
-
|
|
82
|
-
- List of files changed with one-line descriptions. Display file paths and `file:line` references in whatever form is clickable where you are presenting them (e.g. code citation in chat, CWD-relative path with no leading `/` in terminal). If unsure, use CWD-relative path. This differs from spec-file links which use spec-file-relative paths.
|
|
83
|
-
- Review findings breakdown: patches applied, items deferred, and the rejected count — reasons are recorded in the spec. If every finding was rejected, say so.
|
|
95
|
+
Do not list files, repeat the spec, or walk through what you did unless asked.
|
|
84
96
|
|
|
85
|
-
Offer
|
|
97
|
+
Offer next steps in one line: create a PR (push first if needed) when git and a remote exist; use `bmad-walkthrough`; or make another change.
|
|
86
98
|
|
|
87
|
-
|
|
99
|
+
Stop and wait for the user.
|
|
88
100
|
|
|
89
101
|
Workflow complete.
|
|
90
102
|
|
|
91
103
|
## On Complete
|
|
92
104
|
|
|
93
|
-
If anything appears below,
|
|
105
|
+
If anything appears below, do it before exiting. Otherwise exit.
|
|
94
106
|
|
|
95
107
|
{workflow.on_complete}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Skip this entire file (return to caller) if ANY of:
|
|
8
|
-
- `story_key` is unset
|
|
9
|
-
- `{{.implementation_artifacts}}/sprint-status.yaml` does not exist on disk
|
|
10
|
-
|
|
11
|
-
## Instructions
|
|
12
|
-
|
|
13
|
-
1. Load the FULL `{{.implementation_artifacts}}/sprint-status.yaml` file.
|
|
14
|
-
2. Find the `development_status` entry matching `{story_key}`. If not found, warn the user once (`"{story_key} not found in sprint-status; skipping sprint sync"`) and return to caller.
|
|
15
|
-
3. **Idempotency check.** If `development_status[{story_key}]` is already at `target_status` or a later state (`review` is later than `in-progress`; `done` is later than both), return to caller — no write needed. Never regress a story's status.
|
|
16
|
-
4. Set `development_status[{story_key}]` to `{target_status}`.
|
|
17
|
-
5. **Epic lift (only when `target_status` = `in-progress`).** Derive the parent epic key as `epic-{N}` from the leading numeric segment of `{story_key}` (e.g., `3-2-digest-delivery` → `epic-3`). If that entry exists and is `backlog`, set it to `in-progress`. Leave it alone otherwise. Skip this sub-step entirely when `target_status` is not `in-progress`.
|
|
18
|
-
6. Refresh `last_updated` to the current date.
|
|
19
|
-
7. Save the file, preserving ALL comments and structure including STATUS DEFINITIONS and WORKFLOW NOTES.
|
|
1
|
+
Set `development_status[{story_key}]` to `{target_status}` in `{{.implementation_artifacts}}/sprint-status.yaml`.
|
|
2
|
+
If `{story_key}` is missing, warn once and stop.
|
|
3
|
+
If the story is already at `{target_status}` or later, stop.
|
|
4
|
+
When `{target_status}` is `in-progress`, set parent epic (e.g. `3-2-foo` → `epic-3`) from `backlog` to `in-progress` if present.
|
|
5
|
+
Update `last_updated`. Preserve comments and structure.
|
package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|