You are helping the user choose the next change from the roadmap and turn the
accepted recommendation into a normal spec-driven change.
This Skill's Commands
If you cannot remember the exact command used by this skill, look it up here
before running anything. Do not guess.
init: node {{SKILL_DIR}}/scripts/spec-driven.js init
roadmap-status: node {{SKILL_DIR}}/scripts/spec-driven.js roadmap-status
propose: node {{SKILL_DIR}}/scripts/spec-driven.js propose <name>
verify: node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>
Prerequisites
The .spec-driven/ directory must exist at the project root. Before
proceeding, verify:
ls .spec-driven/
If this fails, the project is not initialized. Run /spec-driven-init first.
If .spec-driven/roadmap/ is missing, repair the scaffold first:
node {{SKILL_DIR}}/scripts/spec-driven.js init
Steps
Read roadmap context first — before recommending anything, read:
.spec-driven/config.yaml
.spec-driven/roadmap/INDEX.md
- the milestone files relevant to the current phase
.spec-driven/specs/INDEX.md
- the relevant main spec files the recommended change is likely to touch
node {{SKILL_DIR}}/scripts/spec-driven.js roadmap-status
- the planned change entries for the candidates you are considering as
single-line roadmap items in the canonical format
- \` - Declared: - `
- treat milestone declared statuses as limited to
proposed, active,
blocked, or complete
- treat planned change declared statuses as limited to
planned or
complete
You MAY delegate bounded analysis-only work such as candidate comparison,
roadmap-context summarization, or likely spec-path discovery to a
sub-agent. The parent agent MUST keep the final recommendation, the user
confirmation checkpoint, and all proposal artifact writes.
Default to dependency order — unless the user explicitly specifies a
different planning goal (e.g. impact, urgency, risk reduction), recommend
the next change by dependency order: scan milestones from earliest to latest,
and within each milestone pick the first planned change that is not yet
complete, has no corresponding active change in .spec-driven/changes/,
and whose dependencies (if any) are all complete. If the user does specify
a planning goal, optimize for that goal instead.
Recommend one candidate change — propose:
- a kebab-case change name
- which milestone it comes from
- why it is the best next candidate
- what alternatives were not chosen yet
The recommended candidate MUST already appear under a milestone
## Planned Changes section.
Present a proposal checkpoint — before creating any files, summarize:
- the proposed change name
- which milestone it comes from
- the goal and scope of the recommended change
- the main spec areas expected to change
- why this item is the best next step
- any unresolved questions that would go into
questions.md
Then ask for explicit confirmation. If the user wants revisions, continue the
recommendation discussion and re-summarize until confirmed.
Resolve open questions before scaffolding — if any unresolved questions
remain after the recommendation summary:
- present each open question as a structured block with:
Question
Explanation
Impact
Recommendation
- ask the user to answer or confirm the decision needed
Explanation must clarify why the issue is unresolved or what decision
is still blocking the proposal
Impact must describe what part of the proposal depends on the answer
Recommendation may suggest a preferred answer, but only as a suggestion
- do not treat your recommendation as the resolved answer
- do not continue until the user has given an exact answer or explicit
confirmation
Scaffold the change after confirmation — run:
node {{SKILL_DIR}}/scripts/spec-driven.js propose <name>
This creates .spec-driven/changes/<name>/ with the seeded templates.
Fill the five proposal artifacts — after scaffolding, complete the same
proposal workflow used by /roadmap-propose:
write proposal.md with What, Why, Scope, and
Unchanged Behavior
write design.md with Approach, Key Decisions, and
Alternatives Considered
populate changes/<name>/specs/ with delta spec files aligned by path with
the main .spec-driven/specs/ structure
mirror the main spec path exactly, for example
.spec-driven/specs/skills/planning.md becomes
.spec-driven/changes/<name>/specs/skills/planning.md
use this canonical sample as the format target:
---
mapping:
implementation:
- path/to/implementation.ts
tests:
- test/path/to/test.ts
---
## ADDED Requirements
### Requirement: new-capability
The system MUST provide <observable behavior>.
#### Scenario: success
- GIVEN <precondition>
- WHEN <action>
- THEN <result>
## MODIFIED Requirements
### Requirement: existing-capability
Previously: The system MUST <old behavior>.
The system MUST <new behavior>.
## REMOVED Requirements
### Requirement: old-capability
Reason: This behavior is removed because <reason>.
omit sections that do not apply instead of leaving blank placeholders
if the change has no observable spec impact, leave changes/<name>/specs/
empty rather than creating a prose-only delta file
Do not invent mapping paths when the repository evidence is unclear
include mapping frontmatter in delta spec files when implementation and
test paths are knowable from repository context
write tasks.md using this canonical structure:
# Tasks: <change-name>
## Implementation
- [ ] Describe the first atomic implementation task
- [ ] Describe the second atomic implementation task
## Testing
- [ ] Run `npm run lint` — lint or validation task
- [ ] Run `npm test` — unit test task
## Verification
- [ ] Verify implementation matches proposal scope
Each task uses - [ ] checkboxes and should be independently completable.
The ## Testing section MUST satisfy these verification keyword requirements:
- At least one task MUST contain a lint/validation keyword:
lint, validate,
validation, typecheck, type-check, or build
- At least one task MUST contain a unit test keyword:
unit test or unit tests
- Both tasks MUST name an explicit runnable command in backticks or use a known
runner (npm, pnpm, yarn, bun, node, bash, sh, pytest, jest, vitest, go, cargo,
make, uv, poetry)
- Paraphrasing these keywords (e.g. "run tests" instead of "run unit tests") will
cause
verify to fail
If the relevant command cannot be determined confidently from repository context,
record that in questions.md instead of guessing.
write questions.md, recording every unresolved point under ## Open, or
leave <!-- No open questions --> if nothing is unclear
Use the recommended milestone context as planning input, but treat the
selected planned change itself as a single-line roadmap item.
Validate before presenting the proposal — run:
node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>
- Fix any safe artifact-format issues immediately and rerun
verify
- If only open questions remain, treat that as expected at proposal time and
surface those questions clearly
- If any non-question error remains, stop and report it instead of presenting
the proposal as ready
Offer the execution handoff — show the user the generated artifacts,
summarize the final proposed scope, list any open questions that must be
answered before implementation, and ask whether they want to:
- enter
/spec-driven-apply <name> for the stepwise execution path
- enter
/spec-driven-auto for the end-to-end execution path
Do not auto-enter either execution path without the user's explicit choice.
Rules
- Do not implement code — this skill is planning only
- Use roadmap context and roadmap-status output as the basis for recommendation
- Explain why the recommended change should come next
- Recommend only work that already exists under
Planned Changes
- Do not scaffold proposal artifacts until the user explicitly confirms the
recommendation summary and change name
- If open questions remain, ask the user to resolve them before scaffolding
- For each open question, provide
Question, Explanation, Impact, and
Recommendation
- If testing commands are not knowable from repository context, record that as
an open question instead of inventing commands
- Recommended answers do not count as question resolution without explicit user
confirmation
- After confirmation, follow the same artifact-writing and validation standard as
/roadmap-propose
- Do not let a sub-agent scaffold the change or own the recommendation
checkpoint
- Keep implementation and test mappings in spec frontmatter, not in requirement
prose
1---2name: roadmap-recommend3description: Recommend the next roadmap-backed change, then after explicit confirmation scaffold it as a normal spec-driven change.4---56You are helping the user choose the next change from the roadmap and turn the7accepted recommendation into a normal spec-driven change.89## This Skill's Commands1011If you cannot remember the exact command used by this skill, look it up here12before running anything. Do not guess.1314```yaml15init: node {{SKILL_DIR}}/scripts/spec-driven.js init16roadmap-status: node {{SKILL_DIR}}/scripts/spec-driven.js roadmap-status17propose: node {{SKILL_DIR}}/scripts/spec-driven.js propose <name>18verify: node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>19```2021## Prerequisites2223The `.spec-driven/` directory must exist at the **project root**. Before24proceeding, verify:25```26ls .spec-driven/27```28If this fails, the project is not initialized. Run `/spec-driven-init` first.2930If `.spec-driven/roadmap/` is missing, repair the scaffold first:31```32node {{SKILL_DIR}}/scripts/spec-driven.js init33```3435## Steps36371. **Read roadmap context first** — before recommending anything, read:38 - `.spec-driven/config.yaml`39 - `.spec-driven/roadmap/INDEX.md`40 - the milestone files relevant to the current phase41 - `.spec-driven/specs/INDEX.md`42 - the relevant main spec files the recommended change is likely to touch43 - `node {{SKILL_DIR}}/scripts/spec-driven.js roadmap-status`44 - the planned change entries for the candidates you are considering as45 single-line roadmap items in the canonical format46 `- \`<change-name>\` - Declared: <status> - <summary>`47 - treat milestone declared statuses as limited to `proposed`, `active`,48 `blocked`, or `complete`49 - treat planned change declared statuses as limited to `planned` or50 `complete`5152 You MAY delegate bounded analysis-only work such as candidate comparison,53 roadmap-context summarization, or likely spec-path discovery to a54 sub-agent. The parent agent MUST keep the final recommendation, the user55 confirmation checkpoint, and all proposal artifact writes.56572. **Default to dependency order** — unless the user explicitly specifies a58 different planning goal (e.g. impact, urgency, risk reduction), recommend59 the next change by dependency order: scan milestones from earliest to latest,60 and within each milestone pick the first planned change that is not yet61 `complete`, has no corresponding active change in `.spec-driven/changes/`,62 and whose dependencies (if any) are all `complete`. If the user does specify63 a planning goal, optimize for that goal instead.64653. **Recommend one candidate change** — propose:66 - a kebab-case change name67 - which milestone it comes from68 - why it is the best next candidate69 - what alternatives were not chosen yet70 The recommended candidate MUST already appear under a milestone71 `## Planned Changes` section.72734. **Present a proposal checkpoint** — before creating any files, summarize:74 - the proposed change name75 - which milestone it comes from76 - the goal and scope of the recommended change77 - the main spec areas expected to change78 - why this item is the best next step79 - any unresolved questions that would go into `questions.md`8081 Then ask for explicit confirmation. If the user wants revisions, continue the82 recommendation discussion and re-summarize until confirmed.83845. **Resolve open questions before scaffolding** — if any unresolved questions85 remain after the recommendation summary:86 - present each open question as a structured block with:87 - `Question`88 - `Explanation`89 - `Impact`90 - `Recommendation`91 - ask the user to answer or confirm the decision needed92 - `Explanation` must clarify why the issue is unresolved or what decision93 is still blocking the proposal94 - `Impact` must describe what part of the proposal depends on the answer95 - `Recommendation` may suggest a preferred answer, but only as a suggestion96 - do not treat your recommendation as the resolved answer97 - do not continue until the user has given an exact answer or explicit98 confirmation991006. **Scaffold the change after confirmation** — run:101 ```102 node {{SKILL_DIR}}/scripts/spec-driven.js propose <name>103 ```104 This creates `.spec-driven/changes/<name>/` with the seeded templates.1051067. **Fill the five proposal artifacts** — after scaffolding, complete the same107 proposal workflow used by `/roadmap-propose`:108 - write `proposal.md` with **What**, **Why**, **Scope**, and109 **Unchanged Behavior**110 - write `design.md` with **Approach**, **Key Decisions**, and111 **Alternatives Considered**112 - populate `changes/<name>/specs/` with delta spec files aligned by path with113 the main `.spec-driven/specs/` structure114 - mirror the main spec path exactly, for example115 `.spec-driven/specs/skills/planning.md` becomes116 `.spec-driven/changes/<name>/specs/skills/planning.md`117 - use this canonical sample as the format target:118119 ```markdown120 ---121 mapping:122 implementation:123 - path/to/implementation.ts124 tests:125 - test/path/to/test.ts126 ---127128 ## ADDED Requirements129130 ### Requirement: new-capability131 The system MUST provide <observable behavior>.132133 #### Scenario: success134 - GIVEN <precondition>135 - WHEN <action>136 - THEN <result>137138 ## MODIFIED Requirements139140 ### Requirement: existing-capability141 Previously: The system MUST <old behavior>.142 The system MUST <new behavior>.143144 ## REMOVED Requirements145146 ### Requirement: old-capability147 Reason: This behavior is removed because <reason>.148 ```149 - omit sections that do not apply instead of leaving blank placeholders150 - if the change has no observable spec impact, leave `changes/<name>/specs/`151 empty rather than creating a prose-only delta file152 - Do not invent mapping paths when the repository evidence is unclear153 - include mapping frontmatter in delta spec files when implementation and154 test paths are knowable from repository context155 - write `tasks.md` using this canonical structure:156157 ```markdown158 # Tasks: <change-name>159160 ## Implementation161 - [ ] Describe the first atomic implementation task162 - [ ] Describe the second atomic implementation task163164 ## Testing165166 - [ ] Run `npm run lint` — lint or validation task167 - [ ] Run `npm test` — unit test task168169 ## Verification170 - [ ] Verify implementation matches proposal scope171 ```172173 Each task uses `- [ ]` checkboxes and should be independently completable.174175 The `## Testing` section MUST satisfy these verification keyword requirements:176 - At least one task MUST contain a lint/validation keyword: `lint`, `validate`,177 `validation`, `typecheck`, `type-check`, or `build`178 - At least one task MUST contain a unit test keyword: `unit test` or `unit tests`179 - Both tasks MUST name an explicit runnable command in backticks or use a known180 runner (npm, pnpm, yarn, bun, node, bash, sh, pytest, jest, vitest, go, cargo,181 make, uv, poetry)182 - Paraphrasing these keywords (e.g. "run tests" instead of "run unit tests") will183 cause `verify` to fail184185 If the relevant command cannot be determined confidently from repository context,186 record that in `questions.md` instead of guessing.187 - write `questions.md`, recording every unresolved point under `## Open`, or188 leave `<!-- No open questions -->` if nothing is unclear189190 Use the recommended milestone context as planning input, but treat the191 selected planned change itself as a single-line roadmap item.1921938. **Validate before presenting the proposal** — run:194 ```195 node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>196 ```197 - Fix any safe artifact-format issues immediately and rerun `verify`198 - If only open questions remain, treat that as expected at proposal time and199 surface those questions clearly200 - If any non-question error remains, stop and report it instead of presenting201 the proposal as ready2022039. **Offer the execution handoff** — show the user the generated artifacts,204 summarize the final proposed scope, list any open questions that must be205 answered before implementation, and ask whether they want to:206 - enter `/spec-driven-apply <name>` for the stepwise execution path207 - enter `/spec-driven-auto` for the end-to-end execution path208 Do not auto-enter either execution path without the user's explicit choice.209210## Rules211212- Do not implement code — this skill is planning only213- Use roadmap context and roadmap-status output as the basis for recommendation214- Explain why the recommended change should come next215- Recommend only work that already exists under `Planned Changes`216- Do not scaffold proposal artifacts until the user explicitly confirms the217 recommendation summary and change name218- If open questions remain, ask the user to resolve them before scaffolding219- For each open question, provide `Question`, `Explanation`, `Impact`, and220 `Recommendation`221- If testing commands are not knowable from repository context, record that as222 an open question instead of inventing commands223- Recommended answers do not count as question resolution without explicit user224 confirmation225- After confirmation, follow the same artifact-writing and validation standard as226 `/roadmap-propose`227- Do not let a sub-agent scaffold the change or own the recommendation228 checkpoint229- Keep implementation and test mappings in spec frontmatter, not in requirement230 prose