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,415 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:progress
|
|
3
|
+
description: Check project progress, show context, and route to next action (execute or plan)
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
- SlashCommand
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Check project progress, summarize recent work and what's ahead, then intelligently route to the next action - either executing an existing plan or creating the next one.
|
|
14
|
+
|
|
15
|
+
Provides situational awareness before continuing work.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<process>
|
|
20
|
+
|
|
21
|
+
<step name="verify">
|
|
22
|
+
**Verify planning structure exists:**
|
|
23
|
+
|
|
24
|
+
Use Bash (not Glob) to check—Glob respects .gitignore but .planning/ is often gitignored:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
test -d .planning && echo "exists" || echo "missing"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If no `.planning/` directory:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
No planning structure found.
|
|
34
|
+
|
|
35
|
+
Run /gsd:new-project to start a new project.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Exit.
|
|
39
|
+
|
|
40
|
+
If missing STATE.md: suggest `/gsd:new-project`.
|
|
41
|
+
|
|
42
|
+
**If ROADMAP.md missing but PROJECT.md exists:**
|
|
43
|
+
|
|
44
|
+
This means a milestone was completed and archived. Go to **Route F** (between milestones).
|
|
45
|
+
|
|
46
|
+
If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
|
|
47
|
+
</step>
|
|
48
|
+
|
|
49
|
+
<step name="load">
|
|
50
|
+
**Load full project context:**
|
|
51
|
+
|
|
52
|
+
- Read `.planning/STATE.md` for living memory (position, decisions, issues)
|
|
53
|
+
- Read `.planning/ROADMAP.md` for phase structure and objectives
|
|
54
|
+
- Read `.planning/PROJECT.md` for current state (What This Is, Core Value, Requirements)
|
|
55
|
+
- Read `.planning/config.json` for settings (model_profile, workflow toggles)
|
|
56
|
+
|
|
57
|
+
**Check for PM mode:**
|
|
58
|
+
|
|
59
|
+
Read `pm` section from config.json. If `pm.project_id` is set (not null), PM mode is active.
|
|
60
|
+
|
|
61
|
+
If PM mode is active:
|
|
62
|
+
- Check if pm-loop.sh is running: `test -f .planning/.pm-loop-pid && ps -p $(cat .planning/.pm-loop-pid) > /dev/null 2>&1`
|
|
63
|
+
- Read TICKET-MAP.md for active phase if it exists
|
|
64
|
+
- Include PM status in the report (see PM section below)
|
|
65
|
+
- Route to PM commands instead of standard execute commands
|
|
66
|
+
</step>
|
|
67
|
+
|
|
68
|
+
<step name="recent">
|
|
69
|
+
**Gather recent work context:**
|
|
70
|
+
|
|
71
|
+
- Find the 2-3 most recent SUMMARY.md files
|
|
72
|
+
- Extract from each: what was accomplished, key decisions, any issues logged
|
|
73
|
+
- This shows "what we've been working on"
|
|
74
|
+
</step>
|
|
75
|
+
|
|
76
|
+
<step name="position">
|
|
77
|
+
**Parse current position:**
|
|
78
|
+
|
|
79
|
+
- From STATE.md: current phase, plan number, status
|
|
80
|
+
- Calculate: total plans, completed plans, remaining plans
|
|
81
|
+
- Note any blockers or concerns
|
|
82
|
+
- Check for CONTEXT.md: For phases without PLAN.md files, check if `{phase}-CONTEXT.md` exists in phase directory
|
|
83
|
+
- Count pending todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
|
|
84
|
+
- Check for active debug sessions: `ls .planning/debug/*.md 2>/dev/null | grep -v resolved | wc -l`
|
|
85
|
+
</step>
|
|
86
|
+
|
|
87
|
+
<step name="report">
|
|
88
|
+
**Present rich status report:**
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
# [Project Name]
|
|
92
|
+
|
|
93
|
+
**Progress:** [████████░░] 8/10 plans complete
|
|
94
|
+
**Profile:** [quality/balanced/budget]
|
|
95
|
+
|
|
96
|
+
## Recent Work
|
|
97
|
+
- [Phase X, Plan Y]: [what was accomplished - 1 line]
|
|
98
|
+
- [Phase X, Plan Z]: [what was accomplished - 1 line]
|
|
99
|
+
|
|
100
|
+
## Current Position
|
|
101
|
+
Phase [N] of [total]: [phase-name]
|
|
102
|
+
Plan [M] of [phase-total]: [status]
|
|
103
|
+
CONTEXT: [✓ if CONTEXT.md exists | - if not]
|
|
104
|
+
|
|
105
|
+
## Key Decisions Made
|
|
106
|
+
- [decision 1 from STATE.md]
|
|
107
|
+
- [decision 2]
|
|
108
|
+
|
|
109
|
+
## Blockers/Concerns
|
|
110
|
+
- [any blockers or concerns from STATE.md]
|
|
111
|
+
|
|
112
|
+
## Pending Todos
|
|
113
|
+
- [count] pending — /gsd:check-todos to review
|
|
114
|
+
|
|
115
|
+
## Active Debug Sessions
|
|
116
|
+
- [count] active — /gsd:debug to continue
|
|
117
|
+
(Only show this section if count > 0)
|
|
118
|
+
|
|
119
|
+
## What's Next
|
|
120
|
+
[Next phase/plan objective from ROADMAP]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
</step>
|
|
124
|
+
|
|
125
|
+
<step name="pm_route">
|
|
126
|
+
**If PM mode is active (pm.project_id set in config):**
|
|
127
|
+
|
|
128
|
+
Skip the standard route step. Instead, present PM-specific routing:
|
|
129
|
+
|
|
130
|
+
1. Read TICKET-MAP.md for the current phase
|
|
131
|
+
2. If no TICKET-MAP exists: suggest `/gsd:pm-start {phase}`
|
|
132
|
+
3. If TICKET-MAP exists, check ticket statuses:
|
|
133
|
+
|
|
134
|
+
| Condition | Action |
|
|
135
|
+
|-----------|--------|
|
|
136
|
+
| All tickets done | "Phase complete. `/gsd:pm-start {next}` for next phase." |
|
|
137
|
+
| Some tickets running | "Workers active. `/gsd:pm-check` to poll status." |
|
|
138
|
+
| Some tickets todo, wave ready | "Ready to dispatch. `/gsd:pm-check` to auto-dispatch." |
|
|
139
|
+
| Failed tickets | "Failures detected. `/gsd:pm-replan {phase}` to fix." |
|
|
140
|
+
| No tickets yet | "Phase not started. `/gsd:pm-start {phase}`" |
|
|
141
|
+
|
|
142
|
+
4. If pm-loop.sh is running, note: "Autonomous monitoring active (PID: X)"
|
|
143
|
+
5. Show last 3 PM-LOG entries if available
|
|
144
|
+
6. Present available PM commands
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
## PM Status
|
|
148
|
+
|
|
149
|
+
Mode: {autonomous|manual}
|
|
150
|
+
Loop: {running|stopped}
|
|
151
|
+
|
|
152
|
+
| Wave | Done | Running | Todo | Failed |
|
|
153
|
+
| ---- | ---- | ------- | ---- | ------ |
|
|
154
|
+
| ... | ... | ... | ... | ... |
|
|
155
|
+
|
|
156
|
+
## Actions
|
|
157
|
+
/gsd:pm-check — Poll ticket status
|
|
158
|
+
/gsd:pm-status — Full dashboard
|
|
159
|
+
/gsd:pm-replan — Modify plans
|
|
160
|
+
/gsd:pm-stop — Stop autonomous loop
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Exit after PM route.** Do not continue to standard routing below.
|
|
164
|
+
</step>
|
|
165
|
+
|
|
166
|
+
<step name="route">
|
|
167
|
+
**Determine next action based on verified counts.**
|
|
168
|
+
|
|
169
|
+
**Step 1: Count plans, summaries, and issues in current phase**
|
|
170
|
+
|
|
171
|
+
List files in the current phase directory:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
|
|
175
|
+
ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
|
|
176
|
+
ls -1 .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null | wc -l
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
State: "This phase has {X} plans, {Y} summaries."
|
|
180
|
+
|
|
181
|
+
**Step 1.5: Check for unaddressed UAT gaps**
|
|
182
|
+
|
|
183
|
+
Check for UAT.md files with status "diagnosed" (has gaps needing fixes).
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Check for diagnosed UAT with gaps
|
|
187
|
+
grep -l "status: diagnosed" .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Track:
|
|
191
|
+
- `uat_with_gaps`: UAT.md files with status "diagnosed" (gaps need fixing)
|
|
192
|
+
|
|
193
|
+
**Step 2: Route based on counts**
|
|
194
|
+
|
|
195
|
+
| Condition | Meaning | Action |
|
|
196
|
+
|-----------|---------|--------|
|
|
197
|
+
| uat_with_gaps > 0 | UAT gaps need fix plans | Go to **Route E** |
|
|
198
|
+
| summaries < plans | Unexecuted plans exist | Go to **Route A** |
|
|
199
|
+
| summaries = plans AND plans > 0 | Phase complete | Go to Step 3 |
|
|
200
|
+
| plans = 0 | Phase not yet planned | Go to **Route B** |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
**Route A: Unexecuted plan exists**
|
|
205
|
+
|
|
206
|
+
Find the first PLAN.md without matching SUMMARY.md.
|
|
207
|
+
Read its `<objective>` section.
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## ▶ Next Up
|
|
213
|
+
|
|
214
|
+
**{phase}-{plan}: [Plan Name]** — [objective summary from PLAN.md]
|
|
215
|
+
|
|
216
|
+
`/gsd:execute-phase {phase}`
|
|
217
|
+
|
|
218
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
**Route B: Phase needs planning**
|
|
226
|
+
|
|
227
|
+
Check if `{phase}-CONTEXT.md` exists in phase directory.
|
|
228
|
+
|
|
229
|
+
**If CONTEXT.md exists:**
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## ▶ Next Up
|
|
235
|
+
|
|
236
|
+
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
|
|
237
|
+
<sub>✓ Context gathered, ready to plan</sub>
|
|
238
|
+
|
|
239
|
+
`/gsd:plan-phase {phase-number}`
|
|
240
|
+
|
|
241
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**If CONTEXT.md does NOT exist:**
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## ▶ Next Up
|
|
252
|
+
|
|
253
|
+
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
|
|
254
|
+
|
|
255
|
+
`/gsd:discuss-phase {phase}` — gather context and clarify approach
|
|
256
|
+
|
|
257
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
**Also available:**
|
|
262
|
+
- `/gsd:plan-phase {phase}` — skip discussion, plan directly
|
|
263
|
+
- `/gsd:list-phase-assumptions {phase}` — see Claude's assumptions
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
**Route E: UAT gaps need fix plans**
|
|
271
|
+
|
|
272
|
+
UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## ⚠ UAT Gaps Found
|
|
278
|
+
|
|
279
|
+
**{phase}-UAT.md** has {N} gaps requiring fixes.
|
|
280
|
+
|
|
281
|
+
`/gsd:plan-phase {phase} --gaps`
|
|
282
|
+
|
|
283
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
**Also available:**
|
|
288
|
+
- `/gsd:execute-phase {phase}` — execute phase plans
|
|
289
|
+
- `/gsd:verify-work {phase}` — run more UAT testing
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
**Step 3: Check milestone status (only when phase complete)**
|
|
297
|
+
|
|
298
|
+
Read ROADMAP.md and identify:
|
|
299
|
+
1. Current phase number
|
|
300
|
+
2. All phase numbers in the current milestone section
|
|
301
|
+
|
|
302
|
+
Count total phases and identify the highest phase number.
|
|
303
|
+
|
|
304
|
+
State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
305
|
+
|
|
306
|
+
**Route based on milestone status:**
|
|
307
|
+
|
|
308
|
+
| Condition | Meaning | Action |
|
|
309
|
+
|-----------|---------|--------|
|
|
310
|
+
| current phase < highest phase | More phases remain | Go to **Route C** |
|
|
311
|
+
| current phase = highest phase | Milestone complete | Go to **Route D** |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
**Route C: Phase complete, more phases remain**
|
|
316
|
+
|
|
317
|
+
Read ROADMAP.md to get the next phase's name and goal.
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## ✓ Phase {Z} Complete
|
|
323
|
+
|
|
324
|
+
## ▶ Next Up
|
|
325
|
+
|
|
326
|
+
**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
|
|
327
|
+
|
|
328
|
+
`/gsd:discuss-phase {Z+1}` — gather context and clarify approach
|
|
329
|
+
|
|
330
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
**Also available:**
|
|
335
|
+
- `/gsd:plan-phase {Z+1}` — skip discussion, plan directly
|
|
336
|
+
- `/gsd:verify-work {Z}` — user acceptance test before continuing
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
**Route D: Milestone complete**
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 🎉 Milestone Complete
|
|
349
|
+
|
|
350
|
+
All {N} phases finished!
|
|
351
|
+
|
|
352
|
+
## ▶ Next Up
|
|
353
|
+
|
|
354
|
+
**Complete Milestone** — archive and prepare for next
|
|
355
|
+
|
|
356
|
+
`/gsd:complete-milestone`
|
|
357
|
+
|
|
358
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
**Also available:**
|
|
363
|
+
- `/gsd:verify-work` — user acceptance test before completing milestone
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
**Route F: Between milestones (ROADMAP.md missing, PROJECT.md exists)**
|
|
371
|
+
|
|
372
|
+
A milestone was completed and archived. Ready to start the next milestone cycle.
|
|
373
|
+
|
|
374
|
+
Read MILESTONES.md to find the last completed milestone version.
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## ✓ Milestone v{X.Y} Complete
|
|
380
|
+
|
|
381
|
+
Ready to plan the next milestone.
|
|
382
|
+
|
|
383
|
+
## ▶ Next Up
|
|
384
|
+
|
|
385
|
+
**Start Next Milestone** — questioning → research → requirements → roadmap
|
|
386
|
+
|
|
387
|
+
`/gsd:new-milestone`
|
|
388
|
+
|
|
389
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
</step>
|
|
395
|
+
|
|
396
|
+
<step name="edge_cases">
|
|
397
|
+
**Handle edge cases:**
|
|
398
|
+
|
|
399
|
+
- Phase complete but next phase not planned → offer `/gsd:plan-phase [next]`
|
|
400
|
+
- All work complete → offer milestone completion
|
|
401
|
+
- Blockers present → highlight before offering to continue
|
|
402
|
+
- Handoff file exists → mention it, offer `/gsd:resume-work`
|
|
403
|
+
</step>
|
|
404
|
+
|
|
405
|
+
</process>
|
|
406
|
+
|
|
407
|
+
<success_criteria>
|
|
408
|
+
|
|
409
|
+
- [ ] Rich context provided (recent work, decisions, issues)
|
|
410
|
+
- [ ] Current position clear with visual progress
|
|
411
|
+
- [ ] What's next clearly explained
|
|
412
|
+
- [ ] Smart routing: /gsd:execute-phase if plans exist, /gsd:plan-phase if not
|
|
413
|
+
- [ ] User confirms before any action
|
|
414
|
+
- [ ] Seamless handoff to appropriate gsd command
|
|
415
|
+
</success_criteria>
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:quick
|
|
3
|
+
description: Execute a quick task with GSD guarantees (atomic commits, state tracking) but skip optional agents
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Bash
|
|
12
|
+
- Task
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<objective>
|
|
17
|
+
Execute small, ad-hoc tasks with GSD guarantees (atomic commits, STATE.md tracking) while skipping optional agents (research, plan-checker, verifier).
|
|
18
|
+
|
|
19
|
+
Quick mode is the same system with a shorter path:
|
|
20
|
+
- Spawns gsd-planner (quick mode) + gsd-executor(s)
|
|
21
|
+
- Skips gsd-phase-researcher, gsd-plan-checker, gsd-verifier
|
|
22
|
+
- Quick tasks live in `.planning/quick/` separate from planned phases
|
|
23
|
+
- Updates STATE.md "Quick Tasks Completed" table (NOT ROADMAP.md)
|
|
24
|
+
|
|
25
|
+
Use when: You know exactly what to do and the task is small enough to not need research or verification.
|
|
26
|
+
</objective>
|
|
27
|
+
|
|
28
|
+
<execution_context>
|
|
29
|
+
Orchestration is inline - no separate workflow file. Quick mode is deliberately simpler than full GSD.
|
|
30
|
+
</execution_context>
|
|
31
|
+
|
|
32
|
+
<context>
|
|
33
|
+
@.planning/STATE.md
|
|
34
|
+
</context>
|
|
35
|
+
|
|
36
|
+
<process>
|
|
37
|
+
**Step 0: Resolve Model Profile**
|
|
38
|
+
|
|
39
|
+
Read model profile for agent spawning:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Default to "balanced" if not set.
|
|
46
|
+
|
|
47
|
+
**Model lookup table:**
|
|
48
|
+
|
|
49
|
+
| Agent | quality | balanced | budget |
|
|
50
|
+
|-------|---------|----------|--------|
|
|
51
|
+
| gsd-planner | opus | opus | sonnet |
|
|
52
|
+
| gsd-executor | opus | sonnet | sonnet |
|
|
53
|
+
|
|
54
|
+
Store resolved models for use in Task calls below.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
**Step 1: Pre-flight validation**
|
|
59
|
+
|
|
60
|
+
Check that an active GSD project exists:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
if [ ! -f .planning/ROADMAP.md ]; then
|
|
64
|
+
echo "Quick mode requires an active project with ROADMAP.md."
|
|
65
|
+
echo "Run /gsd:new-project first."
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If validation fails, stop immediately with the error message.
|
|
71
|
+
|
|
72
|
+
Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not phase status.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
**Step 2: Get task description**
|
|
77
|
+
|
|
78
|
+
Prompt user interactively for the task description:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
AskUserQuestion(
|
|
82
|
+
header: "Quick Task",
|
|
83
|
+
question: "What do you want to do?",
|
|
84
|
+
followUp: null
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Store response as `$DESCRIPTION`.
|
|
89
|
+
|
|
90
|
+
If empty, re-prompt: "Please provide a task description."
|
|
91
|
+
|
|
92
|
+
Generate slug from description:
|
|
93
|
+
```bash
|
|
94
|
+
slug=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//' | cut -c1-40)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
**Step 3: Calculate next quick task number**
|
|
100
|
+
|
|
101
|
+
Ensure `.planning/quick/` directory exists and find the next sequential number:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Ensure .planning/quick/ exists
|
|
105
|
+
mkdir -p .planning/quick
|
|
106
|
+
|
|
107
|
+
# Find highest existing number and increment
|
|
108
|
+
last=$(ls -1d .planning/quick/[0-9][0-9][0-9]-* 2>/dev/null | sort -r | head -1 | xargs -I{} basename {} | grep -oE '^[0-9]+')
|
|
109
|
+
|
|
110
|
+
if [ -z "$last" ]; then
|
|
111
|
+
next_num="001"
|
|
112
|
+
else
|
|
113
|
+
next_num=$(printf "%03d" $((10#$last + 1)))
|
|
114
|
+
fi
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
**Step 4: Create quick task directory**
|
|
120
|
+
|
|
121
|
+
Create the directory for this quick task:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
QUICK_DIR=".planning/quick/${next_num}-${slug}"
|
|
125
|
+
mkdir -p "$QUICK_DIR"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Report to user:
|
|
129
|
+
```
|
|
130
|
+
Creating quick task ${next_num}: ${DESCRIPTION}
|
|
131
|
+
Directory: ${QUICK_DIR}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Store `$QUICK_DIR` for use in orchestration.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**Step 5: Spawn planner (quick mode)**
|
|
139
|
+
|
|
140
|
+
Spawn gsd-planner with quick mode context:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Task(
|
|
144
|
+
prompt="
|
|
145
|
+
<planning_context>
|
|
146
|
+
|
|
147
|
+
**Mode:** quick
|
|
148
|
+
**Directory:** ${QUICK_DIR}
|
|
149
|
+
**Description:** ${DESCRIPTION}
|
|
150
|
+
|
|
151
|
+
**Project State:**
|
|
152
|
+
@.planning/STATE.md
|
|
153
|
+
|
|
154
|
+
</planning_context>
|
|
155
|
+
|
|
156
|
+
<constraints>
|
|
157
|
+
- Create a SINGLE plan with 1-3 focused tasks
|
|
158
|
+
- Quick tasks should be atomic and self-contained
|
|
159
|
+
- No research phase, no checker phase
|
|
160
|
+
- Target ~30% context usage (simple, focused)
|
|
161
|
+
</constraints>
|
|
162
|
+
|
|
163
|
+
<output>
|
|
164
|
+
Write plan to: ${QUICK_DIR}/${next_num}-PLAN.md
|
|
165
|
+
Return: ## PLANNING COMPLETE with plan path
|
|
166
|
+
</output>
|
|
167
|
+
",
|
|
168
|
+
subagent_type="gsd-planner",
|
|
169
|
+
model="{planner_model}",
|
|
170
|
+
description="Quick plan: ${DESCRIPTION}"
|
|
171
|
+
)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
After planner returns:
|
|
175
|
+
1. Verify plan exists at `${QUICK_DIR}/${next_num}-PLAN.md`
|
|
176
|
+
2. Extract plan count (typically 1 for quick tasks)
|
|
177
|
+
3. Report: "Plan created: ${QUICK_DIR}/${next_num}-PLAN.md"
|
|
178
|
+
|
|
179
|
+
If plan not found, error: "Planner failed to create ${next_num}-PLAN.md"
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
**Step 6: Spawn executor**
|
|
184
|
+
|
|
185
|
+
Spawn gsd-executor with plan reference:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
Task(
|
|
189
|
+
prompt="
|
|
190
|
+
Execute quick task ${next_num}.
|
|
191
|
+
|
|
192
|
+
Plan: @${QUICK_DIR}/${next_num}-PLAN.md
|
|
193
|
+
Project state: @.planning/STATE.md
|
|
194
|
+
|
|
195
|
+
<constraints>
|
|
196
|
+
- Execute all tasks in the plan
|
|
197
|
+
- Commit each task atomically
|
|
198
|
+
- Create summary at: ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
199
|
+
- Do NOT update ROADMAP.md (quick tasks are separate from planned phases)
|
|
200
|
+
</constraints>
|
|
201
|
+
",
|
|
202
|
+
subagent_type="gsd-executor",
|
|
203
|
+
model="{executor_model}",
|
|
204
|
+
description="Execute: ${DESCRIPTION}"
|
|
205
|
+
)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
After executor returns:
|
|
209
|
+
1. Verify summary exists at `${QUICK_DIR}/${next_num}-SUMMARY.md`
|
|
210
|
+
2. Extract commit hash from executor output
|
|
211
|
+
3. Report completion status
|
|
212
|
+
|
|
213
|
+
If summary not found, error: "Executor failed to create ${next_num}-SUMMARY.md"
|
|
214
|
+
|
|
215
|
+
Note: For quick tasks producing multiple plans (rare), spawn executors in parallel waves per execute-phase patterns.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
**Step 7: Update STATE.md**
|
|
220
|
+
|
|
221
|
+
Update STATE.md with quick task completion record.
|
|
222
|
+
|
|
223
|
+
**7a. Check if "Quick Tasks Completed" section exists:**
|
|
224
|
+
|
|
225
|
+
Read STATE.md and check for `### Quick Tasks Completed` section.
|
|
226
|
+
|
|
227
|
+
**7b. If section doesn't exist, create it:**
|
|
228
|
+
|
|
229
|
+
Insert after `### Blockers/Concerns` section:
|
|
230
|
+
|
|
231
|
+
```markdown
|
|
232
|
+
### Quick Tasks Completed
|
|
233
|
+
|
|
234
|
+
| # | Description | Date | Commit | Directory |
|
|
235
|
+
|---|-------------|------|--------|-----------|
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**7c. Append new row to table:**
|
|
239
|
+
|
|
240
|
+
```markdown
|
|
241
|
+
| ${next_num} | ${DESCRIPTION} | $(date +%Y-%m-%d) | ${commit_hash} | [${next_num}-${slug}](./quick/${next_num}-${slug}/) |
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**7d. Update "Last activity" line:**
|
|
245
|
+
|
|
246
|
+
Find and update the line:
|
|
247
|
+
```
|
|
248
|
+
Last activity: $(date +%Y-%m-%d) - Completed quick task ${next_num}: ${DESCRIPTION}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Use Edit tool to make these changes atomically
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
**Step 8: Final commit and completion**
|
|
256
|
+
|
|
257
|
+
Stage and commit quick task artifacts:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Stage quick task artifacts
|
|
261
|
+
git add ${QUICK_DIR}/${next_num}-PLAN.md
|
|
262
|
+
git add ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
263
|
+
git add .planning/STATE.md
|
|
264
|
+
|
|
265
|
+
# Commit with quick task format
|
|
266
|
+
git commit -m "$(cat <<'EOF'
|
|
267
|
+
docs(quick-${next_num}): ${DESCRIPTION}
|
|
268
|
+
|
|
269
|
+
Quick task completed.
|
|
270
|
+
|
|
271
|
+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
272
|
+
EOF
|
|
273
|
+
)"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Get final commit hash:
|
|
277
|
+
```bash
|
|
278
|
+
commit_hash=$(git rev-parse --short HEAD)
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Display completion output:
|
|
282
|
+
```
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
GSD > QUICK TASK COMPLETE
|
|
286
|
+
|
|
287
|
+
Quick Task ${next_num}: ${DESCRIPTION}
|
|
288
|
+
|
|
289
|
+
Summary: ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
290
|
+
Commit: ${commit_hash}
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
Ready for next task: /gsd:quick
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
</process>
|
|
298
|
+
|
|
299
|
+
<success_criteria>
|
|
300
|
+
- [ ] ROADMAP.md validation passes
|
|
301
|
+
- [ ] User provides task description
|
|
302
|
+
- [ ] Slug generated (lowercase, hyphens, max 40 chars)
|
|
303
|
+
- [ ] Next number calculated (001, 002, 003...)
|
|
304
|
+
- [ ] Directory created at `.planning/quick/NNN-slug/`
|
|
305
|
+
- [ ] `${next_num}-PLAN.md` created by planner
|
|
306
|
+
- [ ] `${next_num}-SUMMARY.md` created by executor
|
|
307
|
+
- [ ] STATE.md updated with quick task row
|
|
308
|
+
- [ ] Artifacts committed
|
|
309
|
+
</success_criteria>
|