You are helping the user modify an existing spec-driven change artifact.
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.
modify: node {{SKILL_DIR}}/scripts/spec-driven.js modify
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.
Steps
Select the change — run node {{SKILL_DIR}}/scripts/spec-driven.js modify to list active changes. Ask the user which change they want to modify. If they already specified one, use it.
Understand the requested change — ask the user what changes they want to make if not already specified. Focus on the content of the change, not which files to edit.
Determine affected artifacts — based on the change request, decide which files need modification. A single change may affect multiple artifacts:
proposal.md — scope, goals, or requirements changes
specs/ — delta specs describing observable behavior changes, mirroring .spec-driven/specs/ by file path
design.md — implementation approach or architecture decisions
tasks.md — task breakdown, additions, or removals
questions.md — new questions or resolved answers
Read all relevant artifact files before making changes.
- If the request affects
specs/, also read .spec-driven/config.yaml, .spec-driven/specs/INDEX.md, and each relevant main spec file before editing.
Apply modifications:
For proposal.md and design.md: edit freely
For specs/: preserve the delta spec format. Keep the matching file path under changes/<name>/specs/, use ## ADDED Requirements, ## MODIFIED Requirements, and ## REMOVED Requirements section markers as needed, and keep ### Requirement: headings intact. Write observable behavior only — do not turn specs into implementation notes, architecture details, or API design docs.
Mirror the main spec path exactly. For example,
.spec-driven/specs/skills/planning.md maps to
.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 empty 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 related implementation or test files are unclear.
For tasks.md: preserve all - [x] completed task state — only add,
remove, or reword - [ ] incomplete tasks unless the user explicitly asks
to change completed ones. When adding or editing ## Testing tasks, follow
this canonical structure:
## Testing
- [ ] Run `npm run lint` — lint or validation task
- [ ] Run `npm test` — unit test task
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
For questions.md: add new questions under ## Open, or move questions to ## Resolved with an A: answer line when the human provides answers
Show a summary — briefly describe what changed across all modified files and confirm with the user.
Validate after editing — run:
node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>
- Fix any safe format issues immediately and rerun
verify
- If
verify reports only non-format workflow blockers such as open questions
in questions.md, surface those separately instead of misreporting them as
spec-format failures
- If unresolved format or structure errors remain, report them clearly to the
user
- Do not finish without this check
Rules
- Never uncheck a completed task (
- [x]) unless the user explicitly asks
- Don't restructure a file wholesale when a targeted edit is sufficient
- Keep the same heading structure unless changing structure is the explicit goal
- One change request may span multiple files — edit all relevant artifacts together
- When editing
specs/, follow .spec-driven/config.yaml rules and keep each delta file aligned with the corresponding main spec file
1---2name: spec-driven-modify3description: Modify an existing spec-driven change artifact (proposal.md, specs/ delta files, design.md, tasks.md, or questions.md). Preserves completed task state.4---56You are helping the user modify an existing spec-driven change artifact.78## This Skill's Commands910If you cannot remember the exact command used by this skill, look it up here11before running anything. Do not guess.1213```yaml14modify: node {{SKILL_DIR}}/scripts/spec-driven.js modify15verify: node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>16```1718## Prerequisites1920The `.spec-driven/` directory must exist at the **project root**. Before proceeding, verify:21```22ls .spec-driven/23```24If this fails, the project is not initialized. Run `/spec-driven-init` first.2526## Steps27281. **Select the change** — run `node {{SKILL_DIR}}/scripts/spec-driven.js modify` to list active changes. Ask the user which change they want to modify. If they already specified one, use it.29302. **Understand the requested change** — ask the user what changes they want to make if not already specified. Focus on the *content* of the change, not which files to edit.31323. **Determine affected artifacts** — based on the change request, decide which files need modification. A single change may affect multiple artifacts:33 - `proposal.md` — scope, goals, or requirements changes34 - `specs/` — delta specs describing observable behavior changes, mirroring `.spec-driven/specs/` by file path35 - `design.md` — implementation approach or architecture decisions36 - `tasks.md` — task breakdown, additions, or removals37 - `questions.md` — new questions or resolved answers3839 Read all relevant artifact files before making changes.40 - If the request affects `specs/`, also read `.spec-driven/config.yaml`, `.spec-driven/specs/INDEX.md`, and each relevant main spec file before editing.41424. **Apply modifications**:43 - For `proposal.md` and `design.md`: edit freely44 - For `specs/`: preserve the delta spec format. Keep the matching file path under `changes/<name>/specs/`, use `## ADDED Requirements`, `## MODIFIED Requirements`, and `## REMOVED Requirements` section markers as needed, and keep `### Requirement:` headings intact. Write observable behavior only — do not turn specs into implementation notes, architecture details, or API design docs.45 Mirror the main spec path exactly. For example,46 `.spec-driven/specs/skills/planning.md` maps to47 `.spec-driven/changes/<name>/specs/skills/planning.md`.4849 Use this canonical sample as the format target:5051 ```markdown52 ---53 mapping:54 implementation:55 - path/to/implementation.ts56 tests:57 - test/path/to/test.ts58 ---5960 ## ADDED Requirements6162 ### Requirement: new-capability63 The system MUST provide <observable behavior>.6465 #### Scenario: success66 - GIVEN <precondition>67 - WHEN <action>68 - THEN <result>6970 ## MODIFIED Requirements7172 ### Requirement: existing-capability73 Previously: The system MUST <old behavior>.74 The system MUST <new behavior>.7576 ## REMOVED Requirements7778 ### Requirement: old-capability79 Reason: This behavior is removed because <reason>.80 ```8182 Omit sections that do not apply instead of leaving empty placeholders. If83 the change has no observable spec impact, leave `changes/<name>/specs/`84 empty rather than creating a prose-only delta file. Do not invent mapping85 paths when the related implementation or test files are unclear.86 - For `tasks.md`: **preserve all `- [x]` completed task state** — only add,87 remove, or reword `- [ ]` incomplete tasks unless the user explicitly asks88 to change completed ones. When adding or editing `## Testing` tasks, follow89 this canonical structure:9091 ```markdown92 ## Testing9394 - [ ] Run `npm run lint` — lint or validation task95 - [ ] Run `npm test` — unit test task96 ```9798 The `## Testing` section MUST satisfy these verification keyword requirements:99 - At least one task MUST contain a lint/validation keyword: `lint`, `validate`,100 `validation`, `typecheck`, `type-check`, or `build`101 - At least one task MUST contain a unit test keyword: `unit test` or `unit tests`102 - Both tasks MUST name an explicit runnable command in backticks or use a known103 runner (npm, pnpm, yarn, bun, node, bash, sh, pytest, jest, vitest, go, cargo,104 make, uv, poetry)105 - Paraphrasing these keywords (e.g. "run tests" instead of "run unit tests") will106 cause `verify` to fail107 - For `questions.md`: add new questions under `## Open`, or move questions to `## Resolved` with an `A:` answer line when the human provides answers1081095. **Show a summary** — briefly describe what changed across all modified files and confirm with the user.1101116. **Validate after editing** — run:112 ```113 node {{SKILL_DIR}}/scripts/spec-driven.js verify <name>114 ```115 - Fix any safe format issues immediately and rerun `verify`116 - If `verify` reports only non-format workflow blockers such as open questions117 in `questions.md`, surface those separately instead of misreporting them as118 spec-format failures119 - If unresolved format or structure errors remain, report them clearly to the120 user121 - Do not finish without this check122123## Rules124- Never uncheck a completed task (`- [x]`) unless the user explicitly asks125- Don't restructure a file wholesale when a targeted edit is sufficient126- Keep the same heading structure unless changing structure is the explicit goal127- One change request may span multiple files — edit all relevant artifacts together128- When editing `specs/`, follow `.spec-driven/config.yaml` rules and keep each delta file aligned with the corresponding main spec file