bmad-method 6.10.1-next.3 → 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-code-review/SKILL.md +2 -4
- package/src/bmm-skills/4-implementation/bmad-code-review/customize.toml +52 -0
- package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-01-gather-context.md +0 -1
- package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-02-review.md +10 -24
- package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-03-triage.md +3 -4
- package/src/bmm-skills/4-implementation/bmad-dev-auto/SKILL.md +1 -0
- package/src/bmm-skills/4-implementation/bmad-dev-auto/customize.toml +56 -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 -2
- 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 +8 -14
- package/src/bmm-skills/4-implementation/bmad-quick-dev/customize.toml +50 -0
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-01-clarify-and-route.md +0 -1
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-02-plan.md +0 -1
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-04-review.md +8 -14
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-oneshot.md +5 -2
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-code-review
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Adversarial code review using parallel review layers and structured triage. Use when the user says "run code review" or "review this code"'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Code Review Workflow
|
|
7
7
|
|
|
8
|
-
**Goal:** Review code changes adversarially
|
|
9
|
-
|
|
10
|
-
**Your Role:** You are an elite code reviewer. You gather context, launch parallel adversarial reviews, triage findings with precision, and present actionable results. No noise, no filler.
|
|
8
|
+
**Goal:** Review code changes adversarially. No noise, no filler.
|
|
11
9
|
|
|
12
10
|
Subagents, when the capability is available, are an important part of this workflow. Use them as directed by the workflow steps.
|
|
13
11
|
If you need an explicit user instruction to run them, ask once now for the whole workflow run.
|
|
@@ -39,3 +39,55 @@ persistent_facts = [
|
|
|
39
39
|
# Leave empty for no custom post-completion behavior.
|
|
40
40
|
|
|
41
41
|
on_complete = ""
|
|
42
|
+
|
|
43
|
+
# Review layers for the review step. `instruction` is the layer's whole
|
|
44
|
+
# execution recipe — subagents by default, but an override may run anything
|
|
45
|
+
# (e.g. an external reviewer via bash). {diff_output} and {spec_file} are
|
|
46
|
+
# substituted at run time. `when` (optional) gates a layer; empty
|
|
47
|
+
# `instruction` disables it.
|
|
48
|
+
|
|
49
|
+
[[workflow.review_layers]]
|
|
50
|
+
id = "blind-hunter"
|
|
51
|
+
name = "Blind Hunter"
|
|
52
|
+
instruction = """
|
|
53
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
54
|
+
|
|
55
|
+
> Invoke the `bmad-review-adversarial-general` skill on this diff:
|
|
56
|
+
>
|
|
57
|
+
> {diff_output}
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
[[workflow.review_layers]]
|
|
61
|
+
id = "edge-case-hunter"
|
|
62
|
+
name = "Edge Case Hunter"
|
|
63
|
+
instruction = """
|
|
64
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
65
|
+
|
|
66
|
+
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
67
|
+
>
|
|
68
|
+
> {diff_output}
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
[[workflow.review_layers]]
|
|
72
|
+
id = "verification-gap"
|
|
73
|
+
name = "Verification Gap Reviewer"
|
|
74
|
+
instruction = """
|
|
75
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
76
|
+
|
|
77
|
+
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
78
|
+
>
|
|
79
|
+
> {diff_output}
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
[[workflow.review_layers]]
|
|
83
|
+
id = "acceptance-auditor"
|
|
84
|
+
name = "Acceptance Auditor"
|
|
85
|
+
when = 'Only when {review_mode} = "full".'
|
|
86
|
+
instruction = """
|
|
87
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
88
|
+
|
|
89
|
+
> You are an Acceptance Auditor. Review the provided diff against `{spec_file}` and any loaded context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a Markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff.
|
|
90
|
+
>
|
|
91
|
+
> Diff:
|
|
92
|
+
> {diff_output}
|
|
93
|
+
"""
|
|
@@ -79,7 +79,6 @@ story_key: '' # set at runtime when discovered from sprint status
|
|
|
79
79
|
|
|
80
80
|
Present a summary before proceeding: diff stats (files changed, lines added/removed), `{review_mode}`, and loaded spec/context docs (if any). HALT and wait for user confirmation to proceed.
|
|
81
81
|
|
|
82
|
-
|
|
83
82
|
## NEXT
|
|
84
83
|
|
|
85
84
|
Read fully and follow `./step-02-review.md`
|
|
@@ -8,38 +8,24 @@ failed_layers: '' # set at runtime: comma-separated list of layers that failed o
|
|
|
8
8
|
|
|
9
9
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
|
10
10
|
- All review subagents must run at the same model capability as the current session.
|
|
11
|
+
- Run subagents synchronously: launch them together, then wait for all results before continuing.
|
|
11
12
|
|
|
12
13
|
## INSTRUCTIONS
|
|
13
14
|
|
|
14
|
-
1.
|
|
15
|
+
1. The review layers are `{workflow.review_layers}`, resolved during activation.
|
|
15
16
|
|
|
16
|
-
2.
|
|
17
|
+
2. For each layer in `{workflow.review_layers}`:
|
|
18
|
+
- `instruction` empty or missing → drop the layer silently (an override disabled it).
|
|
19
|
+
- `when` condition present and not satisfied by the current context (`{review_mode}`, `{spec_file}`) → drop the layer and tell the user, e.g. "Acceptance Auditor skipped — no spec file provided."
|
|
20
|
+
- otherwise → the layer is active.
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
> Invoke the `bmad-review-adversarial-general` skill on this diff:
|
|
20
|
-
>
|
|
21
|
-
> {diff_output}
|
|
22
|
+
If no layer is active, HALT with status `blocked` and blocking condition `no active review layers`.
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
25
|
-
>
|
|
26
|
-
> {diff_output}
|
|
24
|
+
3. Execute all active layers in parallel wherever their execution methods allow: substitute the runtime placeholders (`{diff_output}`, `{spec_file}`) into each layer's `instruction`, then follow it verbatim. If a layer's instruction requires subagents and subagents are not available, generate prompt files in `{implementation_artifacts}` for each such layer and HALT. Ask the user to run each in a separate session (ideally a different LLM) and paste back the findings. When findings are pasted, treat them as those layers' findings and resume from this point.
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
30
|
-
>
|
|
31
|
-
> {diff_output}
|
|
32
|
-
|
|
33
|
-
- **Acceptance Auditor** (only if `{review_mode}` = `"full"`) — prompt:
|
|
34
|
-
> You are an Acceptance Auditor. Review the provided diff against `{spec_file}` and any loaded context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a Markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff.
|
|
35
|
-
>
|
|
36
|
-
> Diff:
|
|
37
|
-
> {diff_output}
|
|
38
|
-
|
|
39
|
-
3. **Subagent failure handling**: If any subagent fails, times out, or returns empty results, append the layer name to `{failed_layers}` (comma-separated) and proceed with findings from the remaining layers.
|
|
40
|
-
|
|
41
|
-
4. Collect all findings from the completed layers.
|
|
26
|
+
4. **Layer failure handling**: If any layer fails, times out, or returns empty results, append the layer's `name` to `{failed_layers}` (comma-separated) and proceed with findings from the remaining layers.
|
|
42
27
|
|
|
28
|
+
5. Collect all findings from the completed layers, keeping track of each finding's originating layer `id`.
|
|
43
29
|
|
|
44
30
|
## NEXT
|
|
45
31
|
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
|
|
12
12
|
1. **Normalize** findings from all layers into a unified list where each finding has:
|
|
13
13
|
- `id` -- sequential integer
|
|
14
|
-
- `source` --
|
|
14
|
+
- `source` -- the `id` of the layer that produced the finding (e.g., `blind-hunter`), or merged sources joined with `+` (e.g., `blind-hunter+edge-case-hunter`)
|
|
15
15
|
- `title` -- one-line summary
|
|
16
16
|
- `detail` -- full description
|
|
17
17
|
- `location` -- file and line reference (if available)
|
|
18
18
|
|
|
19
19
|
2. **Deduplicate.** Deduplicate only findings with the same claim and same required action. If two or more findings meet both conditions, merge them into one:
|
|
20
|
-
- Use the most specific finding as the base (prefer
|
|
20
|
+
- Use the most specific finding as the base (prefer findings with a precise location over prose-only findings).
|
|
21
21
|
- Append any unique detail, reasoning, or location references from the other finding(s) into the surviving `detail` field.
|
|
22
|
-
- Set `source` to the merged sources (e.g., `blind+edge`).
|
|
22
|
+
- Set `source` to the merged sources (e.g., `blind-hunter+edge-case-hunter`).
|
|
23
23
|
|
|
24
24
|
3. Then evaluate each remaining finding independently. Do not reject a finding because a related finding was rejected.
|
|
25
25
|
|
|
@@ -45,7 +45,6 @@
|
|
|
45
45
|
|
|
46
46
|
9. If zero findings remain after triage (all rejected or none raised): state "✅ Clean review — all layers passed." (Step 3 already warned if any review layers failed via `{failed_layers}`.)
|
|
47
47
|
|
|
48
|
-
|
|
49
48
|
## NEXT
|
|
50
49
|
|
|
51
50
|
Read fully and follow `./step-04-present.md`
|
|
@@ -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.
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
# - Strings replace the default.
|
|
9
9
|
# - Lists append to the default list.
|
|
10
10
|
# - Tables merge key by key.
|
|
11
|
+
# - Arrays of tables merge by `id`: matching `id` replaces, new `id`s append.
|
|
11
12
|
|
|
12
13
|
[workflow]
|
|
13
14
|
|
|
@@ -31,3 +32,58 @@ persistent_facts = [
|
|
|
31
32
|
# Empty means no extra terminal behavior.
|
|
32
33
|
|
|
33
34
|
on_complete = ""
|
|
35
|
+
|
|
36
|
+
# Review layers for the review step. `instruction` is the layer's whole
|
|
37
|
+
# execution recipe — subagents by default, but an override may run anything
|
|
38
|
+
# (e.g. an external reviewer via bash). {diff_output} is substituted at run
|
|
39
|
+
# time. `when` (optional) gates a layer; empty `instruction` disables it.
|
|
40
|
+
|
|
41
|
+
[[workflow.review_layers]]
|
|
42
|
+
id = "blind-hunter"
|
|
43
|
+
name = "Blind Hunter"
|
|
44
|
+
instruction = """
|
|
45
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
46
|
+
|
|
47
|
+
> Invoke the `bmad-review-adversarial-general` skill on this diff:
|
|
48
|
+
>
|
|
49
|
+
> {diff_output}
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
[[workflow.review_layers]]
|
|
53
|
+
id = "edge-case-hunter"
|
|
54
|
+
name = "Edge Case Hunter"
|
|
55
|
+
instruction = """
|
|
56
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
57
|
+
|
|
58
|
+
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
59
|
+
>
|
|
60
|
+
> {diff_output}
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
[[workflow.review_layers]]
|
|
64
|
+
id = "verification-gap"
|
|
65
|
+
name = "Verification Gap Reviewer"
|
|
66
|
+
instruction = """
|
|
67
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
68
|
+
|
|
69
|
+
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
70
|
+
>
|
|
71
|
+
> {diff_output}
|
|
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
|
|
@@ -26,7 +26,6 @@ Re-read `./SKILL.md`, then re-read `{spec_file}` from disk and verify the spec m
|
|
|
26
26
|
- **If the spec meets the standard:** set `{spec_file}` frontmatter status to `ready-for-dev`, then continue to step 3.
|
|
27
27
|
- **If the spec does not meet the standard:** repair it once, then re-read it from disk and verify again. If it still does not meet the standard, HALT with status `blocked`, blocking condition `spec failed ready-for-development standard`, and include the failing criteria and evidence gathered.
|
|
28
28
|
|
|
29
|
-
|
|
30
29
|
## NEXT
|
|
31
30
|
|
|
32
31
|
Read fully and follow `./step-03-implement.md`
|
|
@@ -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
|
|
|
@@ -22,20 +22,13 @@ Do NOT `git add` anything — this is read-only inspection.
|
|
|
22
22
|
|
|
23
23
|
### Review
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
33
|
-
>
|
|
34
|
-
> {diff_output}
|
|
35
|
-
- **Verification Gap Reviewer** — prompt:
|
|
36
|
-
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
37
|
-
>
|
|
38
|
-
> {diff_output}
|
|
25
|
+
The review layers are `{workflow.review_layers}`, resolved during activation.
|
|
26
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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.
|
|
39
32
|
|
|
40
33
|
### Classify
|
|
41
34
|
|
|
@@ -46,6 +39,7 @@ Launch Blind Hunter, Edge Case Hunter, and Verification Gap Reviewer in parallel
|
|
|
46
39
|
- `medium`: tolerable
|
|
47
40
|
- `high`: intolerable
|
|
48
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.
|
|
49
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.
|
|
50
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.
|
|
51
45
|
- **patch** — caused by the change; trivially fixable without human input. Just part of the diff.
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
# - Strings replace the default.
|
|
9
9
|
# - Lists append to the default list.
|
|
10
10
|
# - Tables merge key by key.
|
|
11
|
+
# - Arrays of tables merge by `id`: matching `id` replaces, new `id`s append.
|
|
11
12
|
|
|
12
13
|
[workflow]
|
|
13
14
|
|
|
@@ -31,3 +32,52 @@ persistent_facts = [
|
|
|
31
32
|
# Empty means no extra completion behavior.
|
|
32
33
|
|
|
33
34
|
on_complete = ""
|
|
35
|
+
|
|
36
|
+
# Review layers for the review step. `instruction` is the layer's whole
|
|
37
|
+
# execution recipe — subagents by default, but an override may run anything
|
|
38
|
+
# (e.g. an external reviewer via bash). {diff_output} is substituted at run
|
|
39
|
+
# time. `when` (optional) gates a layer; empty `instruction` disables it.
|
|
40
|
+
|
|
41
|
+
[[workflow.review_layers]]
|
|
42
|
+
id = "blind-hunter"
|
|
43
|
+
name = "Blind Hunter"
|
|
44
|
+
instruction = """
|
|
45
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
46
|
+
|
|
47
|
+
> Invoke the `bmad-review-adversarial-general` skill on this diff:
|
|
48
|
+
>
|
|
49
|
+
> {diff_output}
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
[[workflow.review_layers]]
|
|
53
|
+
id = "edge-case-hunter"
|
|
54
|
+
name = "Edge Case Hunter"
|
|
55
|
+
instruction = """
|
|
56
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
57
|
+
|
|
58
|
+
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
59
|
+
>
|
|
60
|
+
> {diff_output}
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
[[workflow.review_layers]]
|
|
64
|
+
id = "verification-gap"
|
|
65
|
+
name = "Verification Gap Reviewer"
|
|
66
|
+
instruction = """
|
|
67
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
68
|
+
|
|
69
|
+
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
70
|
+
>
|
|
71
|
+
> {diff_output}
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
# Review layers for the one-shot route.
|
|
75
|
+
|
|
76
|
+
[[workflow.oneshot_review_layers]]
|
|
77
|
+
id = "blind-hunter"
|
|
78
|
+
name = "Blind Hunter"
|
|
79
|
+
instruction = """
|
|
80
|
+
Launch a subagent with no prior conversation context, with this prompt:
|
|
81
|
+
|
|
82
|
+
> Invoke the `bmad-review-adversarial-general` skill on the changed files.
|
|
83
|
+
"""
|
|
@@ -99,7 +99,6 @@ If the spec is an epic story and `{sprint_status}` exists: find the `development
|
|
|
99
99
|
|
|
100
100
|
**b) Plan-code-review** — everything else. When uncertain whether blast radius is truly zero, choose this path.
|
|
101
101
|
|
|
102
|
-
|
|
103
102
|
## NEXT
|
|
104
103
|
|
|
105
104
|
Read fully and follow `./step-02-plan.md`
|
|
@@ -46,7 +46,6 @@ HALT and ask human: `[A] Approve` | `[E] Edit`
|
|
|
46
46
|
- **If the file exists:** Compare the content to what you wrote. If it has changed since you wrote it, acknowledge the external edits — show a brief summary of what changed — and proceed with the updated version. Then set status `ready-for-dev` in `{spec_file}`. Everything inside `<frozen-after-approval>` is now locked — only the human can change it. → Step 3.
|
|
47
47
|
- **E**: Apply changes, then return to CHECKPOINT 1.
|
|
48
48
|
|
|
49
|
-
|
|
50
49
|
## NEXT
|
|
51
50
|
|
|
52
51
|
Read fully and follow `./step-03-implement.md`
|
|
@@ -8,6 +8,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
|
8
8
|
|
|
9
9
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
|
10
10
|
- All review subagents must run at the same model capability as the current session.
|
|
11
|
+
- Run subagents synchronously: launch them together, then wait for all results before continuing.
|
|
11
12
|
|
|
12
13
|
## INSTRUCTIONS
|
|
13
14
|
|
|
@@ -21,20 +22,13 @@ Do NOT `git add` anything — this is read-only inspection.
|
|
|
21
22
|
|
|
22
23
|
### Review
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
32
|
-
>
|
|
33
|
-
> {diff_output}
|
|
34
|
-
- **Verification Gap Reviewer** — prompt:
|
|
35
|
-
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
36
|
-
>
|
|
37
|
-
> {diff_output}
|
|
25
|
+
The review layers are `{workflow.review_layers}`, resolved during activation.
|
|
26
|
+
|
|
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
|
+
|
|
29
|
+
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
|
+
|
|
31
|
+
If a layer's instruction requires subagents and none are available, generate one review prompt file per such layer in `{implementation_artifacts}` and HALT. Ask the human to run each in a separate session (ideally a different LLM) and paste back the findings.
|
|
38
32
|
|
|
39
33
|
### Classify
|
|
40
34
|
|
|
@@ -9,6 +9,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
|
9
9
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
|
10
10
|
- NEVER auto-push.
|
|
11
11
|
- All review subagents must run at the same model capability as the current session.
|
|
12
|
+
- Run subagents synchronously: launch them together, then wait for all results before continuing.
|
|
12
13
|
|
|
13
14
|
## INSTRUCTIONS
|
|
14
15
|
|
|
@@ -20,9 +21,11 @@ Implement the clarified intent directly.
|
|
|
20
21
|
|
|
21
22
|
### Review
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
The review layers for this route are `{workflow.oneshot_review_layers}`, resolved during activation.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
Skip every layer whose `instruction` is empty or missing, and every layer whose `when` condition (if present) does not hold. If no layers remain, HALT with status `blocked` and blocking condition `no active review layers`. Execute all remaining layers in parallel wherever their execution methods allow, following each layer's `instruction` verbatim after substituting any runtime placeholders.
|
|
27
|
+
|
|
28
|
+
If a layer's instruction requires subagents and none are available, generate one review prompt file per such layer in `{implementation_artifacts}` and HALT. Ask the human to run each in a separate session and paste back the findings.
|
|
26
29
|
|
|
27
30
|
### Classify
|
|
28
31
|
|