bmad-method 6.10.1-next.4 → 6.10.1-next.5
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/4-implementation/bmad-dev-auto/SKILL.md +1 -0
- package/src/bmm-skills/4-implementation/bmad-dev-auto/customize.toml +17 -0
- package/src/bmm-skills/4-implementation/bmad-dev-auto/spec-template.md +1 -1
- package/src/bmm-skills/4-implementation/bmad-dev-auto/step-02-plan.md +1 -1
- package/src/bmm-skills/4-implementation/bmad-dev-auto/step-03-implement.md +3 -3
- package/src/bmm-skills/4-implementation/bmad-dev-auto/step-04-review.md +3 -0
package/package.json
CHANGED
|
@@ -42,6 +42,7 @@ A specification is "Ready for Development" when:
|
|
|
42
42
|
- **Actionable**: Every task has a file path and specific action.
|
|
43
43
|
- **Logical**: Tasks ordered by dependency.
|
|
44
44
|
- **Testable**: All ACs use Given/When/Then.
|
|
45
|
+
- **Surface-anchored**: ACs observe the outermost surface the intent references — never a more internal proxy for it (e.g. the API response, not the database row behind it).
|
|
45
46
|
- **Complete**: No placeholders or TBDs.
|
|
46
47
|
- **Sufficient**: No known requirement, acceptance, dependency, or implementation gaps remain unresolved.
|
|
47
48
|
- **Coherent**: No unresolved ambiguities or internal contradictions.
|
|
@@ -70,3 +70,20 @@ Launch a subagent with no prior conversation context, with this prompt:
|
|
|
70
70
|
>
|
|
71
71
|
> {diff_output}
|
|
72
72
|
"""
|
|
73
|
+
|
|
74
|
+
[[workflow.review_layers]]
|
|
75
|
+
id = "intent-alignment"
|
|
76
|
+
name = "Intent Alignment Auditor"
|
|
77
|
+
instruction = """
|
|
78
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
79
|
+
|
|
80
|
+
> You are an intent-alignment auditor. You have no other context about how this change was produced. Here is the verbatim intent this work started from:
|
|
81
|
+
>
|
|
82
|
+
> {verbatim_intent}
|
|
83
|
+
>
|
|
84
|
+
> Here is the diff:
|
|
85
|
+
>
|
|
86
|
+
> {diff_output}
|
|
87
|
+
>
|
|
88
|
+
> Your task is strictly descriptive — do not prescribe additional work. Report: (1) the defensible readings of the intent, enumerated; (2) which reading this diff implements; (3) where the readings and the diff diverge — specifically, which surface the intent's expectations live at versus which surface the diff's changes and its tests exercise.
|
|
89
|
+
"""
|
|
@@ -60,7 +60,7 @@ warnings: [] # optional: machine-readable warnings for orchestration, e.g. overs
|
|
|
60
60
|
<!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here. -->
|
|
61
61
|
|
|
62
62
|
**Execution:**
|
|
63
|
-
-
|
|
63
|
+
- `FILE` -- ACTION -- RATIONALE
|
|
64
64
|
|
|
65
65
|
**Acceptance Criteria:**
|
|
66
66
|
- Given PRECONDITION, when ACTION, then EXPECTED_RESULT
|
|
@@ -15,7 +15,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
|
15
15
|
2. Investigate codebase. _Read the code yourself for narrow, localized tasks. Isolate deep exploration in subagents: instruct them to give you distilled summaries only, and plan from those summaries._
|
|
16
16
|
3. Read `./spec-template.md` fully. Fill it out based on the intent and investigation. If `{preserved_intent_contract}` is non-empty, substitute it for the `<intent-contract>` block in your filled spec before writing. Write the result to `{spec_file}`.
|
|
17
17
|
4. Self-review against READY FOR DEVELOPMENT standard.
|
|
18
|
-
5. If intent gaps exist, do not fantasize and do not leave open questions. HALT with status `blocked`, blocking condition `intent gaps`, and include the unanswered questions and evidence gathered.
|
|
18
|
+
5. If intent gaps exist, do not fantasize and do not leave open questions. Multiple defensible readings of the intent that lead to observably different outcomes, with nothing in the intent to select between them, are an intent gap — do not resolve one by picking a reading. HALT with status `blocked`, blocking condition `intent gaps`, and include the unanswered questions and evidence gathered.
|
|
19
19
|
6. Warning check. If step-01 carried `multiple-goals`, add it to `{spec_file}` frontmatter `warnings`. If `{spec_file}` exceeds 1600 tokens, add `oversized` to frontmatter `warnings`. Continue either way.
|
|
20
20
|
|
|
21
21
|
### READY-FOR-DEVELOPMENT GATE
|
|
@@ -25,13 +25,13 @@ Change `{spec_file}` status to `in-progress` in the frontmatter before starting
|
|
|
25
25
|
|
|
26
26
|
If `{spec_file}` has a non-empty `context:` list in its frontmatter, load those files before implementation begins. When handing to a subagent, include them in the subagent prompt so it has access to the referenced context.
|
|
27
27
|
|
|
28
|
-
Hand `{spec_file}` to an implementation subagent. Invoke it **synchronously** and wait for it to return in this same turn — do not background/detach it (`run_in_background`) or end your turn to await a notification (see SKILL.md → Subagents). Resume at "
|
|
28
|
+
Hand `{spec_file}` to an implementation subagent. Invoke it **synchronously** and wait for it to return in this same turn — do not background/detach it (`run_in_background`) or end your turn to await a notification (see SKILL.md → Subagents). Resume at "Verify" only after it returns.
|
|
29
29
|
|
|
30
30
|
**Path formatting rule:** Any markdown links written into `{spec_file}` must use paths relative to `{spec_file}`'s directory so they are clickable in VS Code. Any file paths displayed in terminal/conversation output must use CWD-relative format with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability. No leading `/` in either case.
|
|
31
31
|
|
|
32
|
-
###
|
|
32
|
+
### Verify
|
|
33
33
|
|
|
34
|
-
After the implementation subagent returns
|
|
34
|
+
After the implementation subagent returns: if it reported unfinished work, finish it before proceeding. Run the commands in `{spec_file}`'s `## Verification` section (or perform its manual checks). If verification fails and the failure cannot be fixed, HALT with status `blocked`, blocking condition `implementation verification failed`, and include the failing command or check and reason. Acceptance criteria are judged at review, not here.
|
|
35
35
|
|
|
36
36
|
### Matrix Test Audit
|
|
37
37
|
|
|
@@ -26,6 +26,8 @@ The review layers are `{workflow.review_layers}`, resolved during activation.
|
|
|
26
26
|
|
|
27
27
|
Skip every layer whose `instruction` is empty or missing — that is how an override disables a default layer — and every layer whose `when` condition (if present) does not hold in the current context. If no layers remain, HALT with status `blocked` and blocking condition `no active review layers`.
|
|
28
28
|
|
|
29
|
+
Runtime placeholders: `{diff_output}` is the diff constructed above. `{verbatim_intent}` is the invocation intent exactly as this run received it at step-01; if the run started from an existing spec file rather than a fresh intent, it is the spec's `<intent-contract>` block instead.
|
|
30
|
+
|
|
29
31
|
Execute all remaining layers in parallel wherever their execution methods allow: substitute the runtime placeholders (e.g. `{diff_output}`) into each layer's `instruction`, then follow it verbatim.
|
|
30
32
|
|
|
31
33
|
### Classify
|
|
@@ -37,6 +39,7 @@ Execute all remaining layers in parallel wherever their execution methods allow:
|
|
|
37
39
|
- `medium`: tolerable
|
|
38
40
|
- `high`: intolerable
|
|
39
41
|
3. Route each finding into exactly one triage category. The first three categories are **this story's problem** — caused or exposed by the current change. The last two are **not this story's problem**.
|
|
42
|
+
Scope authority: a finding may be routed to defer or reject *as out of scope* only on the authority of the intent itself. The spec's scope language, the plan, and the diff's own shape are not admissible scope authorities — if only they exclude a finding, treat it as evidence against the chosen reading (intent_gap or bad_spec), not as out of scope.
|
|
40
43
|
- **intent_gap** — caused by the change; cannot be resolved from the spec because the captured intent is incomplete. Do not infer intent unless there is exactly one possible reading.
|
|
41
44
|
- **bad_spec** — caused by the change, including direct deviations from spec. The spec should have been clear enough to prevent it. When in doubt between bad_spec and patch, prefer bad_spec — a spec-level fix is more likely to produce coherent code.
|
|
42
45
|
- **patch** — caused by the change; trivially fixable without human input. Just part of the diff.
|