gsd-opencode 1.6.0 → 1.9.0

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.
Files changed (44) hide show
  1. package/agents/gsd-debugger.md +20 -1
  2. package/agents/gsd-executor.md +31 -0
  3. package/agents/gsd-phase-researcher.md +14 -4
  4. package/agents/gsd-planner.md +19 -0
  5. package/agents/gsd-project-researcher.md +5 -11
  6. package/agents/gsd-research-synthesizer.md +9 -0
  7. package/command/gsd/add-todo.md +11 -0
  8. package/command/gsd/audit-milestone.md +21 -1
  9. package/command/gsd/check-todos.md +11 -0
  10. package/command/gsd/debug.md +21 -0
  11. package/command/gsd/discuss-phase.md +7 -1
  12. package/command/gsd/execute-phase.md +41 -5
  13. package/command/gsd/help.md +105 -0
  14. package/command/gsd/new-milestone.md +268 -263
  15. package/command/gsd/new-project.md +118 -9
  16. package/command/gsd/pause-work.md +11 -0
  17. package/command/gsd/plan-milestone-gaps.md +11 -0
  18. package/command/gsd/plan-phase.md +77 -26
  19. package/command/gsd/progress.md +9 -0
  20. package/command/gsd/quick.md +309 -0
  21. package/command/gsd/remove-phase.md +11 -0
  22. package/command/gsd/research-phase.md +22 -1
  23. package/command/gsd/resume-work.md +1 -0
  24. package/command/gsd/set-profile.md +106 -0
  25. package/command/gsd/settings.md +136 -0
  26. package/command/gsd/update.md +2 -2
  27. package/command/gsd/whats-new.md +3 -3
  28. package/get-shit-done/references/checkpoints.md +318 -28
  29. package/get-shit-done/references/model-profiles.md +73 -0
  30. package/get-shit-done/references/planning-config.md +94 -0
  31. package/get-shit-done/references/verification-patterns.md +17 -0
  32. package/get-shit-done/templates/phase-prompt.md +18 -27
  33. package/get-shit-done/workflows/complete-milestone.md +11 -0
  34. package/get-shit-done/workflows/diagnose-issues.md +11 -0
  35. package/get-shit-done/workflows/discovery-phase.md +11 -10
  36. package/get-shit-done/workflows/discuss-phase.md +11 -0
  37. package/get-shit-done/workflows/execute-phase.md +68 -9
  38. package/get-shit-done/workflows/execute-plan.md +47 -4
  39. package/get-shit-done/workflows/map-codebase.md +35 -2
  40. package/get-shit-done/workflows/resume-project.md +4 -0
  41. package/get-shit-done/workflows/transition.md +2 -2
  42. package/get-shit-done/workflows/verify-phase.md +2 -3
  43. package/get-shit-done/workflows/verify-work.md +33 -0
  44. package/package.json +1 -1
@@ -6,38 +6,33 @@ tools:
6
6
  - read
7
7
  - write
8
8
  - bash
9
+
9
10
  - question
10
- - glob
11
11
  ---
12
12
 
13
13
  <objective>
14
-
15
14
  Start a new milestone through unified flow: questioning → research (optional) → requirements → roadmap.
16
15
 
17
- This is the brownfield equivalent of new-project. The project exists, PROJECT.md has history. This command gathers "what's next" and takes you through the full cycle.
16
+ This is the brownfield equivalent of new-project. The project exists, PROJECT.md has history. This command gathers "what's next", updates PROJECT.md, then continues through the full requirements → roadmap cycle.
18
17
 
19
18
  **Creates/Updates:**
20
19
  - `.planning/PROJECT.md` — updated with new milestone goals
21
- - `.planning/research/` — domain research (optional)
22
- - `.planning/REQUIREMENTS.md` — scoped requirements
23
- - `.planning/ROADMAP.md` — phase structure
24
- - `.planning/STATE.md` — updated project memory
20
+ - `.planning/research/` — domain research (optional, focuses on NEW features)
21
+ - `.planning/REQUIREMENTS.md` — scoped requirements for this milestone
22
+ - `.planning/ROADMAP.md` — phase structure (continues numbering)
23
+ - `.planning/STATE.md` — reset for new milestone
25
24
 
26
25
  **After this command:** Run `/gsd-plan-phase [N]` to start execution.
27
-
28
26
  </objective>
29
27
 
30
28
  <execution_context>
31
-
32
29
  @~/.config/opencode/get-shit-done/references/questioning.md
33
30
  @~/.config/opencode/get-shit-done/references/ui-brand.md
34
31
  @~/.config/opencode/get-shit-done/templates/project.md
35
32
  @~/.config/opencode/get-shit-done/templates/requirements.md
36
-
37
33
  </execution_context>
38
34
 
39
35
  <context>
