@undeemed/get-shit-done-codex 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/AGENTS.md +183 -0
  2. package/LICENSE +21 -0
  3. package/README.md +179 -0
  4. package/bin/install.js +214 -0
  5. package/commands/gsd/add-phase.md +207 -0
  6. package/commands/gsd/add-todo.md +182 -0
  7. package/commands/gsd/audit-milestone.md +258 -0
  8. package/commands/gsd/check-todos.md +217 -0
  9. package/commands/gsd/complete-milestone.md +136 -0
  10. package/commands/gsd/debug.md +149 -0
  11. package/commands/gsd/discuss-phase.md +80 -0
  12. package/commands/gsd/execute-phase.md +304 -0
  13. package/commands/gsd/help.md +383 -0
  14. package/commands/gsd/insert-phase.md +227 -0
  15. package/commands/gsd/list-phase-assumptions.md +50 -0
  16. package/commands/gsd/map-codebase.md +71 -0
  17. package/commands/gsd/new-milestone.md +717 -0
  18. package/commands/gsd/new-project.md +896 -0
  19. package/commands/gsd/pause-work.md +123 -0
  20. package/commands/gsd/plan-milestone-gaps.md +284 -0
  21. package/commands/gsd/plan-phase.md +475 -0
  22. package/commands/gsd/progress.md +356 -0
  23. package/commands/gsd/remove-phase.md +338 -0
  24. package/commands/gsd/research-phase.md +180 -0
  25. package/commands/gsd/resume-work.md +40 -0
  26. package/commands/gsd/update.md +172 -0
  27. package/commands/gsd/verify-work.md +219 -0
  28. package/commands/gsd/whats-new.md +124 -0
  29. package/get-shit-done/references/checkpoints.md +788 -0
  30. package/get-shit-done/references/continuation-format.md +249 -0
  31. package/get-shit-done/references/git-integration.md +254 -0
  32. package/get-shit-done/references/questioning.md +141 -0
  33. package/get-shit-done/references/tdd.md +263 -0
  34. package/get-shit-done/references/ui-brand.md +160 -0
  35. package/get-shit-done/references/verification-patterns.md +595 -0
  36. package/get-shit-done/templates/DEBUG.md +159 -0
  37. package/get-shit-done/templates/UAT.md +247 -0
  38. package/get-shit-done/templates/codebase/architecture.md +255 -0
  39. package/get-shit-done/templates/codebase/concerns.md +310 -0
  40. package/get-shit-done/templates/codebase/conventions.md +307 -0
  41. package/get-shit-done/templates/codebase/integrations.md +280 -0
  42. package/get-shit-done/templates/codebase/stack.md +186 -0
  43. package/get-shit-done/templates/codebase/structure.md +285 -0
  44. package/get-shit-done/templates/codebase/testing.md +480 -0
  45. package/get-shit-done/templates/config.json +26 -0
  46. package/get-shit-done/templates/context.md +291 -0
  47. package/get-shit-done/templates/continue-here.md +78 -0
  48. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  49. package/get-shit-done/templates/discovery.md +146 -0
  50. package/get-shit-done/templates/milestone-archive.md +123 -0
  51. package/get-shit-done/templates/milestone.md +115 -0
  52. package/get-shit-done/templates/phase-prompt.md +576 -0
  53. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  54. package/get-shit-done/templates/project.md +184 -0
  55. package/get-shit-done/templates/requirements.md +231 -0
  56. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  57. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  58. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  59. package/get-shit-done/templates/research-project/STACK.md +120 -0
  60. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  61. package/get-shit-done/templates/research.md +529 -0
  62. package/get-shit-done/templates/roadmap.md +202 -0
  63. package/get-shit-done/templates/state.md +206 -0
  64. package/get-shit-done/templates/summary.md +269 -0
  65. package/get-shit-done/templates/user-setup.md +323 -0
  66. package/get-shit-done/templates/verification-report.md +322 -0
  67. package/get-shit-done/workflows/complete-milestone.md +750 -0
  68. package/get-shit-done/workflows/diagnose-issues.md +233 -0
  69. package/get-shit-done/workflows/discovery-phase.md +293 -0
  70. package/get-shit-done/workflows/discuss-phase.md +422 -0
  71. package/get-shit-done/workflows/execute-phase.md +552 -0
  72. package/get-shit-done/workflows/execute-plan.md +1831 -0
  73. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  74. package/get-shit-done/workflows/map-codebase.md +289 -0
  75. package/get-shit-done/workflows/resume-project.md +311 -0
  76. package/get-shit-done/workflows/transition.md +564 -0
  77. package/get-shit-done/workflows/verify-phase.md +629 -0
  78. package/get-shit-done/workflows/verify-work.md +563 -0
  79. package/package.json +39 -0
