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