40
-
41
36
  Milestone name: $ARGUMENTS (optional - will prompt if not provided)
42
37
 
43
38
  **Load project context:**
@@ -46,169 +41,115 @@ Milestone name: $ARGUMENTS (optional - will prompt if not provided)
46
41
  @.planning/MILESTONES.md
47
42
  @.planning/config.json
48
43
 
44
+ **Load milestone context (if exists, from /gsd-discuss-milestone):**
45
+ @.planning/MILESTONE-CONTEXT.md
49
46
  </context>
50
47
 
51
48
  <process>
52
49
 
53
- ## Phase 1: Validate
50
+ ## Phase 1: Load Context
54
51
 
55
- **MANDATORY FIRST STEP Execute these checks before ANY user interaction:**
52
+ - read PROJECT.md (existing project, Validated requirements, decisions)
53
+ - read MILESTONES.md (what shipped previously)
54
+ - read STATE.md (pending todos, blockers)
55
+ - Check for MILESTONE-CONTEXT.md (from /gsd-discuss-milestone)
56
56
 
57
- 1. **Verify project exists:**
58
- ```bash
59
- [ -f .planning/PROJECT.md ] || { echo "ERROR: No PROJECT.md. Run /gsd-new-project first."; exit 1; }
60
- ```
57
+ ## Phase 2: Gather Milestone Goals
61
58
 
62
- 2. **Check for active milestone (ROADMAP.md exists):**
63
- ```bash
64
- [ -f .planning/ROADMAP.md ] && echo "ACTIVE_MILESTONE" || echo "READY_FOR_NEW"
65
- ```
59
+ **If MILESTONE-CONTEXT.md exists:**
60
+ - Use features and scope from discuss-milestone
61
+ - Present summary for confirmation
66
62
 
67
- **If ACTIVE_MILESTONE:**
68
- Use question:
69
- - header: "Active Milestone"
70
- - question: "A milestone is in progress. What would you like to do?"
71
- - options:
72
- - "Complete current first" — Run /gsd-complete-milestone
73
- - "Continue anyway" — Start new milestone (will archive current)
63
+ **If no context file:**
64
+ - Present what shipped in last milestone
65
+ - Ask: "What do you want to build next?"
66
+ - Use question to explore features
67
+ - Probe for priorities, constraints, scope
74
68
 
75
- If "Complete current first": Exit with routing to `/gsd-complete-milestone`
76
- If "Continue anyway": Continue to Phase 2
69
+ ## Phase 3: Determine Milestone Version
77
70
 
78
- 3. **Load previous milestone context:**
79
- ```bash
80
- cat .planning/MILESTONES.md 2>/dev/null || echo "NO_MILESTONES"
81
- cat .planning/STATE.md
82
- ```
71
+ - Parse last version from MILESTONES.md
72
+ - Suggest next version (v1.0 → v1.1, or v2.0 for major)
73
+ - Confirm with user
83
74
 
84
- ## Phase 2: Present Context
75
+ ## Phase 4: Update PROJECT.md
85
76
 
86
- **Display stage banner:**
77
+ Add/update these sections:
87
78
 
88
- ```
89
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
90
- GSD ► NEW MILESTONE
91
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
- ```
79
+ ```markdown
80
+ ## Current Milestone: v[X.Y] [Name]
93
81
 
94
- **Present what shipped:**
82
+ **Goal:** [One sentence describing milestone focus]
95
83
 
84
+ **Target features:**
85
+ - [Feature 1]
86
+ - [Feature 2]
87
+ - [Feature 3]
96
88
  ```
97
- Last milestone: v[X.Y] [Name] (shipped [DATE])
98
89
 
99
- Key accomplishments:
100
- - [From MILESTONES.md]
101
- - [From MILESTONES.md]
102
- - [From MILESTONES.md]
90
+ Update Active requirements section with new goals.
103
91
 
104
- Validated requirements:
105
- - [From PROJECT.md Validated section]
106
-
107
- Pending todos:
108
- - [From STATE.md if any]
109
- ```
92
+ Update "Last updated" footer.
110
93
 
111
- ## Phase 3: Deep Questioning
94
+ ## Phase 5: Update STATE.md
112
95
 
113
- **Display stage banner:**
96
+ ```markdown
97
+ ## Current Position
114
98
 
99
+ Phase: Not started (defining requirements)
100
+ Plan: —
101
+ Status: Defining requirements
102
+ Last activity: [today] — Milestone v[X.Y] started
115
103
  ```
116
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
117
- GSD ► QUESTIONING
118
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
119
- ```
120
-
121
- **Open the conversation:**
122
-
123
- Ask inline (freeform, NOT question):
124
104
 
125
- "What do you want to build next?"
105
+ Keep Accumulated Context section (decisions, blockers) from previous milestone.
126
106
 
