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.
- package/agents/gsd-debugger.md +20 -1
- package/agents/gsd-executor.md +31 -0
- package/agents/gsd-phase-researcher.md +14 -4
- package/agents/gsd-planner.md +19 -0
- package/agents/gsd-project-researcher.md +5 -11
- package/agents/gsd-research-synthesizer.md +9 -0
- package/command/gsd/add-todo.md +11 -0
- package/command/gsd/audit-milestone.md +21 -1
- package/command/gsd/check-todos.md +11 -0
- package/command/gsd/debug.md +21 -0
- package/command/gsd/discuss-phase.md +7 -1
- package/command/gsd/execute-phase.md +41 -5
- package/command/gsd/help.md +105 -0
- package/command/gsd/new-milestone.md +268 -263
- package/command/gsd/new-project.md +118 -9
- package/command/gsd/pause-work.md +11 -0
- package/command/gsd/plan-milestone-gaps.md +11 -0
- package/command/gsd/plan-phase.md +77 -26
- package/command/gsd/progress.md +9 -0
- package/command/gsd/quick.md +309 -0
- package/command/gsd/remove-phase.md +11 -0
- package/command/gsd/research-phase.md +22 -1
- package/command/gsd/resume-work.md +1 -0
- package/command/gsd/set-profile.md +106 -0
- package/command/gsd/settings.md +136 -0
- package/command/gsd/update.md +2 -2
- package/command/gsd/whats-new.md +3 -3
- package/get-shit-done/references/checkpoints.md +318 -28
- package/get-shit-done/references/model-profiles.md +73 -0
- package/get-shit-done/references/planning-config.md +94 -0
- package/get-shit-done/references/verification-patterns.md +17 -0
- package/get-shit-done/templates/phase-prompt.md +18 -27
- package/get-shit-done/workflows/complete-milestone.md +11 -0
- package/get-shit-done/workflows/diagnose-issues.md +11 -0
- package/get-shit-done/workflows/discovery-phase.md +11 -10
- package/get-shit-done/workflows/discuss-phase.md +11 -0
- package/get-shit-done/workflows/execute-phase.md +68 -9
- package/get-shit-done/workflows/execute-plan.md +47 -4
- package/get-shit-done/workflows/map-codebase.md +35 -2
- package/get-shit-done/workflows/resume-project.md +4 -0
- package/get-shit-done/workflows/transition.md +2 -2
- package/get-shit-done/workflows/verify-phase.md +2 -3
- package/get-shit-done/workflows/verify-work.md +33 -0
- 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"
|
|
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` —
|
|
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:
|
|
50
|
+
## Phase 1: Load Context
|
|
54
51
|
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
```
|
|
59
|
+
**If MILESTONE-CONTEXT.md exists:**
|
|
60
|
+
- Use features and scope from discuss-milestone
|
|
61
|
+
- Present summary for confirmation
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
76
|
-
If "Continue anyway": Continue to Phase 2
|
|
69
|
+
## Phase 3: Determine Milestone Version
|
|
77
70
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
|
75
|
+
## Phase 4: Update PROJECT.md
|
|
85
76
|
|
|
86
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
100
|
-
- [From MILESTONES.md]
|
|
101
|
-
- [From MILESTONES.md]
|
|
102
|
-
- [From MILESTONES.md]
|
|
90
|
+
Update Active requirements section with new goals.
|
|
103
91
|
|
|
104
|
-
|
|
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
|
|
94
|
+
## Phase 5: Update STATE.md
|
|
112
95
|
|
|
113
|
-
|
|
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
|
-
|
|
105
|
+
Keep Accumulated Context section (decisions, blockers) from previous milestone.
|
|
126
106
|
|
|
127
|
-
|
|
107
|
+
## Phase 6: Cleanup and Commit
|
|
128
108
|
|
|
129
|
-
|
|
109
|
+
Delete MILESTONE-CONTEXT.md if exists (consumed).
|
|
130
110
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
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
|
-
|
|
117
|
+
If `COMMIT_PLANNING_DOCS=false`: Skip git operations
|
|
174
118
|
|
|
175
|
-
|
|
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
|
-
|
|
178
|
-
## Current Milestone: v[X.Y] [Name]
|
|
125
|
+
## Phase 6.5: Resolve Model Profile
|
|
179
126
|
|
|
180
|
-
|
|
127
|
+
read model profile for agent spawning:
|
|
181
128
|
|
|
182
|
-
|
|
183
|
-
- [
|
|
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
|
-
|
|
189
|
-
|
|
190
|
-
Update "Last updated" footer.
|
|
133
|
+
Default to "balanced" if not set.
|
|
191
134
|
|
|
192
|
-
**
|
|
135
|
+
**Model lookup table:**
|
|
193
136
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
200
|
-
EOF
|
|
201
|
-
)"
|
|
202
|
-
```
|
|
143
|
+
Store resolved models for use in Task calls below.
|
|
203
144
|
|
|
204
|
-
## Phase
|
|
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
|
|
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 [
|
|
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 [
|
|
184
|
+
Project Research — Stack dimension for [new features].
|
|
246
185
|
</research_type>
|
|
247
186
|
|
|
248
187
|
<milestone_context>
|
|
249
|
-
|
|
188
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
250
189
|
|
|
251
|
-
|
|
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
|
|
197
|
+
What stack additions/changes are needed for [new features]?
|
|
256
198
|
</question>
|
|
257
199
|
|
|
258
200
|
<project_context>
|
|
259
|
-
[PROJECT.md summary -
|
|
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
|
-
-
|
|
266
|
-
- What NOT to
|
|
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 [
|
|
225
|
+
Project Research — Features dimension for [new features].
|
|
278
226
|
</research_type>
|
|
279
227
|
|
|
280
228
|
<milestone_context>
|
|
281
|
-
|
|
229
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
282
230
|
|
|
283
|
-
|
|
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
|
-
|
|
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 [
|
|
266
|
+
Project Research — Architecture dimension for [new features].
|
|
310
267
|
</research_type>
|
|
311
268
|
|
|
312
269
|
<milestone_context>
|
|
313
|
-
|
|
270
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
314
271
|
|
|
315
|
-
|
|
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
|
|
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
|
-
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
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 [
|
|
308
|
+
Project Research — Pitfalls dimension for [new features].
|
|
342
309
|
</research_type>
|
|
343
310
|
|
|
344
311
|
<milestone_context>
|
|
345
|
-
|
|
312
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
346
313
|
|
|
347
|
-
|
|
314
|
+
Focus on common mistakes when ADDING these features to an existing system.
|
|
348
315
|
</milestone_context>
|
|
349
316
|
|
|
350
317
|
<question>
|
|
351
|
-
What
|
|
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
|
-
**
|
|
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
|
|
384
|
+
**If "Skip research":** Continue to Phase 8.
|
|
412
385
|
|
|
413
|
-
## Phase
|
|
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
|
-
-
|
|
427
|
-
- Validated requirements (what already
|
|
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 [
|
|
407
|
+
Here are the features for [new capabilities]:
|
|
436
408
|
|
|
437
409
|
## [Category 1]
|
|
438
410
|
**Table stakes:**
|
|
439
|
-
-
|
|
440
|
-
-
|
|
411
|
+
- Feature A
|
|
412
|
+
- Feature B
|
|
441
413
|
|
|
442
414
|
**Differentiators:**
|
|
443
|
-
-
|
|
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
|
|
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
|
-
- "
|
|
445
|
+
- "[Feature 3]" — [brief description]
|
|
446
|
+
- "None for this milestone" — Defer entire category
|
|
473
447
|
|
|
474
448
|
Track responses:
|
|
475
|
-
- Selected features →
|
|
476
|
-
- Unselected table stakes →
|
|
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
|
-
-
|
|
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,
|
|
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
|
|
482
|
+
**Present full requirements list:**
|
|
511
483
|
|
|
512
484
|
Show every requirement (not counts) for user confirmation:
|
|
513
485
|
|
|
514
486
|
```
|
|
515
|
-
##
|
|
487
|
+
## Milestone v[X.Y] Requirements
|
|
516
488
|
|
|
517
|
-
### [Category]
|
|
518
|
-
- [ ] **
|
|
519
|
-
- [ ] **
|
|
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
|
|
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
|
-
**
|
|
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
|
-
|
|
562
|
-
|
|
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
|
-
**
|
|
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.
|
|
589
|
-
2.
|
|
590
|
-
3.
|
|
591
|
-
4.
|
|
592
|
-
5.
|
|
593
|
-
6.
|
|
594
|
-
|
|
595
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
637
|
-
|
|
656
|
+
[N]. [phase-name]: [requirements covered]
|
|
657
|
+
[N+1]. [phase-name]: [requirements covered]
|
|
638
658
|
...
|
|
639
659
|
|
|
640
|
-
All
|
|
660
|
+
All milestone requirements mapped to phases.
|
|
641
661
|
EOF
|
|
642
662
|
)"
|
|
643
663
|
```
|
|
644
664
|
|
|
645
|
-
## Phase
|
|
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
|
-
- [ ]
|
|
703
|
-
- [ ]
|
|
704
|
-
- [ ]
|
|
705
|
-
- [ ]
|
|
706
|
-
- [ ]
|
|
707
|
-
- [ ]
|
|
708
|
-
- [ ]
|
|
709
|
-
- [ ]
|
|
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
|
|
714
|
-
- [ ]
|
|
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>
|