Skill Tracer
Skills › BMAD Method › bmad-build-auto › plan-template.md

plan-template.md

116 lines · skills/bmad-build-auto/plan-template.md at bd70c64

Open on GitHub
1---
2title: '{title}'
3type: 'feature' # feature | bugfix | refactor | chore
4ticket: '' # the entry id from the ticket tree, or the story file's stem when the entry has no id; empty outside it
5created: '{date}'
6status: 'draft' # draft | ready-for-dev | in-progress | in-review | built | done | blocked | dropped
7baseline_revision: '' # the commit the work starts from, set before any code change
8route: '' # oneshot | full — set by step-02
9route_source: '' # pinned | auto — set with route by step-02
10risk: '' # low | medium | high — set by step-02; a CI process can read it to decide how much review the change gets
11review: '' # none | quick | thorough — set by step-04
12review_source: '' # pinned | auto — set with review by step-04
13lenses_ran: [] # ids of the lenses launched, set by step-04
14review_loop_iteration: 0 # incremented by step-04 before each review loopback
15followup_review_recommended: false # set by step-04 at Finalize — true if the LLM decided another review pass is worthwhile
16context: [] # optional: `{project-root}/`-prefixed paths the implementation agent should load: companions the ticket names that this work needs, and project-wide standards. Keep short — only what isn't already distilled into the plan body.
17warnings: [] # optional: machine-readable warnings for orchestration, e.g. oversized, multiple-goals
18deferred: [] # append-only machine-readable deferred review findings; each item carries summary/evidence and optional location/severity
19---
21<!-- Target: 900–1300 tokens (less if route is oneshot). Above 1600 = high risk of context rot;
22 add `oversized` to frontmatter `warnings` and continue.
23 Never over-specify "how" — use boundaries + examples instead.
24 Cohesive cross-layer changes (DB+BE+UI) stay in ONE file.
25 IMPORTANT: Remove all HTML comments when filling this template. -->
27<intent-contract>

<!-- Target: 900–1300 tokens (less if route is oneshot). Above 1600 = high risk of context rot; add oversized to frontmatter warnings and continue. Never over-specify "how" — use boundaries + examples instead. Cohesive cross-layer changes (DB+BE+UI) stay in ONE file. IMPORTANT: Remove all HTML comments when filling this template. -->

<intent-contract>

Raw lines 1 to 28
29## Intent
31<!-- What is broken or missing, and why it matters. Then the high-level approach — the "what", not the "how". -->
33**Problem:** ONE_TO_TWO_SENTENCES
35**Approach:** ONE_TO_TWO_SENTENCES

Intent

<!-- What is broken or missing, and why it matters. Then the high-level approach — the "what", not the "how". -->

Problem: ONE_TO_TWO_SENTENCES

Approach: ONE_TO_TWO_SENTENCES

Raw lines 29 to 36
37## Boundaries & Constraints
39<!-- Two tiers: Always = invariant rules. Never = out of scope + forbidden approaches.
40 Delete this section if route is oneshot. -->
42**Always:** INVARIANT_RULES
44**Never:** NON_GOALS_AND_FORBIDDEN_APPROACHES

Boundaries & Constraints

<!-- Two tiers: Always = invariant rules. Never = out of scope + forbidden approaches. Delete this section if route is oneshot. -->

Always: INVARIANT_RULES

Never: NON_GOALS_AND_FORBIDDEN_APPROACHES

Raw lines 37 to 45
46## I/O & Edge-Case Matrix
48<!-- If no meaningful I/O scenarios exist, delete this section. Do not write "N/A" or "None".
49 Delete this section if route is oneshot. -->
51| Scenario | Input / State | Expected Output / Behavior | Error Handling |
52|----------|--------------|---------------------------|----------------|
53| HAPPY_PATH | INPUT | OUTCOME | No error expected |
54| ERROR_CASE | INPUT | OUTCOME | ERROR_HANDLING |
56</intent-contract>

I/O & Edge-Case Matrix

<!-- If no meaningful I/O scenarios exist, delete this section. Do not write "N/A" or "None". Delete this section if route is oneshot. -->

ScenarioInput / StateExpected Output / BehaviorError Handling
HAPPY_PATHINPUTOUTCOMENo error expected
ERROR_CASEINPUTOUTCOMEERROR_HANDLING

</intent-contract>

Raw lines 46 to 57
58## Code Map
60<!-- Agent-populated during planning. Annotated paths prevent blind codebase searching.
61 Delete this section if route is oneshot. -->
63- `FILE` -- ROLE_OR_RELEVANCE
64- `FILE` -- ROLE_OR_RELEVANCE

Code Map