127
- Wait for their response. This gives you the context needed to ask intelligent follow-up questions.
107
+ ## Phase 6: Cleanup and Commit
128
108
 
129
- **Follow the thread:**
109
+ Delete MILESTONE-CONTEXT.md if exists (consumed).
130
110
 
131
- Based on what they said, ask follow-up questions that dig into their response. Use question with options that probe what they mentioned — interpretations, clarifications, concrete examples.
132
-
133
- Keep following threads. Each answer opens new threads to explore. Ask about:
134
- - What excited them
135
- - What problem sparked this
136
- - What they mean by vague terms
137
- - What it would actually look like
138
- - What's already decided
139
-
140
- Consult `questioning.md` for techniques:
141
- - Challenge vagueness
142
- - Make abstract concrete
143
- - Surface assumptions
144
- - Find edges
145
- - Reveal motivation
146
-
147
- **Decision gate:**
148
-
149
- When you could update PROJECT.md with clear new goals, use question:
150
-
151
- - header: "Ready?"
152
- - question: "I think I understand what you're after. Ready to update PROJECT.md?"
153
- - options:
154
- - "Update PROJECT.md" — Let's move forward
155
- - "Keep exploring" — I want to share more / ask me more
156
-
157
- If "Keep exploring" — ask what they want to add, or identify gaps and probe naturally.
158
-
159
- Loop until "Update PROJECT.md" selected.
160
-
161
- ## Phase 4: Determine Milestone Version
162
-
163
- Parse last version from MILESTONES.md and suggest next:
164
-
165
- Use question:
166
- - header: "Version"
167
- - question: "What version is this milestone?"
168
- - options:
169
- - "v[X.Y+0.1] (patch)" — Minor update: [suggested name]
170
- - "v[X+1].0 (major)" — Major release
171
- - "Custom" — I'll specify
111
+ Check planning config:
112
+ ```bash
113
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
114
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
115
+ ```
172
116
 
173
- ## Phase 5: Update PROJECT.md
117
+ If `COMMIT_PLANNING_DOCS=false`: Skip git operations
174
118
 
175
- Update `.planning/PROJECT.md` with new milestone section:
119
+ If `COMMIT_PLANNING_DOCS=true` (default):
120
+ ```bash
121
+ git add .planning/PROJECT.md .planning/STATE.md
122
+ git commit -m "docs: start milestone v[X.Y] [Name]"
123
+ ```
176
124
 
177
- ```markdown
178
- ## Current Milestone: v[X.Y] [Name]
125
+ ## Phase 6.5: Resolve Model Profile
179
126
 
180
- **Goal:** [One sentence describing milestone focus]
127
+ read model profile for agent spawning:
181
128
 
182
- **Target features:**
183
- - [Feature 1]
184
- - [Feature 2]
185
- - [Feature 3]
129
+ ```bash
130
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
186
131
  ```
187
132
 
188
- Update Active requirements section with new goals (keep Validated section intact).
189
-
190
- Update "Last updated" footer.
133
+ Default to "balanced" if not set.
191
134
 
192
- **Commit PROJECT.md:**
135
+ **Model lookup table:**
193
136
 
194
- ```bash
195
- git add .planning/PROJECT.md
196
- git commit -m "$(cat <<'EOF'
197
- docs: start milestone v[X.Y] [Name]
137
+ | Agent | quality | balanced | budget |
138
+ |-------|---------|----------|--------|
139
+ | gsd-project-researcher | opus | sonnet | haiku |
140
+ | gsd-research-synthesizer | sonnet | sonnet | haiku |
141
+ | gsd-roadmapper | opus | sonnet | sonnet |
198
142
 
199
- [One-liner describing milestone focus]
200
- EOF
201
- )"
202
- ```
143
+ Store resolved models for use in Task calls below.
203
144
 
204
- ## Phase 6: Research Decision
145
+ ## Phase 7: Research Decision
205
146
 
206
147
  Use question:
207
148
  - header: "Research"
208
- - question: "Research the domain ecosystem before defining requirements?"
149
+ - question: "Research the domain ecosystem for new features before defining requirements?"
209
150
  - options:
210
- - "Research first (Recommended)" — Discover patterns, expected features, architecture
211
- - "Skip research" — I know this domain well, go straight to requirements
151
+ - "Research first (Recommended)" — Discover patterns, expected features, architecture for NEW capabilities
152
+ - "Skip research" — I know what I need, go straight to requirements
212
153
 
213
154
  **If "Research first":**
214
155
 
@@ -218,7 +159,7 @@ Display stage banner:
218
159
  GSD ► RESEARCHING
219
160
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
220
161
 
221
- Researching [domain] ecosystem...
162
+ Researching [new features] ecosystem...
222
163
  ```
223
164
 
224
165
  Create research directory:
@@ -226,133 +167,159 @@ Create research directory:
226
167
  mkdir -p .planning/research
227
168
  ```
228
169
 
229
- **Milestone context is "subsequent"** — Research focuses on new features, not re-researching validated requirements.
230
-
231
170
  Display spawning indicator:
232
171
  ```
233
172
  ◆ Spawning 4 researchers in parallel...
234
- → Stack research
173
+ → Stack research (for new features)
235
174
  → Features research
236
- → Architecture research
175
+ → Architecture research (integration)
237
176
  → Pitfalls research
238
177
  ```
239
178
 
240
- Spawn 4 parallel gsd-project-researcher agents with context:
179
+ Spawn 4 parallel gsd-project-researcher agents with milestone-aware context:
241
180
 
242
181
  ```
243
182
  Task(prompt="
244
183
  <research_type>
245
- Project Research — Stack dimension for [domain].
184
+ Project Research — Stack dimension for [new features].
246
185
  </research_type>
247
186
 
248
187
  <milestone_context>
249
- Subsequent milestone (v[X.Y]).
188
+ SUBSEQUENT MILESTONE — Adding [target features] to existing app.
250
189
 
251
- Research what's needed to add [target features] to an existing [domain] app. Don't re-research the existing system.
190
+ Existing validated capabilities (DO NOT re-research):
191
+ [List from PROJECT.md Validated requirements]
192
+
193
+ Focus ONLY on what's needed for the NEW features.
252
194
  </milestone_context>
253
195
 
254
196
  <question>
255
- What's needed to add [target features] to [domain]?
197
+ What stack additions/changes are needed for [new features]?
256
198
  </question>
257
199
 
258
200
  <project_context>
259
- [PROJECT.md summary - core value, validated requirements, new goals]
201
+ [PROJECT.md summary - current state, new milestone goals]
260
202
  </project_context>
261
203
 
262
204
  <downstream_consumer>
263
205
  Your STACK.md feeds into roadmap creation. Be prescriptive:
264
- - Specific libraries with versions
265
- - Clear rationale for each choice
266
- - What NOT to use and why
206
+ - Specific libraries with versions for NEW capabilities
207
+ - Integration points with existing stack
208
+ - What NOT to add and why
267
209
  </downstream_consumer>
268
210
 
211
+ <quality_gate>
212
+ - [ ] Versions are current (verify with Context7/official docs, not training data)
213
+ - [ ] Rationale explains WHY, not just WHAT
214
+ - [ ] Integration with existing stack considered
215
+ </quality_gate>
216
+
269
217
  <output>
270
218
  write to: .planning/research/STACK.md
271
219
  Use template: ~/.config/opencode/get-shit-done/templates/research-project/STACK.md
272
220
  </output>
273
- ", subagent_type="gsd-project-researcher", description="Stack research")
221
+ ", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Stack research")
274
222
 
275
223
  Task(prompt="
276
224
  <research_type>
277
- Project Research — Features dimension for [domain].
225
+ Project Research — Features dimension for [new features].
278
226
  </research_type>
279
227
 
280
228
  <milestone_context>
281
- Subsequent milestone (v[X.Y]).
229
+ SUBSEQUENT MILESTONE — Adding [target features] to existing app.
282
230
 
283
- How do [target features] typically work? What's expected behavior?
231
+ Existing features (already built):
232
+ [List from PROJECT.md Validated requirements]
233
+
234
+ Focus on how [new features] typically work, expected behavior.
284
235
  </milestone_context>
285
236
 
286
237
  <question>
287
- What features are expected for [target features]?
238
+ How do [target features] typically work? What's expected behavior?
288
239
  </question>
289
240
 
290
241
  <project_context>
291
- [PROJECT.md summary]
242
+ [PROJECT.md summary - new milestone goals]
292
243
  </project_context>
293
244
 
294
245
  <downstream_consumer>
295
246
  Your FEATURES.md feeds into requirements definition. Categorize clearly:
296
- - Table stakes (must have)
247
+ - Table stakes (must have for these features)
297
248
  - Differentiators (competitive advantage)
298
249
  - Anti-features (things to deliberately NOT build)
299
250
  </downstream_consumer>
300
251
 
252
+ <quality_gate>
253
+ - [ ] Categories are clear (table stakes vs differentiators vs anti-features)
254
+ - [ ] Complexity noted for each feature
255
+ - [ ] Dependencies on existing features identified
256
+ </quality_gate>
257
+
301
258
  <output>
302
259
  write to: .planning/research/FEATURES.md
303
260
  Use template: ~/.config/opencode/get-shit-done/templates/research-project/FEATURES.md
304
261
  </output>
305
- ", subagent_type="gsd-project-researcher", description="Features research")
262
+ ", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Features research")
306
263
 