@@ -0,0 +1,552 @@
1
+ <purpose>
2
+ Execute all plans in a phase using wave-based parallel execution. Orchestrator stays lean by delegating plan execution to subagents.
3
+ </purpose>
4
+
5
+ <core_principle>
6
+ The orchestrator's job is coordination, not execution. Each subagent loads the full execute-plan context itself. Orchestrator discovers plans, analyzes dependencies, groups into waves, spawns agents, handles checkpoints, collects results.
7
+ </core_principle>
8
+
9
+ <required_reading>
10
+ Read STATE.md before any operation to load project context.
11
+ </required_reading>
12
+
13
+ <process>
14
+
15
+ <step name="load_project_state" priority="first">
16
+ Before any operation, read project state:
17
+
18
+ ```bash
19
+ cat .planning/STATE.md 2>/dev/null
20
+ ```
21
+
22
+ **If file exists:** Parse and internalize:
23
+ - Current position (phase, plan, status)
24
+ - Accumulated decisions (constraints on this execution)
25
+ - Blockers/concerns (things to watch for)
26
+
27
+ **If file missing but .planning/ exists:**
28
+ ```
29
+ STATE.md missing but planning artifacts exist.
30
+ Options:
31
+ 1. Reconstruct from existing artifacts
32
+ 2. Continue without project state (may lose accumulated context)
33
+ ```
34
+
35
+ **If .planning/ doesn't exist:** Error - project not initialized.
36
+ </step>
37
+
38
+ <step name="validate_phase">
39
+ Confirm phase exists and has plans:
40
+
41
+ ```bash
42
+ # Match both zero-padded (05-*) and unpadded (5-*) folders
43
+ PADDED_PHASE=$(printf "%02d" ${PHASE_ARG} 2>/dev/null || echo "${PHASE_ARG}")
44
+ PHASE_DIR=$(ls -d .planning/phases/${PADDED_PHASE}-* .planning/phases/${PHASE_ARG}-* 2>/dev/null | head -1)
45
+ if [ -z "$PHASE_DIR" ]; then
46
+ echo "ERROR: No phase directory matching '${PHASE_ARG}'"
47
+ exit 1
48
+ fi
49
+
50
+ PLAN_COUNT=$(ls -1 "$PHASE_DIR"/*-PLAN.md 2>/dev/null | wc -l | tr -d ' ')
51
+ if [ "$PLAN_COUNT" -eq 0 ]; then
52
+ echo "ERROR: No plans found in $PHASE_DIR"
53
+ exit 1
54
+ fi
55
+ ```
56
+
57
+ Report: "Found {N} plans in {phase_dir}"
58
+ </step>
59
+
60
+ <step name="discover_plans">
61
+ List all plans and extract metadata:
62
+
63
+ ```bash
64
+ # Get all plans
65
+ ls -1 "$PHASE_DIR"/*-PLAN.md 2>/dev/null | sort
66
+
67
+ # Get completed plans (have SUMMARY.md)
68
+ ls -1 "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null | sort
69
+ ```
70
+
71
+ For each plan, read frontmatter to extract:
72
+ - `wave: N` - Execution wave (pre-computed)
73
+ - `autonomous: true/false` - Whether plan has checkpoints
74
+ - `gap_closure: true/false` - Whether plan closes gaps from verification/UAT
75
+
76
+ Build plan inventory:
77
+ - Plan path
78
+ - Plan ID (e.g., "03-01")
79
+ - Wave number
80
+ - Autonomous flag
81
+ - Gap closure flag
82
+ - Completion status (SUMMARY exists = complete)
83
+
84
+ **Filtering:**
85
+ - Skip completed plans (have SUMMARY.md)
86
+ - If `--gaps-only` flag: also skip plans where `gap_closure` is not `true`
87
+
88
+ If all plans filtered out, report "No matching incomplete plans" and exit.
89
+ </step>
90
+
91
+ <step name="group_by_wave">
92
+ Read `wave` from each plan's frontmatter and group by wave number:
93
+
94
+ ```bash
95
+ # For each plan, extract wave from frontmatter
96
+ for plan in $PHASE_DIR/*-PLAN.md; do
97
+ wave=$(grep "^wave:" "$plan" | cut -d: -f2 | tr -d ' ')
98
+ autonomous=$(grep "^autonomous:" "$plan" | cut -d: -f2 | tr -d ' ')
99
+ echo "$plan:$wave:$autonomous"
100
+ done
101
+ ```
102
+
103
+ **Group plans:**
104
+ ```
105
+ waves = {
106
+ 1: [plan-01, plan-02],
107
+ 2: [plan-03, plan-04],
108
+ 3: [plan-05]
109
+ }
110
+ ```
111
+
112
+ **No dependency analysis needed.** Wave numbers are pre-computed during `/gsd:plan-phase`.
113
+
114
+ Report wave structure with context:
115
+ ```
116
+ ## Execution Plan
117
+
118
+ **Phase {X}: {Name}** — {total_plans} plans across {wave_count} waves
119
+
120
+ | Wave | Plans | What it builds |
121
+ |------|-------|----------------|
122
+ | 1 | 01-01, 01-02 | {from plan objectives} |
123
+ | 2 | 01-03 | {from plan objectives} |
124
+ | 3 | 01-04 [checkpoint] | {from plan objectives} |
125
+
126
+ ```
127
+
128
+ The "What it builds" column comes from skimming plan names/objectives. Keep it brief (3-8 words).
129
+ </step>
130
+
131
+ <step name="execute_waves">
132
+ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
133
+
134
+ **For each wave:**
135
+
136
+ 1. **Describe what's being built (BEFORE spawning):**
137
+
138
+ Read each plan's `<objective>` section. Extract what's being built and why it matters.
139
+
140
+ **Output:**
141
+ ```
142
+ ---
143
+
144
+ ## Wave {N}
145
+
146
+ **{Plan ID}: {Plan Name}**
147
+ {2-3 sentences: what this builds, key technical approach, why it matters in context}
148
+
149
+ **{Plan ID}: {Plan Name}** (if parallel)
150
+ {same format}
151
+
152
+ Spawning {count} agent(s)...
153
+
154
+ ---
155
+ ```
156
+
157
+ **Examples:**
158
+ - Bad: "Executing terrain generation plan"
159
+ - Good: "Procedural terrain generator using Perlin noise — creates height maps, biome zones, and collision meshes. Required before vehicle physics can interact with ground."
160
+
161
+ 2. **Spawn all autonomous agents in wave simultaneously:**
162
+
163
+ Use Task tool with multiple parallel calls. Each agent gets prompt from subagent-task-prompt template:
164
+
165
+ ```
166
+ <objective>
167
+ Execute plan {plan_number} of phase {phase_number}-{phase_name}.
168
+
169
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md.
170
+ </objective>
171
+
172
+ <execution_context>
173
+ @~/.claude/get-shit-done/workflows/execute-plan.md
174
+ @~/.claude/get-shit-done/templates/summary.md
175
+ @~/.claude/get-shit-done/references/checkpoints.md
176
+ @~/.claude/get-shit-done/references/tdd.md
177
+ </execution_context>
178
+
179
+ <context>
180
+ Plan: @{plan_path}
181
+ Project state: @.planning/STATE.md
182
+ Config: @.planning/config.json (if exists)
183
+ </context>
184
+
185
+ <success_criteria>
186
+ - [ ] All tasks executed
187
+ - [ ] Each task committed individually
188
+ - [ ] SUMMARY.md created in plan directory
189
+ - [ ] STATE.md updated with position and decisions
190
+ </success_criteria>
191
+ ```
192
+
193
+ 2. **Wait for all agents in wave to complete:**
194
+
195
+ Task tool blocks until each agent finishes. All parallel agents return together.
196
+
197
+ 3. **Report completion and what was built:**
198
+
199
+ For each completed agent:
200
+ - Verify SUMMARY.md exists at expected path
201
+ - Read SUMMARY.md to extract what was built
202
+ - Note any issues or deviations
203
+
204
+ **Output:**
205
+ ```
206
+ ---
207
+
208
+ ## Wave {N} Complete
209
+
210
+ **{Plan ID}: {Plan Name}**
211
+ {What was built — from SUMMARY.md deliverables}
212
+ {Notable deviations or discoveries, if any}
213
+
214
+ **{Plan ID}: {Plan Name}** (if parallel)
215
+ {same format}
216
+
217
+ {If more waves: brief note on what this enables for next wave}
218
+
219
+ ---
220
+ ```
221
+
222
+ **Examples:**
223
+ - Bad: "Wave 2 complete. Proceeding to Wave 3."
224
+ - Good: "Terrain system complete — 3 biome types, height-based texturing, physics collision meshes. Vehicle physics (Wave 3) can now reference ground surfaces."
225
+
226
+ 4. **Handle failures:**
227
+
228
+ If any agent in wave fails:
229
+ - Report which plan failed and why
230
+ - Ask user: "Continue with remaining waves?" or "Stop execution?"
231
+ - If continue: proceed to next wave (dependent plans may also fail)
232
+ - If stop: exit with partial completion report
233
+
234
+ 5. **Execute checkpoint plans between waves:**
235
+
236
+ See `<checkpoint_handling>` for details.
237
+
238
+ 6. **Proceed to next wave**
239
+
240
+ </step>
241
+
242
+ <step name="checkpoint_handling">
243
+ Plans with `autonomous: false` require user interaction.
244
+
245
+ **Detection:** Check `autonomous` field in frontmatter.
246
+
247
+ **Execution flow for checkpoint plans:**
248
+
249
+ 1. **Spawn agent for checkpoint plan:**
250
+ ```
251
+ Task(prompt="{subagent-task-prompt}", subagent_type="general-purpose")
252
+ ```
253
+
254
+ 2. **Agent runs until checkpoint:**
255
+ - Executes auto tasks normally
256
+ - Reaches checkpoint task (e.g., `type="checkpoint:human-verify"`) or auth gate
257
+ - Agent returns with structured checkpoint (see checkpoint-return.md template)
258
+
259
+ 3. **Agent return includes (structured format):**
260
+ - Completed Tasks table with commit hashes and files
261
+ - Current task name and blocker
262
+ - Checkpoint type and details for user
263
+ - What's awaited from user
264
+
265
+ 4. **Orchestrator presents checkpoint to user:**
266
+
267
+ Extract and display the "Checkpoint Details" and "Awaiting" sections from agent return:
268
+ ```
269
+ ## Checkpoint: [Type]
270
+
271
+ **Plan:** 03-03 Dashboard Layout
272
+ **Progress:** 2/3 tasks complete
273
+
274
+ [Checkpoint Details section from agent return]
275
+
276
+ [Awaiting section from agent return]
277
+ ```
278
+
279
+ 5. **User responds:**
280
+ - "approved" / "done" → spawn continuation agent
281
+ - Description of issues → spawn continuation agent with feedback
282
+ - Decision selection → spawn continuation agent with choice
283
+
284
+ 6. **Spawn continuation agent (NOT resume):**
285
+
286
+ Use the continuation-prompt.md template:
287
+ ```
288
+ Task(
289
+ prompt=filled_continuation_template,
290
+ subagent_type="general-purpose"
291
+ )
292
+ ```
293
+
294
+ Fill template with:
295
+ - `{completed_tasks_table}`: From agent's checkpoint return
296
+ - `{resume_task_number}`: Current task from checkpoint
297
+ - `{resume_task_name}`: Current task name from checkpoint
298
+ - `{user_response}`: What user provided
299
+ - `{resume_instructions}`: Based on checkpoint type (see continuation-prompt.md)
300
+
301
+ 7. **Continuation agent executes:**
302
+ - Verifies previous commits exist
303
+ - Continues from resume point
304
+ - May hit another checkpoint (repeat from step 4)
305
+ - Or completes plan
306
+
307
+ 8. **Repeat until plan completes or user stops**
308
+
309
+ **Why fresh agent instead of resume:**
310
+ Resume relies on Claude Code's internal serialization which breaks with parallel tool calls.
311
+ Fresh agents with explicit state are more reliable and maintain full context.
312
+
313
+ **Checkpoint in parallel context:**
314
+ If a plan in a parallel wave has a checkpoint:
315
+ - Spawn as normal
316
+ - Agent pauses at checkpoint and returns with structured state
317
+ - Other parallel agents may complete while waiting
318
+ - Present checkpoint to user
319
+ - Spawn continuation agent with user response
320
+ - Wait for all agents to finish before next wave
321
+ </step>
322
+
323
+ <step name="aggregate_results">
324
+ After all waves complete, aggregate results:
325
+
326
+ ```markdown
327
+ ## Phase {X}: {Name} Execution Complete
328
+
329
+ **Waves executed:** {N}
330
+ **Plans completed:** {M} of {total}
331
+
332
+ ### Wave Summary
333
+
334
+ | Wave | Plans | Status |
335
+ |------|-------|--------|
336
+ | 1 | plan-01, plan-02 | ✓ Complete |
337
+ | CP | plan-03 | ✓ Verified |
338
+ | 2 | plan-04 | ✓ Complete |
339
+ | 3 | plan-05 | ✓ Complete |
340
+
341
+ ### Plan Details
342
+
343
+ 1. **03-01**: [one-liner from SUMMARY.md]
344
+ 2. **03-02**: [one-liner from SUMMARY.md]
345
+ ...
346
+
347
+ ### Issues Encountered
348
+ [Aggregate from all SUMMARYs, or "None"]
349
+ ```
350
+ </step>
351
+
352
+ <step name="verify_phase_goal">
353
+ Verify phase achieved its GOAL, not just completed its TASKS.
354
+
355
+ **Spawn verifier:**
356
+
357
+ ```
358
+ Task(
359
+ prompt="Verify phase {phase_number} goal achievement.
360
+
361
+ Phase directory: {phase_dir}
362
+ Phase goal: {goal from ROADMAP.md}
363
+
364
+ Check must_haves against actual codebase. Create VERIFICATION.md.
365
+ Verify what actually exists in the code.",
366
+ subagent_type="gsd-verifier"
367
+ )
368
+ ```
369
+
370
+ **Read verification status:**
371
+
372
+ ```bash
373
+ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
374
+ ```
375
+
376
+ **Route by status:**
377
+
378
+ | Status | Action |
379
+ |--------|--------|
380
+ | `passed` | Continue to update_roadmap |
381
+ | `human_needed` | Present items to user, get approval or feedback |
382
+ | `gaps_found` | Present gap summary, offer `/gsd:plan-phase {phase} --gaps` |
383
+
384
+ **If passed:**
385
+
386
+ Phase goal verified. Proceed to update_roadmap.
387
+
388
+ **If human_needed:**
389
+
390
+ ```markdown
391
+ ## ✓ Phase {X}: {Name} — Human Verification Required
392
+
393
+ All automated checks passed. {N} items need human testing:
394
+
395
+ ### Human Verification Checklist
396
+
397
+ {Extract from VERIFICATION.md human_verification section}
398
+
399
+ ---
400
+
401
+ **After testing:**
402
+ - "approved" → continue to update_roadmap
403
+ - Report issues → will route to gap closure planning
404
+ ```
405
+
406
+ If user approves → continue to update_roadmap.
407
+ If user reports issues → treat as gaps_found.
408
+
409
+ **If gaps_found:**
410
+
411
+ Present gaps and offer next command:
412
+
413
+ ```markdown
414
+ ## ⚠ Phase {X}: {Name} — Gaps Found
415
+
416
+ **Score:** {N}/{M} must-haves verified
417
+ **Report:** {phase_dir}/{phase}-VERIFICATION.md
418
+
419
+ ### What's Missing
420
+
421
+ {Extract gap summaries from VERIFICATION.md gaps section}
422
+
423
+ ---
424
+
425
+ ## ▶ Next Up
426
+
427
+ **Plan gap closure** — create additional plans to complete the phase
428
+
429
+ `/gsd:plan-phase {X} --gaps`
430
+
431
+ <sub>`/clear` first → fresh context window</sub>
432
+
433
+ ---
434
+
435
+ **Also available:**
436
+ - `cat {phase_dir}/{phase}-VERIFICATION.md` — see full report
437
+ - `/gsd:verify-work {X}` — manual testing before planning
438
+ ```
439
+
440
+ User runs `/gsd:plan-phase {X} --gaps` which:
441
+ 1. Reads VERIFICATION.md gaps
442
+ 2. Creates additional plans (04, 05, etc.) with `gap_closure: true` to close gaps
443
+ 3. User then runs `/gsd:execute-phase {X} --gaps-only`
444
+ 4. Execute-phase runs only gap closure plans (04-05)
445
+ 5. Verifier runs again after new plans complete
446
+
447
+ User stays in control at each decision point.
448
+ </step>
449
+
450
+ <step name="update_roadmap">
451
+ Update ROADMAP.md to reflect phase completion:
452
+
453
+ ```bash
454
+ # Mark phase complete
455
+ # Update completion date
456
+ # Update status
457
+ ```
458
+
459
+ Commit phase completion (roadmap, state, verification):
460
+ ```bash
461
+ git add .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md
462
+ git add .planning/REQUIREMENTS.md # if updated
463
+ git commit -m "docs(phase-{X}): complete phase execution"
464
+ ```
465
+ </step>
466
+
467
+ <step name="offer_next">
468
+ Present next steps based on milestone status:
469
+
470
+ **If more phases remain:**
471
+ ```
472
+ ## Next Up
473
+
474
+ **Phase {X+1}: {Name}** — {Goal}
475
+
476
+ `/gsd:plan-phase {X+1}`
477
+
478
+ <sub>`/clear` first for fresh context</sub>
479
+ ```
480
+
481
+ **If milestone complete:**
482
+ ```
483
+ MILESTONE COMPLETE!
484
+
485
+ All {N} phases executed.
486
+
487
+ `/gsd:complete-milestone`
488
+ ```
489
+ </step>
490
+
491
+ </process>
492
+
493
+ <context_efficiency>
494
+ **Why this works:**
495
+
496
+ Orchestrator context usage: ~10-15%
497
+ - Read plan frontmatter (small)
498
+ - Analyze dependencies (logic, no heavy reads)
499
+ - Fill template strings
500
+ - Spawn Task calls
501
+ - Collect results
502
+
503
+ Each subagent: Fresh 200k context
504
+ - Loads full execute-plan workflow
505
+ - Loads templates, references
506
+ - Executes plan with full capacity
507
+ - Creates SUMMARY, commits
508
+
509
+ **No polling.** Task tool blocks until completion. No TaskOutput loops.
510
+
511
+ **No context bleed.** Orchestrator never reads workflow internals. Just paths and results.
512
+ </context_efficiency>
513
+
514
+ <failure_handling>
515
+ **Subagent fails mid-plan:**
516
+ - SUMMARY.md won't exist
517
+ - Orchestrator detects missing SUMMARY
518
+ - Reports failure, asks user how to proceed
519
+
520
+ **Dependency chain breaks:**
521
+ - Wave 1 plan fails
522
+ - Wave 2 plans depending on it will likely fail
523
+ - Orchestrator can still attempt them (user choice)
524
+ - Or skip dependent plans entirely
525
+
526
+ **All agents in wave fail:**
527
+ - Something systemic (git issues, permissions, etc.)
528
+ - Stop execution
529
+ - Report for manual investigation
530
+
531
+ **Checkpoint fails to resolve:**
532
+ - User can't approve or provides repeated issues
533
+ - Ask: "Skip this plan?" or "Abort phase execution?"
534
+ - Record partial progress in STATE.md
535
+ </failure_handling>
536
+
537
+ <resumption>
538
+ **Resuming interrupted execution:**
539
+
540
+ If phase execution was interrupted (context limit, user exit, error):
541
+
542
+ 1. Run `/gsd:execute-phase {phase}` again
543
+ 2. discover_plans finds completed SUMMARYs
544
+ 3. Skips completed plans
545
+ 4. Resumes from first incomplete plan
546
+ 5. Continues wave-based execution
547
+
548
+ **STATE.md tracks:**
549
+ - Last completed plan
550
+ - Current wave
551
+ - Any pending checkpoints
552
+ </resumption>