<!-- Agent-populated during planning. Annotated paths prevent blind codebase searching. Delete this section if route is oneshot. -->

  • FILE -- ROLE_OR_RELEVANCE
  • FILE -- ROLE_OR_RELEVANCE
Raw lines 58 to 65
66## Tasks & Acceptance
68<!-- Tasks: backtick-quoted file path -- action -- rationale. Prefer one task per file; group tightly-coupled changes when splitting would be artificial. -->
69<!-- If an I/O Matrix is present, include a task to unit-test its edge cases. -->
70<!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here. -->
71<!-- Delete this section if route is oneshot. -->
73**Execution:**
74- [ ] `FILE` -- ACTION -- RATIONALE
76**Acceptance Criteria:**
77- Given PRECONDITION, when ACTION, then EXPECTED_RESULT

Tasks & Acceptance

<!-- Tasks: backtick-quoted file path -- action -- rationale. Prefer one task per file; group tightly-coupled changes when splitting would be artificial. --> <!-- If an I/O Matrix is present, include a task to unit-test its edge cases. --> <!-- AC covers system-level behaviors not captured by the I/O Matrix. Do not duplicate I/O scenarios here. --> <!-- Delete this section if route is oneshot. -->

Execution:

  • [ ] FILE -- ACTION -- RATIONALE

Acceptance Criteria:

  • Given PRECONDITION, when ACTION, then EXPECTED_RESULT
Raw lines 66 to 78
79## Implementation Notes
81<!-- Agent-owned. Append-only during implementation: decisions made, files touched, surprises
82 encountered. Never delete this section. Leave empty at planning time, except on the
83 oneshot route: start with a short explanation of why. -->

Implementation Notes

<!-- Agent-owned. Append-only during implementation: decisions made, files touched, surprises encountered. Never delete this section. Leave empty at planning time, except on the oneshot route: start with a short explanation of why. -->

Raw lines 79 to 84
85## Plan Change Log
87<!-- Append-only. Populated by step-04 during review loops. Do not modify or delete existing entries.
88 Each entry records: what finding triggered the change, what was amended, what known-bad state
89 the amendment avoids, and any KEEP instructions (what worked well and must survive re-derivation).
90 Empty until the first bad_plan loopback. -->

Plan Change Log

<!-- Append-only. Populated by step-04 during review loops. Do not modify or delete existing entries. Each entry records: what finding triggered the change, what was amended, what known-bad state the amendment avoids, and any KEEP instructions (what worked well and must survive re-derivation). Empty until the first bad_plan loopback. -->

Raw lines 85 to 91
92## Review Triage Log
94<!-- Append-only. Populated by step-04 on EVERY review pass, including loopbacks and blocked exits.
95 Each entry records verdict counts (high/medium/low/false/maybe-false) and one row per
96 reviewer finding: verdict, route, and evidence — the refutation for false, what would settle
97 it for maybe-false, the action taken for patches. Empty until the first review pass. -->

Review Triage Log

<!-- Append-only. Populated by step-04 on EVERY review pass, including loopbacks and blocked exits. Each entry records verdict counts (high/medium/low/false/maybe-false) and one row per reviewer finding: verdict, route, and evidence — the refutation for false, what would settle it for maybe-false, the action taken for patches. Empty until the first review pass. -->

Raw lines 92 to 98
99## Design Notes
101<!-- If the approach is straightforward, delete this section. Do not write "N/A" or "None".
102 Delete this section if route is oneshot. -->
103<!-- Design rationale and golden examples only when non-obvious. Keep examples to 5–10 lines. -->
105DESIGN_RATIONALE_AND_EXAMPLES

Design Notes

<!-- If the approach is straightforward, delete this section. Do not write "N/A" or "None". Delete this section if route is oneshot. --> <!-- Design rationale and golden examples only when non-obvious. Keep examples to 5–10 lines. -->

DESIGN_RATIONALE_AND_EXAMPLES

Raw lines 99 to 106
107## Verification
109<!-- If no build, test, or lint commands apply, delete this section. Do not write "N/A" or "None". -->
110<!-- How the agent confirms its own work. Prefer CLI commands. When no CLI check applies, state what to inspect manually. -->
112**Commands:**
113- `COMMAND` -- expected: SUCCESS_CRITERIA
115**Manual checks (if no CLI):**
116- WHAT_TO_INSPECT_AND_EXPECTED_STATE

Verification

<!-- If no build, test, or lint commands apply, delete this section. Do not write "N/A" or "None". --> <!-- How the agent confirms its own work. Prefer CLI commands. When no CLI check applies, state what to inspect manually. -->

Commands:

  • COMMAND -- expected: SUCCESS_CRITERIA

Manual checks (if no CLI):

  • WHAT_TO_INSPECT_AND_EXPECTED_STATE
Raw lines 107 to 116