307
264
  Task(prompt="
308
265
  <research_type>
309
- Project Research — Architecture dimension for [domain].
266
+ Project Research — Architecture dimension for [new features].
310
267
  </research_type>
311
268
 
312
269
  <milestone_context>
313
- Subsequent milestone (v[X.Y]).
270
+ SUBSEQUENT MILESTONE — Adding [target features] to existing app.
314
271
 
315
- How do [target features] integrate with existing [domain] architecture?
272
+ Existing architecture:
273
+ [Summary from PROJECT.md or codebase map]
274
+
275
+ Focus on how [new features] integrate with existing architecture.
316
276
  </milestone_context>
317
277
 
318
278
  <question>
319
- How should [target features] integrate with the existing system?
279
+ How do [target features] integrate with existing [domain] architecture?
320
280
  </question>
321
281
 
322
282
  <project_context>
323
- [PROJECT.md summary]
283
+ [PROJECT.md summary - current architecture, new features]
324
284
  </project_context>
325
285
 
326
286
  <downstream_consumer>
327
287
  Your ARCHITECTURE.md informs phase structure in roadmap. Include:
328
- - Component boundaries (what talks to what)
329
- - Data flow (how information moves)
330
- - Suggested build order (dependencies between components)
288
+ - Integration points with existing components
289
+ - New components needed
290
+ - Data flow changes
291
+ - Suggested build order
331
292
  </downstream_consumer>
332
293
 
294
+ <quality_gate>
295
+ - [ ] Integration points clearly identified
296
+ - [ ] New vs modified components explicit
297
+ - [ ] Build order considers existing dependencies
298
+ </quality_gate>
299
+
333
300
  <output>
334
301
  write to: .planning/research/ARCHITECTURE.md
335
302
  Use template: ~/.config/opencode/get-shit-done/templates/research-project/ARCHITECTURE.md
336
303
  </output>
337
- ", subagent_type="gsd-project-researcher", description="Architecture research")
304
+ ", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Architecture research")
338
305
 
339
306
  Task(prompt="
340
307
  <research_type>
341
- Project Research — Pitfalls dimension for [domain].
308
+ Project Research — Pitfalls dimension for [new features].
342
309
  </research_type>
343
310
 
344
311
  <milestone_context>
345
- Subsequent milestone (v[X.Y]).
312
+ SUBSEQUENT MILESTONE — Adding [target features] to existing app.
346
313
 
347
- What are common mistakes when adding [target features] to [domain]?
314
+ Focus on common mistakes when ADDING these features to an existing system.
348
315
  </milestone_context>
349
316
 
350
317
  <question>
351
- What pitfalls should we avoid when adding [target features]?
318
+ What are common mistakes when adding [target features] to [domain]?
352
319
  </question>
353
320
 
354
321
  <project_context>
355
- [PROJECT.md summary]
322
+ [PROJECT.md summary - current state, new features]
356
323
  </project_context>
357
324
 
358
325
  <downstream_consumer>
@@ -362,14 +329,20 @@ Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
362
329
  - Which phase should address it
363
330
  </downstream_consumer>
364
331
 
332
+ <quality_gate>
333
+ - [ ] Pitfalls are specific to adding these features (not generic)
334
+ - [ ] Integration pitfalls with existing system covered
335
+ - [ ] Prevention strategies are actionable
336
+ </quality_gate>
337
+
365
338
  <output>
366
339
  write to: .planning/research/PITFALLS.md
367
340
  Use template: ~/.config/opencode/get-shit-done/templates/research-project/PITFALLS.md
368
341
  </output>
369
- ", subagent_type="gsd-project-researcher", description="Pitfalls research")
342
+ ", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Pitfalls research")
370
343
  ```
371
344
 
372
- After all 4 agents complete, spawn synthesizer:
345
+ After all 4 agents complete, spawn synthesizer to create SUMMARY.md:
373
346
 
374
347
  ```
