claude-cook 1.10.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/LICENSE +21 -0
- package/README.md +607 -0
- package/agents/gsd-codebase-mapper.md +738 -0
- package/agents/gsd-debugger.md +1203 -0
- package/agents/gsd-executor.md +784 -0
- package/agents/gsd-integration-checker.md +423 -0
- package/agents/gsd-phase-researcher.md +641 -0
- package/agents/gsd-plan-checker.md +745 -0
- package/agents/gsd-planner.md +1386 -0
- package/agents/gsd-pm.md +331 -0
- package/agents/gsd-project-researcher.md +865 -0
- package/agents/gsd-research-synthesizer.md +256 -0
- package/agents/gsd-roadmapper.md +605 -0
- package/agents/gsd-verifier.md +778 -0
- package/bin/install.js +1477 -0
- package/commands/gsd/add-phase.md +207 -0
- package/commands/gsd/add-todo.md +193 -0
- package/commands/gsd/audit-milestone.md +277 -0
- package/commands/gsd/check-todos.md +228 -0
- package/commands/gsd/complete-milestone.md +136 -0
- package/commands/gsd/debug.md +169 -0
- package/commands/gsd/discuss-phase.md +86 -0
- package/commands/gsd/execute-phase.md +339 -0
- package/commands/gsd/help.md +545 -0
- package/commands/gsd/insert-phase.md +227 -0
- package/commands/gsd/join-discord.md +18 -0
- package/commands/gsd/list-phase-assumptions.md +50 -0
- package/commands/gsd/map-codebase.md +71 -0
- package/commands/gsd/new-milestone.md +721 -0
- package/commands/gsd/new-project.md +1008 -0
- package/commands/gsd/pause-work.md +134 -0
- package/commands/gsd/plan-milestone-gaps.md +295 -0
- package/commands/gsd/plan-phase.md +525 -0
- package/commands/gsd/pm-check.md +115 -0
- package/commands/gsd/pm-replan.md +102 -0
- package/commands/gsd/pm-start.md +218 -0
- package/commands/gsd/pm-status.md +116 -0
- package/commands/gsd/pm-stop.md +72 -0
- package/commands/gsd/progress.md +415 -0
- package/commands/gsd/quick.md +309 -0
- package/commands/gsd/remove-phase.md +349 -0
- package/commands/gsd/research-phase.md +200 -0
- package/commands/gsd/resume-work.md +40 -0
- package/commands/gsd/set-profile.md +106 -0
- package/commands/gsd/settings.md +151 -0
- package/commands/gsd/update.md +172 -0
- package/commands/gsd/verify-work.md +219 -0
- package/get-shit-done/references/checkpoints.md +1078 -0
- package/get-shit-done/references/continuation-format.md +249 -0
- package/get-shit-done/references/git-integration.md +254 -0
- package/get-shit-done/references/model-profiles.md +73 -0
- package/get-shit-done/references/planning-config.md +189 -0
- package/get-shit-done/references/questioning.md +141 -0
- package/get-shit-done/references/tdd.md +263 -0
- package/get-shit-done/references/ui-brand.md +172 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/vibe-kanban.md +142 -0
- package/get-shit-done/templates/DEBUG.md +159 -0
- package/get-shit-done/templates/UAT.md +247 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +35 -0
- package/get-shit-done/templates/context.md +283 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +567 -0
- package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/get-shit-done/templates/pm-config.md +55 -0
- package/get-shit-done/templates/pm-log.md +27 -0
- package/get-shit-done/templates/project.md +184 -0
- package/get-shit-done/templates/requirements.md +231 -0
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/get-shit-done/templates/research-project/STACK.md +120 -0
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/get-shit-done/templates/research.md +529 -0
- package/get-shit-done/templates/roadmap.md +202 -0
- package/get-shit-done/templates/state.md +205 -0
- package/get-shit-done/templates/summary.md +246 -0
- package/get-shit-done/templates/ticket-map.md +28 -0
- package/get-shit-done/templates/user-setup.md +311 -0
- package/get-shit-done/templates/verification-report.md +322 -0
- package/get-shit-done/workflows/complete-milestone.md +903 -0
- package/get-shit-done/workflows/diagnose-issues.md +231 -0
- package/get-shit-done/workflows/discovery-phase.md +289 -0
- package/get-shit-done/workflows/discuss-phase.md +433 -0
- package/get-shit-done/workflows/execute-phase.md +671 -0
- package/get-shit-done/workflows/execute-plan.md +1844 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/map-codebase.md +322 -0
- package/get-shit-done/workflows/pm-check.md +210 -0
- package/get-shit-done/workflows/pm-dispatch.md +104 -0
- package/get-shit-done/workflows/pm-replan.md +203 -0
- package/get-shit-done/workflows/pm-sync.md +130 -0
- package/get-shit-done/workflows/resume-project.md +307 -0
- package/get-shit-done/workflows/transition.md +556 -0
- package/get-shit-done/workflows/verify-phase.md +628 -0
- package/get-shit-done/workflows/verify-work.md +596 -0
- package/hooks/dist/gsd-check-update.js +61 -0
- package/hooks/dist/gsd-statusline.js +87 -0
- package/package.json +47 -0
- package/scripts/build-hooks.js +42 -0
- package/scripts/pm-loop.sh +155 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:remove-phase
|
|
3
|
+
description: Remove a future phase from roadmap and renumber subsequent phases
|
|
4
|
+
argument-hint: <phase-number>
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Remove an unstarted future phase from the roadmap and renumber all subsequent phases to maintain a clean, linear sequence.
|
|
14
|
+
|
|
15
|
+
Purpose: Clean removal of work you've decided not to do, without polluting context with cancelled/deferred markers.
|
|
16
|
+
Output: Phase deleted, all subsequent phases renumbered, git commit as historical record.
|
|
17
|
+
</objective>
|
|
18
|
+
|
|
19
|
+
<execution_context>
|
|
20
|
+
@.planning/ROADMAP.md
|
|
21
|
+
@.planning/STATE.md
|
|
22
|
+
</execution_context>
|
|
23
|
+
|
|
24
|
+
<process>
|
|
25
|
+
|
|
26
|
+
<step name="parse_arguments">
|
|
27
|
+
Parse the command arguments:
|
|
28
|
+
- Argument is the phase number to remove (integer or decimal)
|
|
29
|
+
- Example: `/gsd:remove-phase 17` → phase = 17
|
|
30
|
+
- Example: `/gsd:remove-phase 16.1` → phase = 16.1
|
|
31
|
+
|
|
32
|
+
If no argument provided:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
ERROR: Phase number required
|
|
36
|
+
Usage: /gsd:remove-phase <phase-number>
|
|
37
|
+
Example: /gsd:remove-phase 17
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Exit.
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
<step name="load_state">
|
|
44
|
+
Load project state:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
cat .planning/STATE.md 2>/dev/null
|
|
48
|
+
cat .planning/ROADMAP.md 2>/dev/null
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Parse current phase number from STATE.md "Current Position" section.
|
|
52
|
+
</step>
|
|
53
|
+
|
|
54
|
+
<step name="validate_phase_exists">
|
|
55
|
+
Verify the target phase exists in ROADMAP.md:
|
|
56
|
+
|
|
57
|
+
1. Search for `### Phase {target}:` heading
|
|
58
|
+
2. If not found:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
ERROR: Phase {target} not found in roadmap
|
|
62
|
+
Available phases: [list phase numbers]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Exit.
|
|
66
|
+
</step>
|
|
67
|
+
|
|
68
|
+
<step name="validate_future_phase">
|
|
69
|
+
Verify the phase is a future phase (not started):
|
|
70
|
+
|
|
71
|
+
1. Compare target phase to current phase from STATE.md
|
|
72
|
+
2. Target must be > current phase number
|
|
73
|
+
|
|
74
|
+
If target <= current phase:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
ERROR: Cannot remove Phase {target}
|
|
78
|
+
|
|
79
|
+
Only future phases can be removed:
|
|
80
|
+
- Current phase: {current}
|
|
81
|
+
- Phase {target} is current or completed
|
|
82
|
+
|
|
83
|
+
To abandon current work, use /gsd:pause-work instead.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Exit.
|
|
87
|
+
|
|
88
|
+
3. Check for SUMMARY.md files in phase directory:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
ls .planning/phases/{target}-*/*-SUMMARY.md 2>/dev/null
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If any SUMMARY.md files exist:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
ERROR: Phase {target} has completed work
|
|
98
|
+
|
|
99
|
+
Found executed plans:
|
|
100
|
+
- {list of SUMMARY.md files}
|
|
101
|
+
|
|
102
|
+
Cannot remove phases with completed work.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Exit.
|
|
106
|
+
</step>
|
|
107
|
+
|
|
108
|
+
<step name="gather_phase_info">
|
|
109
|
+
Collect information about the phase being removed:
|
|
110
|
+
|
|
111
|
+
1. Extract phase name from ROADMAP.md heading: `### Phase {target}: {Name}`
|
|
112
|
+
2. Find phase directory: `.planning/phases/{target}-{slug}/`
|
|
113
|
+
3. Find all subsequent phases (integer and decimal) that need renumbering
|
|
114
|
+
|
|
115
|
+
**Subsequent phase detection:**
|
|
116
|
+
|
|
117
|
+
For integer phase removal (e.g., 17):
|
|
118
|
+
- Find all phases > 17 (integers: 18, 19, 20...)
|
|
119
|
+
- Find all decimal phases >= 17.0 and < 18.0 (17.1, 17.2...) → these become 16.x
|
|
120
|
+
- Find all decimal phases for subsequent integers (18.1, 19.1...) → renumber with their parent
|
|
121
|
+
|
|
122
|
+
For decimal phase removal (e.g., 17.1):
|
|
123
|
+
- Find all decimal phases > 17.1 and < 18 (17.2, 17.3...) → renumber down
|
|
124
|
+
- Integer phases unchanged
|
|
125
|
+
|
|
126
|
+
List all phases that will be renumbered.
|
|
127
|
+
</step>
|
|
128
|
+
|
|
129
|
+
<step name="confirm_removal">
|
|
130
|
+
Present removal summary and confirm:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Removing Phase {target}: {Name}
|
|
134
|
+
|
|
135
|
+
This will:
|
|
136
|
+
- Delete: .planning/phases/{target}-{slug}/
|
|
137
|
+
- Renumber {N} subsequent phases:
|
|
138
|
+
- Phase 18 → Phase 17
|
|
139
|
+
- Phase 18.1 → Phase 17.1
|
|
140
|
+
- Phase 19 → Phase 18
|
|
141
|
+
[etc.]
|
|
142
|
+
|
|
143
|
+
Proceed? (y/n)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Wait for confirmation.
|
|
147
|
+
</step>
|
|
148
|
+
|
|
149
|
+
<step name="delete_phase_directory">
|
|
150
|
+
Delete the target phase directory if it exists:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
if [ -d ".planning/phases/{target}-{slug}" ]; then
|
|
154
|
+
rm -rf ".planning/phases/{target}-{slug}"
|
|
155
|
+
echo "Deleted: .planning/phases/{target}-{slug}/"
|
|
156
|
+
fi
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
If directory doesn't exist, note: "No directory to delete (phase not yet created)"
|
|
160
|
+
</step>
|
|
161
|
+
|
|
162
|
+
<step name="renumber_directories">
|
|
163
|
+
Rename all subsequent phase directories:
|
|
164
|
+
|
|
165
|
+
For each phase directory that needs renumbering (in reverse order to avoid conflicts):
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Example: renaming 18-dashboard to 17-dashboard
|
|
169
|
+
mv ".planning/phases/18-dashboard" ".planning/phases/17-dashboard"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Process in descending order (20→19, then 19→18, then 18→17) to avoid overwriting.
|
|
173
|
+
|
|
174
|
+
Also rename decimal phase directories:
|
|
175
|
+
- `17.1-fix-bug` → `16.1-fix-bug` (if removing integer 17)
|
|
176
|
+
- `17.2-hotfix` → `17.1-hotfix` (if removing decimal 17.1)
|
|
177
|
+
</step>
|
|
178
|
+
|
|
179
|
+
<step name="rename_files_in_directories">
|
|
180
|
+
Rename plan files inside renumbered directories:
|
|
181
|
+
|
|
182
|
+
For each renumbered directory, rename files that contain the phase number:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Inside 17-dashboard (was 18-dashboard):
|
|
186
|
+
mv "18-01-PLAN.md" "17-01-PLAN.md"
|
|
187
|
+
mv "18-02-PLAN.md" "17-02-PLAN.md"
|
|
188
|
+
mv "18-01-SUMMARY.md" "17-01-SUMMARY.md" # if exists
|
|
189
|
+
# etc.
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Also handle CONTEXT.md and DISCOVERY.md (these don't have phase prefixes, so no rename needed).
|
|
193
|
+
</step>
|
|
194
|
+
|
|
195
|
+
<step name="update_roadmap">
|
|
196
|
+
Update ROADMAP.md:
|
|
197
|
+
|
|
198
|
+
1. **Remove the phase section entirely:**
|
|
199
|
+
- Delete from `### Phase {target}:` to the next phase heading (or section end)
|
|
200
|
+
|
|
201
|
+
2. **Remove from phase list:**
|
|
202
|
+
- Delete line `- [ ] **Phase {target}: {Name}**` or similar
|
|
203
|
+
|
|
204
|
+
3. **Remove from Progress table:**
|
|
205
|
+
- Delete the row for Phase {target}
|
|
206
|
+
|
|
207
|
+
4. **Renumber all subsequent phases:**
|
|
208
|
+
- `### Phase 18:` → `### Phase 17:`
|
|
209
|
+
- `- [ ] **Phase 18:` → `- [ ] **Phase 17:`
|
|
210
|
+
- Table rows: `| 18. Dashboard |` → `| 17. Dashboard |`
|
|
211
|
+
- Plan references: `18-01:` → `17-01:`
|
|
212
|
+
|
|
213
|
+
5. **Update dependency references:**
|
|
214
|
+
- `**Depends on:** Phase 18` → `**Depends on:** Phase 17`
|
|
215
|
+
- For the phase that depended on the removed phase:
|
|
216
|
+
- `**Depends on:** Phase 17` (removed) → `**Depends on:** Phase 16`
|
|
217
|
+
|
|
218
|
+
6. **Renumber decimal phases:**
|
|
219
|
+
- `### Phase 17.1:` → `### Phase 16.1:` (if integer 17 removed)
|
|
220
|
+
- Update all references consistently
|
|
221
|
+
|
|
222
|
+
Write updated ROADMAP.md.
|
|
223
|
+
</step>
|
|
224
|
+
|
|
225
|
+
<step name="update_state">
|
|
226
|
+
Update STATE.md:
|
|
227
|
+
|
|
228
|
+
1. **Update total phase count:**
|
|
229
|
+
- `Phase: 16 of 20` → `Phase: 16 of 19`
|
|
230
|
+
|
|
231
|
+
2. **Recalculate progress percentage:**
|
|
232
|
+
- New percentage based on completed plans / new total plans
|
|
233
|
+
|
|
234
|
+
Do NOT add a "Roadmap Evolution" note - the git commit is the record.
|
|
235
|
+
|
|
236
|
+
Write updated STATE.md.
|
|
237
|
+
</step>
|
|
238
|
+
|
|
239
|
+
<step name="update_file_contents">
|
|
240
|
+
Search for and update phase references inside plan files:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Find files that reference the old phase numbers
|
|
244
|
+
grep -r "Phase 18" .planning/phases/17-*/ 2>/dev/null
|
|
245
|
+
grep -r "Phase 19" .planning/phases/18-*/ 2>/dev/null
|
|
246
|
+
# etc.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Update any internal references to reflect new numbering.
|
|
250
|
+
</step>
|
|
251
|
+
|
|
252
|
+
<step name="commit">
|
|
253
|
+
Stage and commit the removal:
|
|
254
|
+
|
|
255
|
+
**Check planning config:**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
259
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
263
|
+
|
|
264
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
git add .planning/
|
|
268
|
+
git commit -m "chore: remove phase {target} ({original-phase-name})"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
The commit message preserves the historical record of what was removed.
|
|
272
|
+
</step>
|
|
273
|
+
|
|
274
|
+
<step name="completion">
|
|
275
|
+
Present completion summary:
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
Phase {target} ({original-name}) removed.
|
|
279
|
+
|
|
280
|
+
Changes:
|
|
281
|
+
- Deleted: .planning/phases/{target}-{slug}/
|
|
282
|
+
- Renumbered: Phases {first-renumbered}-{last-old} → {first-renumbered-1}-{last-new}
|
|
283
|
+
- Updated: ROADMAP.md, STATE.md
|
|
284
|
+
- Committed: chore: remove phase {target} ({original-name})
|
|
285
|
+
|
|
286
|
+
Current roadmap: {total-remaining} phases
|
|
287
|
+
Current position: Phase {current} of {new-total}
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## What's Next
|
|
292
|
+
|
|
293
|
+
Would you like to:
|
|
294
|
+
- `/gsd:progress` — see updated roadmap status
|
|
295
|
+
- Continue with current phase
|
|
296
|
+
- Review roadmap
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
```
|
|
300
|
+
</step>
|
|
301
|
+
|
|
302
|
+
</process>
|
|
303
|
+
|
|
304
|
+
<anti_patterns>
|
|
305
|
+
|
|
306
|
+
- Don't remove completed phases (have SUMMARY.md files)
|
|
307
|
+
- Don't remove current or past phases
|
|
308
|
+
- Don't leave gaps in numbering - always renumber
|
|
309
|
+
- Don't add "removed phase" notes to STATE.md - git commit is the record
|
|
310
|
+
- Don't ask about each decimal phase - just renumber them
|
|
311
|
+
- Don't modify completed phase directories
|
|
312
|
+
</anti_patterns>
|
|
313
|
+
|
|
314
|
+
<edge_cases>
|
|
315
|
+
|
|
316
|
+
**Removing a decimal phase (e.g., 17.1):**
|
|
317
|
+
- Only affects other decimals in same series (17.2 → 17.1, 17.3 → 17.2)
|
|
318
|
+
- Integer phases unchanged
|
|
319
|
+
- Simpler operation
|
|
320
|
+
|
|
321
|
+
**No subsequent phases to renumber:**
|
|
322
|
+
- Removing the last phase (e.g., Phase 20 when that's the end)
|
|
323
|
+
- Just delete and update ROADMAP.md, no renumbering needed
|
|
324
|
+
|
|
325
|
+
**Phase directory doesn't exist:**
|
|
326
|
+
- Phase may be in ROADMAP.md but directory not created yet
|
|
327
|
+
- Skip directory deletion, proceed with ROADMAP.md updates
|
|
328
|
+
|
|
329
|
+
**Decimal phases under removed integer:**
|
|
330
|
+
- Removing Phase 17 when 17.1, 17.2 exist
|
|
331
|
+
- 17.1 → 16.1, 17.2 → 16.2
|
|
332
|
+
- They maintain their position in execution order (after current last integer)
|
|
333
|
+
|
|
334
|
+
</edge_cases>
|
|
335
|
+
|
|
336
|
+
<success_criteria>
|
|
337
|
+
Phase removal is complete when:
|
|
338
|
+
|
|
339
|
+
- [ ] Target phase validated as future/unstarted
|
|
340
|
+
- [ ] Phase directory deleted (if existed)
|
|
341
|
+
- [ ] All subsequent phase directories renumbered
|
|
342
|
+
- [ ] Files inside directories renamed ({old}-01-PLAN.md → {new}-01-PLAN.md)
|
|
343
|
+
- [ ] ROADMAP.md updated (section removed, all references renumbered)
|
|
344
|
+
- [ ] STATE.md updated (phase count, progress percentage)
|
|
345
|
+
- [ ] Dependency references updated in subsequent phases
|
|
346
|
+
- [ ] Changes committed with descriptive message
|
|
347
|
+
- [ ] No gaps in phase numbering
|
|
348
|
+
- [ ] User informed of changes
|
|
349
|
+
</success_criteria>
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:research-phase
|
|
3
|
+
description: Research how to implement a phase (standalone - usually use /gsd:plan-phase instead)
|
|
4
|
+
argument-hint: "[phase]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Task
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Research how to implement a phase. Spawns gsd-phase-researcher agent with phase context.
|
|
13
|
+
|
|
14
|
+
**Note:** This is a standalone research command. For most workflows, use `/gsd:plan-phase` which integrates research automatically.
|
|
15
|
+
|
|
16
|
+
**Use this command when:**
|
|
17
|
+
- You want to research without planning yet
|
|
18
|
+
- You want to re-research after planning is complete
|
|
19
|
+
- You need to investigate before deciding if a phase is feasible
|
|
20
|
+
|
|
21
|
+
**Orchestrator role:** Parse phase, validate against roadmap, check existing research, gather context, spawn researcher agent, present results.
|
|
22
|
+
|
|
23
|
+
**Why subagent:** Research burns context fast (WebSearch, Context7 queries, source verification). Fresh 200k context for investigation. Main context stays lean for user interaction.
|
|
24
|
+
</objective>
|
|
25
|
+
|
|
26
|
+
<context>
|
|
27
|
+
Phase number: $ARGUMENTS (required)
|
|
28
|
+
|
|
29
|
+
Normalize phase input in step 1 before any directory lookups.
|
|
30
|
+
</context>
|
|
31
|
+
|
|
32
|
+
<process>
|
|
33
|
+
|
|
34
|
+
## 0. Resolve Model Profile
|
|
35
|
+
|
|
36
|
+
Read model profile for agent spawning:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Default to "balanced" if not set.
|
|
43
|
+
|
|
44
|
+
**Model lookup table:**
|
|
45
|
+
|
|
46
|
+
| Agent | quality | balanced | budget |
|
|
47
|
+
|-------|---------|----------|--------|
|
|
48
|
+
| gsd-phase-researcher | opus | sonnet | haiku |
|
|
49
|
+
|
|
50
|
+
Store resolved model for use in Task calls below.
|
|
51
|
+
|
|
52
|
+
## 1. Normalize and Validate Phase
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Normalize phase number (8 → 08, but preserve decimals like 2.1 → 02.1)
|
|
56
|
+
if [[ "$ARGUMENTS" =~ ^[0-9]+$ ]]; then
|
|
57
|
+
PHASE=$(printf "%02d" "$ARGUMENTS")
|
|
58
|
+
elif [[ "$ARGUMENTS" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
|
|
59
|
+
PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
|
|
60
|
+
else
|
|
61
|
+
PHASE="$ARGUMENTS"
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
grep -A5 "Phase ${PHASE}:" .planning/ROADMAP.md 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**If not found:** Error and exit. **If found:** Extract phase number, name, description.
|
|
68
|
+
|
|
69
|
+
## 2. Check Existing Research
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**If exists:** Offer: 1) Update research, 2) View existing, 3) Skip. Wait for response.
|
|
76
|
+
|
|
77
|
+
**If doesn't exist:** Continue.
|
|
78
|
+
|
|
79
|
+
## 3. Gather Phase Context
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
grep -A20 "Phase ${PHASE}:" .planning/ROADMAP.md
|
|
83
|
+
cat .planning/REQUIREMENTS.md 2>/dev/null
|
|
84
|
+
cat .planning/phases/${PHASE}-*/*-CONTEXT.md 2>/dev/null
|
|
85
|
+
grep -A30 "### Decisions Made" .planning/STATE.md 2>/dev/null
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Present summary with phase description, requirements, prior decisions.
|
|
89
|
+
|
|
90
|
+
## 4. Spawn gsd-phase-researcher Agent
|
|
91
|
+
|
|
92
|
+
Research modes: ecosystem (default), feasibility, implementation, comparison.
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
<research_type>
|
|
96
|
+
Phase Research — investigating HOW to implement a specific phase well.
|
|
97
|
+
</research_type>
|
|
98
|
+
|
|
99
|
+
<key_insight>
|
|
100
|
+
The question is NOT "which library should I use?"
|
|
101
|
+
|
|
102
|
+
The question is: "What do I not know that I don't know?"
|
|
103
|
+
|
|
104
|
+
For this phase, discover:
|
|
105
|
+
- What's the established architecture pattern?
|
|
106
|
+
- What libraries form the standard stack?
|
|
107
|
+
- What problems do people commonly hit?
|
|
108
|
+
- What's SOTA vs what Claude's training thinks is SOTA?
|
|
109
|
+
- What should NOT be hand-rolled?
|
|
110
|
+
</key_insight>
|
|
111
|
+
|
|
112
|
+
<objective>
|
|
113
|
+
Research implementation approach for Phase {phase_number}: {phase_name}
|
|
114
|
+
Mode: ecosystem
|
|
115
|
+
</objective>
|
|
116
|
+
|
|
117
|
+
<context>
|
|
118
|
+
**Phase description:** {phase_description}
|
|
119
|
+
**Requirements:** {requirements_list}
|
|
120
|
+
**Prior decisions:** {decisions_if_any}
|
|
121
|
+
**Phase context:** {context_md_content}
|
|
122
|
+
</context>
|
|
123
|
+
|
|
124
|
+
<downstream_consumer>
|
|
125
|
+
Your RESEARCH.md will be loaded by `/gsd:plan-phase` which uses specific sections:
|
|
126
|
+
- `## Standard Stack` → Plans use these libraries
|
|
127
|
+
- `## Architecture Patterns` → Task structure follows these
|
|
128
|
+
- `## Don't Hand-Roll` → Tasks NEVER build custom solutions for listed problems
|
|
129
|
+
- `## Common Pitfalls` → Verification steps check for these
|
|
130
|
+
- `## Code Examples` → Task actions reference these patterns
|
|
131
|
+
|
|
132
|
+
Be prescriptive, not exploratory. "Use X" not "Consider X or Y."
|
|
133
|
+
</downstream_consumer>
|
|
134
|
+
|
|
135
|
+
<quality_gate>
|
|
136
|
+
Before declaring complete, verify:
|
|
137
|
+
- [ ] All domains investigated (not just some)
|
|
138
|
+
- [ ] Negative claims verified with official docs
|
|
139
|
+
- [ ] Multiple sources for critical claims
|
|
140
|
+
- [ ] Confidence levels assigned honestly
|
|
141
|
+
- [ ] Section names match what plan-phase expects
|
|
142
|
+
</quality_gate>
|
|
143
|
+
|
|
144
|
+
<output>
|
|
145
|
+
Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
146
|
+
</output>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Task(
|
|
151
|
+
prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + filled_prompt,
|
|
152
|
+
subagent_type="general-purpose",
|
|
153
|
+
model="{researcher_model}",
|
|
154
|
+
description="Research Phase {phase}"
|
|
155
|
+
)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## 5. Handle Agent Return
|
|
159
|
+
|
|
160
|
+
**`## RESEARCH COMPLETE`:** Display summary, offer: Plan phase, Dig deeper, Review full, Done.
|
|
161
|
+
|
|
162
|
+
**`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation.
|
|
163
|
+
|
|
164
|
+
**`## RESEARCH INCONCLUSIVE`:** Show what was attempted, offer: Add context, Try different mode, Manual.
|
|
165
|
+
|
|
166
|
+
## 6. Spawn Continuation Agent
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
<objective>
|
|
170
|
+
Continue research for Phase {phase_number}: {phase_name}
|
|
171
|
+
</objective>
|
|
172
|
+
|
|
173
|
+
<prior_state>
|
|
174
|
+
Research file: @.planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
175
|
+
</prior_state>
|
|
176
|
+
|
|
177
|
+
<checkpoint_response>
|
|
178
|
+
**Type:** {checkpoint_type}
|
|
179
|
+
**Response:** {user_response}
|
|
180
|
+
</checkpoint_response>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Task(
|
|
185
|
+
prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + continuation_prompt,
|
|
186
|
+
subagent_type="general-purpose",
|
|
187
|
+
model="{researcher_model}",
|
|
188
|
+
description="Continue research Phase {phase}"
|
|
189
|
+
)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
</process>
|
|
193
|
+
|
|
194
|
+
<success_criteria>
|
|
195
|
+
- [ ] Phase validated against roadmap
|
|
196
|
+
- [ ] Existing research checked
|
|
197
|
+
- [ ] gsd-phase-researcher spawned with context
|
|
198
|
+
- [ ] Checkpoints handled correctly
|
|
199
|
+
- [ ] User knows next steps
|
|
200
|
+
</success_criteria>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:resume-work
|
|
3
|
+
description: Resume work from previous session with full context restoration
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
- SlashCommand
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Restore complete project context and resume work seamlessly from previous session.
|
|
14
|
+
|
|
15
|
+
Routes to the resume-project workflow which handles:
|
|
16
|
+
|
|
17
|
+
- STATE.md loading (or reconstruction if missing)
|
|
18
|
+
- Checkpoint detection (.continue-here files)
|
|
19
|
+
- Incomplete work detection (PLAN without SUMMARY)
|
|
20
|
+
- Status presentation
|
|
21
|
+
- Context-aware next action routing
|
|
22
|
+
</objective>
|
|
23
|
+
|
|
24
|
+
<execution_context>
|
|
25
|
+
@~/.claude/get-shit-done/workflows/resume-project.md
|
|
26
|
+
</execution_context>
|
|
27
|
+
|
|
28
|
+
<process>
|
|
29
|
+
**Follow the resume-project workflow** from `@~/.claude/get-shit-done/workflows/resume-project.md`.
|
|
30
|
+
|
|
31
|
+
The workflow handles all resumption logic including:
|
|
32
|
+
|
|
33
|
+
1. Project existence verification
|
|
34
|
+
2. STATE.md loading or reconstruction
|
|
35
|
+
3. Checkpoint and incomplete work detection
|
|
36
|
+
4. Visual status presentation
|
|
37
|
+
5. Context-aware option offering (checks CONTEXT.md before suggesting plan vs discuss)
|
|
38
|
+
6. Routing to appropriate next command
|
|
39
|
+
7. Session continuity updates
|
|
40
|
+
</process>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: set-profile
|
|
3
|
+
description: Switch model profile for GSD agents (quality/balanced/budget)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: profile
|
|
6
|
+
description: "Profile name: quality, balanced, or budget"
|
|
7
|
+
required: true
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
Switch the model profile used by GSD agents. This controls which Claude model each agent uses, balancing quality vs token spend.
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<profiles>
|
|
15
|
+
| Profile | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| **quality** | Opus everywhere except read-only verification |
|
|
18
|
+
| **balanced** | Opus for planning, Sonnet for execution/verification (default) |
|
|
19
|
+
| **budget** | Sonnet for writing, Haiku for research/verification |
|
|
20
|
+
</profiles>
|
|
21
|
+
|
|
22
|
+
<process>
|
|
23
|
+
|
|
24
|
+
## 1. Validate argument
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
if $ARGUMENTS.profile not in ["quality", "balanced", "budget"]:
|
|
28
|
+
Error: Invalid profile "$ARGUMENTS.profile"
|
|
29
|
+
Valid profiles: quality, balanced, budget
|
|
30
|
+
STOP
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 2. Check for project
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
ls .planning/config.json 2>/dev/null
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If no `.planning/` directory:
|
|
40
|
+
```
|
|
41
|
+
Error: No GSD project found.
|
|
42
|
+
Run /gsd:new-project first to initialize a project.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 3. Update config.json
|
|
46
|
+
|
|
47
|
+
Read current config:
|
|
48
|
+
```bash
|
|
49
|
+
cat .planning/config.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Update `model_profile` field (or add if missing):
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"model_profile": "$ARGUMENTS.profile"
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Write updated config back to `.planning/config.json`.
|
|
60
|
+
|
|
61
|
+
## 4. Confirm
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
✓ Model profile set to: $ARGUMENTS.profile
|
|
65
|
+
|
|
66
|
+
Agents will now use:
|
|
67
|
+
[Show table from model-profiles.md for selected profile]
|
|
68
|
+
|
|
69
|
+
Next spawned agents will use the new profile.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
</process>
|
|
73
|
+
|
|
74
|
+
<examples>
|
|
75
|
+
|
|
76
|
+
**Switch to budget mode:**
|
|
77
|
+
```
|
|
78
|
+
/gsd:set-profile budget
|
|
79
|
+
|
|
80
|
+
✓ Model profile set to: budget
|
|
81
|
+
|
|
82
|
+
Agents will now use:
|
|
83
|
+
| Agent | Model |
|
|
84
|
+
|-------|-------|
|
|
85
|
+
| gsd-planner | sonnet |
|
|
86
|
+
| gsd-executor | sonnet |
|
|
87
|
+
| gsd-verifier | haiku |
|
|
88
|
+
| ... | ... |
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Switch to quality mode:**
|
|
92
|
+
```
|
|
93
|
+
/gsd:set-profile quality
|
|
94
|
+
|
|
95
|
+
✓ Model profile set to: quality
|
|
96
|
+
|
|
97
|
+
Agents will now use:
|
|
98
|
+
| Agent | Model |
|
|
99
|
+
|-------|-------|
|
|
100
|
+
| gsd-planner | opus |
|
|
101
|
+
| gsd-executor | opus |
|
|
102
|
+
| gsd-verifier | sonnet |
|
|
103
|
+
| ... | ... |
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
</examples>
|