roadmap-propose
You are helping the user turn planned roadmap work 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
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
-
Identify the target planned change — determine which milestone item the user wants to turn into a real change. If they already gave a change name, use it. Otherwise ask which
Planned Changesitem to promote. -
Read roadmap and spec context first — before scaffolding anything, read:
.spec-driven/config.yaml.spec-driven/roadmap/INDEX.md- the milestone file that contains the target item
.spec-driven/specs/INDEX.md- the relevant main spec files the new change is likely to touch
- the selected planned change entry as a single-line roadmap input
-
Confirm it is already planned work — verify that the selected name is present under a milestone
## Planned Changessection before scaffolding. -
Extract the roadmap handoff context — treat the selected planned change entry as more than a name lookup:
- use the canonical first line to identify the change name while treating the declared status and summary as metadata on that same line
- use the surrounding milestone sections as context for scope, rationale, sequencing, or constraints when the one-line summary is not sufficient
- treat milestone declared statuses as limited to
proposed,active,blocked, orcomplete - treat planned change declared statuses as limited to
plannedorcomplete
-
Scaffold the change — run:
node {{SKILL_DIR}}/scripts/spec-driven.js propose <name>This creates
.spec-driven/changes/<name>/with seeded artifact templates. -
Fill the standard proposal artifacts — populate:
-
proposal.md -
design.md -
tasks.mdusing 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 scopeEach task uses
- [ ]checkboxes and should be independently completable.The
## Testingsection MUST satisfy these verification keyword requirements:- At least one task MUST contain a lint/validation keyword:
lint,validate,validation,typecheck,type-check, orbuild - At least one task MUST contain a unit test keyword:
unit testorunit 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
verifyto fail
If the relevant command cannot be determined confidently from repository context, add an open question instead of guessing.
- At least one task MUST contain a lint/validation keyword:
-
questions.md -
delta specs under
changes/<name>/specs/-
mirror the main spec path exactly, for example
.spec-driven/specs/skills/planning.mdbecomes.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
-
-
mapping frontmatter in delta spec files when implementation and test paths are knowable from repository context Use the roadmap milestone as planning input, but treat the selected planned change as a single-line item and derive any extra context from the milestone sections rather than multiline planned change detail.
-
-
Validate artifact format — run:
node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>If the command reports repairable format issues, fix them and rerun verify.
-
Offer the execution handoff — report the new change path, note which milestone it came from, surface any open questions that must be resolved before implementation, and ask the user whether they want to:
- enter
/spec-driven-apply <name>for the stepwise execution path - enter
/spec-driven-autofor the end-to-end execution path Do not auto-enter either execution path without the user's explicit choice.
- enter
Rules
- This skill creates planning artifacts only — do not implement product code
- Only turn
Planned Changesinto change scaffolds - Create the same five artifacts as
spec-driven-propose - Keep implementation and test mappings in spec frontmatter, not in requirement prose
- If testing commands are not knowable from repository context, add an open question instead of guessing them
- Before finishing, rerun
verifyuntil all repairable format issues are fixed
More from kw12121212/auto-spec-driven
spec-driven-auto
Run the full spec-driven workflow automatically. Proposes, implements, verifies, reviews, and archives a change without mandatory confirmation — only stops for user input when open questions need resolution.
36spec-driven-review
Review the code quality of a spec-driven change. Checks readability, security, performance, and best practices before archiving.
36spec-driven-init
Initialize a .spec-driven/ directory in a project. Creates config.yaml, roadmap/, and specs/ scaffold, then guides the user to fill in project context.
35spec-driven-archive
Archive a completed spec-driven change. Requires completed tasks, merges delta specs into main specs, then moves the change to archive/ with a date prefix.
35spec-driven-brainstorm
Discuss and brainstorm a spec-driven change from a rough idea, then propose a change name and, after explicit confirmation, generate the same five proposal artifacts as spec-driven-propose.
35spec-driven-propose
Propose a new spec-driven change. Scaffolds proposal.md, specs/ delta files, design.md, tasks.md, and questions.md for a named change, populated with project context.
35