375
348
  Task(prompt="
@@ -390,10 +363,10 @@ write to: .planning/research/SUMMARY.md
390
363
  Use template: ~/.config/opencode/get-shit-done/templates/research-project/SUMMARY.md
391
364
  Commit after writing.
392
365
  </output>
393
- ", subagent_type="gsd-research-synthesizer", description="Synthesize research")
366
+ ", subagent_type="gsd-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
394
367
  ```
395
368
 
396
- Display research complete:
369
+ Display research complete banner and key findings:
397
370
  ```
398
371
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
399
372
  GSD ► RESEARCH COMPLETE ✓
@@ -401,16 +374,16 @@ Display research complete:
401
374
 
402
375
  ## Key Findings
403
376
 
404
- **Stack:** [from SUMMARY.md]
405
- **Table Stakes:** [from SUMMARY.md]
377
+ **Stack additions:** [from SUMMARY.md]
378
+ **New feature table stakes:** [from SUMMARY.md]
406
379
  **Watch Out For:** [from SUMMARY.md]
407
380
 
408
381
  Files: `.planning/research/`
409
382
  ```
410
383
 
411
- **If "Skip research":** Continue to Phase 7.
384
+ **If "Skip research":** Continue to Phase 8.
412
385
 
413
- ## Phase 7: Define Requirements
386
+ ## Phase 8: Define Requirements
414
387
 
415
388
  Display stage banner:
416
389
  ```
@@ -423,24 +396,24 @@ Display stage banner:
423
396
 
424
397
  read PROJECT.md and extract:
425
398
  - Core value (the ONE thing that must work)
426
- - New milestone goals
427
- - Validated requirements (what already works)
428
- - Stated constraints
399
+ - Current milestone goals
400
+ - Validated requirements (what already exists)
429
401
 
430
402
  **If research exists:** read research/FEATURES.md and extract feature categories.
431
403
 
432
404
  **Present features by category:**
433
405
 
434
406
  ```
435
- Here are the features for [milestone focus]:
407
+ Here are the features for [new capabilities]:
436
408
 
437
409
  ## [Category 1]
438
410
  **Table stakes:**
439
- - [Feature]
440
- - [Feature]
411
+ - Feature A
412
+ - Feature B
441
413
 
442
414
  **Differentiators:**
443
- - [Feature]
415
+ - Feature C
416
+ - Feature D
444
417
 
445
418
  **Research notes:** [any relevant notes]
446
419
 
@@ -452,7 +425,7 @@ Here are the features for [milestone focus]:
452
425
 
453
426
  **If no research:** Gather requirements through conversation instead.
454
427
 
455
- Ask: "What are the main things users need to be able to do in this milestone?"
428
+ Ask: "What are the main things users need to be able to do with [new features]?"
456
429
 
457
430
  For each capability mentioned:
458
431
  - Ask clarifying questions to make it specific
@@ -469,11 +442,12 @@ For each category, use question:
469
442
  - options:
470
443
  - "[Feature 1]" — [brief description]
471
444
  - "[Feature 2]" — [brief description]
472
- - "None for this milestone" — Defer
445
+ - "[Feature 3]" — [brief description]
446
+ - "None for this milestone" — Defer entire category
473
447
 
474
448
  Track responses:
475
- - Selected features → v1 requirements
476
- - Unselected table stakes → v2 (users expect these)
449
+ - Selected features → this milestone's requirements
450
+ - Unselected table stakes → future milestone
477
451
  - Unselected differentiators → out of scope
478
452
 
479
453
  **Identify gaps:**
@@ -485,38 +459,39 @@ Use question:
485
459
  - "No, research covered it" — Proceed
486
460
  - "Yes, let me add some" — Capture additions
487
461
 
488
- **Validate core value:**
489
-
490
- Cross-check requirements against Core Value from PROJECT.md. If gaps detected, surface them.
491
-
492
462
  **Generate REQUIREMENTS.md:**
493
463
 
494
464
  Create `.planning/REQUIREMENTS.md` with:
495
- - v1 Requirements grouped by category (checkboxes, REQ-IDs)
496
- - v2 Requirements (deferred)
465
+ - v1 Requirements for THIS milestone grouped by category (checkboxes, REQ-IDs)
466
+ - Future Requirements (deferred to later milestones)
497
467
  - Out of Scope (explicit exclusions with reasoning)
498
468
  - Traceability section (empty, filled by roadmap)
499
469
 
500
- **REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, CONTENT-02)
470
+ **REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02)
471
+
472
+ Continue numbering from existing requirements if applicable.
501
473
 
502
474
  **Requirement quality criteria:**
503
475
 
504
476
  Good requirements are:
505
477
  - **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
506
478
  - **User-centric:** "User can X" (not "System does Y")
507
- - **Atomic:** One capability per requirement
479
+ - **Atomic:** One capability per requirement (not "User can login and manage profile")
508
480
  - **Independent:** Minimal dependencies on other requirements
509
481
 
510
- **Present full requirements list for confirmation:**
482
+ **Present full requirements list:**
511
483
 
512
484
  Show every requirement (not counts) for user confirmation:
513
485
 
514
486
  ```
515
- ## v1 Requirements
487
+ ## Milestone v[X.Y] Requirements
516
488
 
517
- ### [Category]
518
- - [ ] **[CAT]-01**: [Requirement description]
519
- - [ ] **[CAT]-02**: [Requirement description]
489
+ ### [Category 1]
490
+ - [ ] **CAT1-01**: User can do X
491
+ - [ ] **CAT1-02**: User can do Y
492
+
493
+ ### [Category 2]
494
+ - [ ] **CAT2-01**: User can do Z
520
495
 
521
496
  [... full list ...]
522
497
 
@@ -529,18 +504,20 @@ If "adjust": Return to scoping.
529
504
 
530
505
  **Commit requirements:**
531
506
 
507
+ Check planning config (same pattern as Phase 6).
508
+
509
+ If committing:
532
510
  ```bash
533
511
  git add .planning/REQUIREMENTS.md
534
512
  git commit -m "$(cat <<'EOF'
535
- docs: define v[X.Y] requirements
513
+ docs: define milestone v[X.Y] requirements
536
514
 
537
515
  [X] requirements across [N] categories
538
- [Y] requirements deferred to v2
539
516
  EOF
540
517
  )"
541
518
  ```
542
519
 
543
- ## Phase 8: Create Roadmap
520
+ ## Phase 9: Create Roadmap
544
521
 
545
522
  Display stage banner:
546
523
  ```
@@ -551,15 +528,10 @@ Display stage banner:
551
528
  ◆ Spawning roadmapper...
552
529
  ```
553
530
 
554
- **Calculate starting phase number:**
555
-
556
- ```bash
557
- # Find highest existing phase number
558
- ls -d .planning/phases/[0-9]*-* 2>/dev/null | sort -V | tail -1 | grep -oE '[0-9]+' | head -1
559
- ```
531
+ **Determine starting phase number:**
560
532
 
561
- If phases exist: New phases start at last + 1
562
- If no phases: Start at Phase 1
533
+ read MILESTONES.md to find the last phase number from previous milestone.
534
+ New phases continue from there (e.g., if v1.0 ended at phase 5, v1.1 starts at phase 6).
563
535
 
564
536
  Spawn gsd-roadmapper agent with context:
565
537
 
@@ -579,22 +551,24 @@ Task(prompt="
579
551
  **Config:**
580
552
  @.planning/config.json
581
553
 
582
- **Starting phase number:** [N]
554
+ **Previous milestone (for phase numbering):**
555
+ @.planning/MILESTONES.md
583
556
 
584
557
  </planning_context>
585
558
 
586
559
  <instructions>
587
- Create roadmap:
588
- 1. Derive phases from requirements (don't impose structure)
589
- 2. Map every v1 requirement to exactly one phase
590
- 3. Derive 2-5 success criteria per phase (observable user behaviors)
591
- 4. Validate 100% coverage
592
- 5. write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
593
- 6. Return ROADMAP CREATED with summary
594
-
595
- write files first, then return.
560
+ Create roadmap for milestone v[X.Y]:
561
+ 1. Start phase numbering from [N] (continues from previous milestone)
562
+ 2. Derive phases from THIS MILESTONE's requirements (don't include validated/existing)
563
+ 3. Map every requirement to exactly one phase
564
+ 4. Derive 2-5 success criteria per phase (observable user behaviors)
565
+ 5. Validate 100% coverage of new requirements
566
+ 6. write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
567
+ 7. Return ROADMAP CREATED with summary
568
+
569
+ write files first, then return. This ensures artifacts persist even if context is lost.
596
570
  </instructions>
597
- ", subagent_type="gsd-roadmapper", description="Create roadmap")
571
+ ", subagent_type="gsd-roadmapper", model="{roadmapper_model}", description="Create roadmap")
598
572
  ```
599
573
 
600
574
  **Handle roadmapper return:**
@@ -606,9 +580,36 @@ write files first, then return.
606
580
 
607
581
  **If `## ROADMAP CREATED`:**
608
582
 
609
- read the created ROADMAP.md and present it inline.
583
+ read the created ROADMAP.md and present it nicely inline:
584
+
585
+ ```
586
+ ---
587
+
588
+ ## Proposed Roadmap
589
+
590
+ **[N] phases** | **[X] requirements mapped** | All milestone requirements covered ✓
591
+
592
+ | # | Phase | Goal | Requirements | Success Criteria |
593
+ |---|-------|------|--------------|------------------|
594
+ | [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
595
+ | [N+1] | [Name] | [Goal] | [REQ-IDs] | [count] |
596
+ ...
597
+
598
+ ### Phase Details
599
+
600
+ **Phase [N]: [Name]**
601
+ Goal: [goal]
602
+ Requirements: [REQ-IDs]
603
+ Success criteria:
604
+ 1. [criterion]
605
+ 2. [criterion]
606
+
607
+ [... continue for all phases ...]
610
608
 
611
- **Ask for approval:**
609
+ ---
610
+ ```
611
+
612
+ **CRITICAL: Ask for approval before committing:**
612
613
 
613
614
  Use question:
614
615
  - header: "Roadmap"
@@ -622,27 +623,46 @@ Use question:
622
623
 
623
624
  **If "Adjust phases":**
624
625
  - Get user's adjustment notes
625
- - Re-spawn roadmapper with revision context
626
- - Loop until approved
626
+ - Re-spawn roadmapper with revision context:
627
+ ```
628
+ Task(prompt="
629
+ <revision>
630
+ User feedback on roadmap:
631
+ [user's notes]
632
+
633
+ Current ROADMAP.md: @.planning/ROADMAP.md
634
+
635
+ Update the roadmap based on feedback. edit files in place.
636
+ Return ROADMAP REVISED with changes made.
637
+ </revision>
638
+ ", subagent_type="gsd-roadmapper", model="{roadmapper_model}", description="Revise roadmap")
639
+ ```
640
+ - Present revised roadmap
641
+ - Loop until user approves
642
+
643
+ **If "Review full file":** Display raw `cat .planning/ROADMAP.md`, then re-ask.
644
+
645
+ **Commit roadmap (after approval):**
627
646
 
628
- **Commit roadmap:**
647
+ Check planning config (same pattern as Phase 6).
629
648
 
649
+ If committing:
630
650
  ```bash
631
651
  git add .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
632
652
  git commit -m "$(cat <<'EOF'
633
- docs: create v[X.Y] roadmap ([N] phases)
653
+ docs: create milestone v[X.Y] roadmap ([N] phases)
634
654
 
635
655
  Phases:
636
- 1. [phase-name]: [requirements covered]
637
- 2. [phase-name]: [requirements covered]
656
+ [N]. [phase-name]: [requirements covered]
657
+ [N+1]. [phase-name]: [requirements covered]
638
658
  ...
639
659
 
640
- All v1 requirements mapped to phases.
660
+ All milestone requirements mapped to phases.
641
661
  EOF
642
662
  )"
643
663
  ```
644
664
 
645
- ## Phase 9: Done
665
+ ## Phase 10: Done
646
666
 
647
667
  Present completion with next steps:
648
668
 
@@ -651,10 +671,10 @@ Present completion with next steps:
651
671
  GSD ► MILESTONE INITIALIZED ✓
652
672
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
653
673
 
654
- **v[X.Y] [Name]**
674
+ **Milestone v[X.Y]: [Name]**
655
675
 
656
676
  | Artifact | Location |
657
- |----------------|-----------------------------
677
+ |----------------|-----------------------------|
658
678
  | Project | `.planning/PROJECT.md` |
659
679
  | Research | `.planning/research/` |
660
680
  | Requirements | `.planning/REQUIREMENTS.md` |
@@ -682,35 +702,20 @@ Present completion with next steps:
682
702
 
683
703
  </process>
684
704
 
685
- <output>
686
-
687
- - `.planning/PROJECT.md` (updated)
688
- - `.planning/research/` (if research selected)
689
- - `STACK.md`
690
- - `FEATURES.md`
691
- - `ARCHITECTURE.md`
692
- - `PITFALLS.md`
693
- - `SUMMARY.md`
694
- - `.planning/REQUIREMENTS.md`
695
- - `.planning/ROADMAP.md`
696
- - `.planning/STATE.md`
697
-
698
- </output>
699
-
700
705
  <success_criteria>
701
-
702
- - [ ] Project validated (PROJECT.md exists)
703
- - [ ] Previous milestone context presented
704
- - [ ] Deep questioning completed (threads followed)
705
- - [ ] Milestone version determined
706
- - [ ] PROJECT.md updated with new milestone goals → **committed**
707
- - [ ] Research completed (if selected) → **committed**
708
- - [ ] Requirements gathered and scoped
709
- - [ ] REQUIREMENTS.md created with REQ-IDs **committed**
710
- - [ ] gsd-roadmapper spawned with context
711
- - [ ] Roadmap files written immediately
706
+ - [ ] PROJECT.md updated with Current Milestone section
707
+ - [ ] STATE.md reset for new milestone
708
+ - [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
709
+ - [ ] Research completed (if selected) — 4 parallel agents spawned, milestone-aware
710
+ - [ ] Requirements gathered (from research or conversation)
711
+ - [ ] User scoped each category
712
+ - [ ] REQUIREMENTS.md created with REQ-IDs
713
+ - [ ] gsd-roadmapper spawned with phase numbering context
714
+ - [ ] Roadmap files written immediately (not draft)
712
715
  - [ ] User feedback incorporated (if any)
713
- - [ ] ROADMAP.md, STATE.md **committed**
714
- - [ ] User knows next step is `/gsd-plan-phase [N]`
716
+ - [ ] ROADMAP.md created with phases continuing from previous milestone
717
+ - [ ] All commits made (if planning docs committed)
718
+ - [ ] User knows next step is `/gsd-discuss-phase [N]`
715
719
 
720
+ **Atomic commits:** Each phase commits its artifacts immediately. If context is lost, artifacts persist.
716
721
  </success_criteria>