@ahmed118glitch/get-shit-done-codex 1.18.4 → 1.19.2

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 (36) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/agents/gsd-phase-researcher.md +1 -1
  3. package/agents/gsd-roadmapper.md +39 -5
  4. package/agents/gsd-verifier.md +20 -4
  5. package/bin/install-codex.js +1 -1
  6. package/bin/install.js +65 -8
  7. package/commands/gsd/discuss-phase.md +3 -2
  8. package/commands/gsd/plan-phase.md +1 -1
  9. package/commands/gsd/reapply-patches.md +3 -3
  10. package/commands/gsd/verify-work.md +1 -1
  11. package/get-shit-done/bin/gsd-tools.js +222 -20
  12. package/get-shit-done/bin/gsd-tools.test.js +189 -0
  13. package/get-shit-done/references/model-profile-resolution.md +4 -2
  14. package/get-shit-done/references/model-profiles.md +3 -0
  15. package/get-shit-done/references/questioning.md +1 -0
  16. package/get-shit-done/templates/UAT.md +1 -1
  17. package/get-shit-done/templates/config.json +2 -1
  18. package/get-shit-done/templates/context.md +2 -2
  19. package/get-shit-done/templates/planner-subagent-prompt.md +4 -4
  20. package/get-shit-done/templates/research.md +2 -2
  21. package/get-shit-done/templates/verification-report.md +1 -1
  22. package/get-shit-done/workflows/diagnose-issues.md +1 -1
  23. package/get-shit-done/workflows/discovery-phase.md +1 -1
  24. package/get-shit-done/workflows/discuss-phase.md +64 -3
  25. package/get-shit-done/workflows/execute-phase.md +68 -20
  26. package/get-shit-done/workflows/execute-plan.md +4 -1
  27. package/get-shit-done/workflows/new-milestone.md +1 -1
  28. package/get-shit-done/workflows/new-project.md +3 -3
  29. package/get-shit-done/workflows/plan-phase.md +54 -2
  30. package/get-shit-done/workflows/progress.md +2 -2
  31. package/get-shit-done/workflows/settings.md +13 -2
  32. package/get-shit-done/workflows/transition.md +48 -2
  33. package/get-shit-done/workflows/update.md +4 -2
  34. package/get-shit-done/workflows/verify-phase.md +18 -2
  35. package/get-shit-done/workflows/verify-work.md +3 -3
  36. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  # Phase Context Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-CONTEXT.md` - captures implementation decisions for a phase.
3
+ Template for `.planning/phases/XX-name/{phase_num}-CONTEXT.md` - captures implementation decisions for a phase.
4
4
 
5
5
  **Purpose:** Document decisions that downstream agents need. Researcher uses this to know WHAT to investigate. Planner uses this to know WHAT choices are locked vs flexible.
6
6
 
@@ -276,7 +276,7 @@ The output should answer: "What does the researcher need to investigate? What ch
276
276
  - "Easy to use"
277
277
 
278
278
  **After creation:**
279
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-CONTEXT.md`
279
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-CONTEXT.md`
280
280
  - `gsd-phase-researcher` uses decisions to focus investigation
281
281
  - `gsd-planner` uses decisions + research to create executable tasks
282
282
  - Downstream agents should NOT need to ask the user again about captured decisions
@@ -22,14 +22,14 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
22
22
  @.planning/REQUIREMENTS.md
23
23
 
24
24
  **Phase Context (if exists):**
25
- @.planning/phases/{phase_dir}/{phase}-CONTEXT.md
25
+ @.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
26
26
 
27
27
  **Research (if exists):**
28
- @.planning/phases/{phase_dir}/{phase}-RESEARCH.md
28
+ @.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
29
29
 
30
30
  **Gap Closure (if --gaps mode):**
31
- @.planning/phases/{phase_dir}/{phase}-VERIFICATION.md
32
- @.planning/phases/{phase_dir}/{phase}-UAT.md
31
+ @.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md
32
+ @.planning/phases/{phase_dir}/{phase_num}-UAT.md
33
33
 
34
34
  </planning_context>
35
35
 
@@ -1,6 +1,6 @@
1
1
  # Research Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecosystem research before planning.
3
+ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
4
 
5
5
  **Purpose:** Document what Claude needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
6
 
@@ -547,6 +547,6 @@ function useVehicleControls(rigidBodyRef) {
547
547
  - Code examples can be referenced in task actions
548
548
 
549
549
  **After creation:**
550
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-RESEARCH.md`
550
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
551
551
  - Referenced during planning workflow
552
552
  - plan-phase loads it automatically when present
@@ -1,6 +1,6 @@
1
1
  # Verification Report Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-VERIFICATION.md` — phase goal verification results.
3
+ Template for `.planning/phases/XX-name/{phase_num}-VERIFICATION.md` — phase goal verification results.
4
4
 
5
5
  ---
6
6
 
@@ -158,7 +158,7 @@ Update status in frontmatter to "diagnosed".
158
158
 
159
159
  Commit the updated UAT.md:
160
160
  ```bash
161
- node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs({phase}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase}-UAT.md"
161
+ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
162
162
  ```
163
163
  </step>
164
164
 
@@ -216,7 +216,7 @@ After creating DISCOVERY.md, check confidence level.
216
216
  If confidence is LOW:
217
217
  Use AskUserQuestion:
218
218
 
219
- - header: "Low Confidence"
219
+ - header: "Low Conf."
220
220
  - question: "Discovery confidence is LOW: [reason]. How would you like to proceed?"
221
221
  - options:
222
222
  - "Dig deeper" - Do more research before planning
@@ -136,7 +136,7 @@ ls ${phase_dir}/*-CONTEXT.md 2>/dev/null
136
136
 
137
137
  **If exists:**
138
138
  Use AskUserQuestion:
139
- - header: "Existing context"
139
+ - header: "Context"
140
140
  - question: "Phase [X] already has context. What do you want to do?"
141
141
  - options:
142
142
  - "Update it" — Review and revise existing context
@@ -240,18 +240,19 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
240
240
  ```
241
241
 
242
242
  2. **Ask 4 questions using AskUserQuestion:**
243
- - header: "[Area]"
243
+ - header: "[Area]" (max 12 chars — abbreviate if needed)
244
244
  - question: Specific decision for this area
245
245
  - options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically)
246
246
  - Include "You decide" as an option when reasonable — captures Claude discretion
247
247
 
248
248
  3. **After 4 questions, check:**
249
- - header: "[Area]"
249
+ - header: "[Area]" (max 12 chars)
250
250
  - question: "More questions about [area], or move to next?"
251
251
  - options: "More questions" / "Next area"
252
252
 
253
253
  If "More questions" → ask 4 more, then check again
254
254
  If "Next area" → proceed to next selected area
255
+ If "Other" (free text) → interpret intent: continuation phrases ("chat more", "keep going", "yes", "more") map to "More questions"; advancement phrases ("done", "move on", "next", "skip") map to "Next area". If ambiguous, ask: "Continue with more questions about [area], or move to the next area?"
255
256
 
256
257
  4. **After all areas complete:**
257
258
  - header: "Done"
@@ -394,6 +395,65 @@ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(${padded_phase}): cap
394
395
  Confirm: "Committed: docs(${padded_phase}): capture phase context"
395
396
  </step>
396
397
 
398
+ <step name="update_state">
399
+ Update STATE.md with session info:
400
+
401
+ ```bash
402
+ node ~/.claude/get-shit-done/bin/gsd-tools.js state record-session \
403
+ --stopped-at "Phase ${PHASE} context gathered" \
404
+ --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
405
+ ```
406
+
407
+ Commit STATE.md:
408
+
409
+ ```bash
410
+ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
411
+ ```
412
+ </step>
413
+
414
+ <step name="auto_advance">
415
+ Check for auto-advance trigger:
416
+
417
+ 1. Parse `--auto` flag from $ARGUMENTS
418
+ 2. Read `workflow.auto_advance` from config:
419
+ ```bash
420
+ AUTO_CFG=$(node ~/.claude/get-shit-done/bin/gsd-tools.js config get workflow.auto_advance 2>/dev/null || echo "false")
421
+ ```
422
+
423
+ **If `--auto` flag present OR `AUTO_CFG` is true:**
424
+
425
+ Display banner:
426
+ ```
427
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
428
+ GSD ► AUTO-ADVANCING TO PLAN
429
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
430
+
431
+ Context captured. Spawning plan-phase...
432
+ ```
433
+
434
+ Spawn plan-phase as Task:
435
+ ```
436
+ Task(
437
+ prompt="Run /gsd:plan-phase ${PHASE} --auto",
438
+ subagent_type="general-purpose",
439
+ description="Plan Phase ${PHASE}"
440
+ )
441
+ ```
442
+
443
+ **Handle plan-phase return:**
444
+ - **PLANNING COMPLETE** → Plan-phase handles chaining to execute-phase (via its own auto_advance step)
445
+ - **PLANNING INCONCLUSIVE / CHECKPOINT** → Display result, stop chain:
446
+ ```
447
+ Auto-advance stopped: Planning needs input.
448
+
449
+ Review the output above and continue manually:
450
+ /gsd:plan-phase ${PHASE}
451
+ ```
452
+
453
+ **If neither `--auto` nor config enabled:**
454
+ Route to `confirm_creation` step (existing behavior — show manual next steps).
455
+ </step>
456
+
397
457
  </process>
398
458
 
399
459
  <success_criteria>
@@ -404,5 +464,6 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context"
404
464
  - Scope creep redirected to deferred ideas
405
465
  - CONTEXT.md captures actual decisions, not vague vision
406
466
  - Deferred ideas preserved for future phases
467
+ - STATE.md updated with session info
407
468
  - User knows next steps
408
469
  </success_criteria>
@@ -226,6 +226,55 @@ After all waves:
226
226
  ```
227
227
  </step>
228
228
 
229
+ <step name="close_parent_artifacts">
230
+ **For decimal/polish phases only (X.Y pattern):** Close the feedback loop by resolving parent UAT and debug artifacts.
231
+
232
+ **Skip if** phase number has no decimal (e.g., `3`, `04`) — only applies to gap-closure phases like `4.1`, `03.1`.
233
+
234
+ **1. Detect decimal phase and derive parent:**
235
+ ```bash
236
+ # Check if phase_number contains a decimal
237
+ if [[ "$PHASE_NUMBER" == *.* ]]; then
238
+ PARENT_PHASE="${PHASE_NUMBER%%.*}"
239
+ fi
240
+ ```
241
+
242
+ **2. Find parent UAT file:**
243
+ ```bash
244
+ find .planning/phases -path "*${PARENT_PHASE}*/*-UAT.md" -type f 2>/dev/null
245
+ ```
246
+
247
+ **If no parent UAT found:** Skip this step (gap-closure may have been triggered by VERIFICATION.md instead).
248
+
249
+ **3. Update UAT gap statuses:**
250
+
251
+ Read the parent UAT file's `## Gaps` section. For each gap entry with `status: failed`:
252
+ - Update to `status: resolved`
253
+
254
+ **4. Update UAT frontmatter:**
255
+
256
+ If all gaps now have `status: resolved`:
257
+ - Update frontmatter `status: diagnosed` → `status: resolved`
258
+ - Update frontmatter `updated:` timestamp
259
+
260
+ **5. Resolve referenced debug sessions:**
261
+
262
+ For each gap that has a `debug_session:` field:
263
+ - Read the debug session file
264
+ - Update frontmatter `status:` → `resolved`
265
+ - Update frontmatter `updated:` timestamp
266
+ - Move to resolved directory:
267
+ ```bash
268
+ mkdir -p .planning/debug/resolved
269
+ mv .planning/debug/{slug}.md .planning/debug/resolved/
270
+ ```
271
+
272
+ **6. Commit updated artifacts:**
273
+ ```bash
274
+ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
275
+ ```
276
+ </step>
277
+
229
278
  <step name="verify_phase_goal">
230
279
  Verify phase achieved its GOAL, not just completed tasks.
231
280
 
@@ -267,7 +316,7 @@ All automated checks passed. {N} items need human testing:
267
316
  ## ⚠ Phase {X}: {Name} — Gaps Found
268
317
 
269
318
  **Score:** {N}/{M} must-haves verified
270
- **Report:** {phase_dir}/{phase}-VERIFICATION.md
319
+ **Report:** {phase_dir}/{phase_num}-VERIFICATION.md
271
320
 
272
321
  ### What's Missing
273
322
  {Gap summaries from VERIFICATION.md}
@@ -279,7 +328,7 @@ All automated checks passed. {N} items need human testing:
279
328
 
280
329
  <sub>`/clear` first → fresh context window</sub>
281
330
 
282
- Also: `cat {phase_dir}/{phase}-VERIFICATION.md` — full report
331
+ Also: `cat {phase_dir}/{phase_num}-VERIFICATION.md` — full report
283
332
  Also: `/gsd:verify-work {X}` — manual testing first
284
333
  ```
285
334
 
@@ -287,34 +336,33 @@ Gap closure cycle: `/gsd:plan-phase {X} --gaps` reads VERIFICATION.md → create
287
336
  </step>
288
337
 
289
338
  <step name="update_roadmap">
290
- Mark phase complete in ROADMAP.md (date, status).
339
+ **Mark phase complete and update all tracking files:**
291
340
 
292
341
  ```bash
293
- node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md .planning/REQUIREMENTS.md
294
- ```
295
- </step>
296
-
297
- <step name="offer_next">
298
-
299
- **If more phases:**
342
+ COMPLETION=$(node ~/.claude/get-shit-done/bin/gsd-tools.js phase complete "${PHASE_NUMBER}")
300
343
  ```
301
- ## Next Up
302
344
 
303
- **Phase {X+1}: {Name}** — {Goal}
345
+ The CLI handles:
346
+ - Marking phase checkbox `[x]` with completion date
347
+ - Updating Progress table (Status → Complete, date)
348
+ - Updating plan count to final
349
+ - Advancing STATE.md to next phase
350
+ - Updating REQUIREMENTS.md traceability
304
351
 
305
- `/gsd:plan-phase {X+1}`
352
+ Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`.
306
353
 
307
- <sub>`/clear` first for fresh context</sub>
354
+ ```bash
355
+ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md .planning/phases/{phase_dir}/*-VERIFICATION.md
308
356
  ```
357
+ </step>
309
358
 
310
- **If milestone complete:**
311
- ```
312
- MILESTONE COMPLETE!
359
+ <step name="offer_next">
313
360
 
314
- All {N} phases executed.
361
+ **Routing is handled by `transition.md`** — do NOT emit a separate "Next Up" block here.
315
362
 
316
- `/gsd:complete-milestone`
317
- ```
363
+ After `verify_phase_goal` passes (or human approves), the workflow ends. The user runs `/gsd:progress` or the transition workflow handles next-step routing.
364
+
365
+ **Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd:plan-phase {X} --gaps`). No additional routing needed.
318
366
  </step>
319
367
 
320
368
  </process>
@@ -379,7 +379,10 @@ If SUMMARY "Issues Encountered" ≠ "None": yolo → log and continue. Interacti
379
379
  </step>
380
380
 
381
381
  <step name="update_roadmap">
382
- More plans → update plan count, keep "In progress". Last plan → mark phase "Complete", add date.
382
+ ```bash
383
+ node ~/.claude/get-shit-done/bin/gsd-tools.js roadmap update-plan-progress "${PHASE}"
384
+ ```
385
+ Counts PLAN vs SUMMARY files on disk. Updates progress table row with correct count and status (`In Progress` or `Complete` with date).
383
386
  </step>
384
387
 
385
388
  <step name="git_commit_metadata">
@@ -200,7 +200,7 @@ Present features by category:
200
200
 
201
201
  **If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
202
202
 
203
- **Scope each category** via AskUserQuestion (multiSelect: true):
203
+ **Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
204
204
  - "[Feature 1]" — [brief description]
205
205
  - "[Feature 2]" — [brief description]
206
206
  - "None for this milestone" — Defer entire category
@@ -59,7 +59,7 @@ git init
59
59
  **If `needs_codebase_map` is true** (from init — existing code detected but no codebase map):
60
60
 
61
61
  Use AskUserQuestion:
62
- - header: "Existing Code"
62
+ - header: "Codebase"
63
63
  - question: "I detected existing code in this directory. Would you like to map the codebase first?"
64
64
  - options:
65
65
  - "Map codebase first" — Run /gsd:map-codebase to understand existing architecture (Recommended)
@@ -303,7 +303,7 @@ questions: [
303
303
  ]
304
304
  },
305
305
  {
306
- header: "Model Profile",
306
+ header: "AI Models",
307
307
  question: "Which AI models for planning agents?",
308
308
  multiSelect: false,
309
309
  options: [
@@ -663,7 +663,7 @@ For each capability mentioned:
663
663
 
664
664
  For each category, use AskUserQuestion:
665
665
 
666
- - header: "[Category name]"
666
+ - header: "[Category]" (max 12 chars)
667
667
  - question: "Which [category] features are in v1?"
668
668
  - multiSelect: true
669
669
  - options:
@@ -104,7 +104,7 @@ IMPORTANT: If CONTEXT.md exists below, it contains user decisions from /gsd:disc
104
104
  </additional_context>
105
105
 
106
106
  <output>
107
- Write to: {phase_dir}/{phase}-RESEARCH.md
107
+ Write to: {phase_dir}/{phase_num}-RESEARCH.md
108
108
  </output>
109
109
  ```
110
110
 
@@ -319,7 +319,59 @@ Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
319
319
 
320
320
  ## 13. Present Final Status
321
321
 
322
- Route to `<offer_next>`.
322
+ Route to `<offer_next>` OR `auto_advance` depending on flags/config.
323
+
324
+ ## 14. Auto-Advance Check
325
+
326
+ Check for auto-advance trigger:
327
+
328
+ 1. Parse `--auto` flag from $ARGUMENTS
329
+ 2. Read `workflow.auto_advance` from config:
330
+ ```bash
331
+ AUTO_CFG=$(node ~/.claude/get-shit-done/bin/gsd-tools.js config get workflow.auto_advance 2>/dev/null || echo "false")
332
+ ```
333
+
334
+ **If `--auto` flag present OR `AUTO_CFG` is true:**
335
+
336
+ Display banner:
337
+ ```
338
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
339
+ GSD ► AUTO-ADVANCING TO EXECUTE
340
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
341
+
342
+ Plans ready. Spawning execute-phase...
343
+ ```
344
+
345
+ Spawn execute-phase as Task:
346
+ ```
347
+ Task(
348
+ prompt="Run /gsd:execute-phase ${PHASE}",
349
+ subagent_type="general-purpose",
350
+ description="Execute Phase ${PHASE}"
351
+ )
352
+ ```
353
+
354
+ **Handle execute-phase return:**
355
+ - **PHASE COMPLETE** → Display final summary:
356
+ ```
357
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
358
+ GSD ► PHASE ${PHASE} COMPLETE ✓
359
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
360
+
361
+ Auto-advance pipeline finished.
362
+
363
+ Next: /gsd:discuss-phase ${NEXT_PHASE} --auto
364
+ ```
365
+ - **GAPS FOUND / VERIFICATION FAILED** → Display result, stop chain:
366
+ ```
367
+ Auto-advance stopped: Execution needs review.
368
+
369
+ Review the output above and continue manually:
370
+ /gsd:execute-phase ${PHASE}
371
+ ```
372
+
373
+ **If neither `--auto` nor config enabled:**
374
+ Route to `<offer_next>` (existing behavior).
323
375
 
324
376
  </process>
325
377
 
@@ -194,7 +194,7 @@ Read its `<objective>` section.
194
194
 
195
195
  **Route B: Phase needs planning**
196
196
 
197
- Check if `{phase}-CONTEXT.md` exists in phase directory.
197
+ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
198
198
 
199
199
  **If CONTEXT.md exists:**
200
200
 
@@ -246,7 +246,7 @@ UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
246
246
 
247
247
  ## ⚠ UAT Gaps Found
248
248
 
249
- **{phase}-UAT.md** has {N} gaps requiring fixes.
249
+ **{phase_num}-UAT.md** has {N} gaps requiring fixes.
250
250
 
251
251
  `/gsd:plan-phase {phase} --gaps`
252
252
 
@@ -74,6 +74,15 @@ AskUserQuestion([
74
74
  { label: "No", description: "Skip post-execution verification" }
75
75
  ]
76
76
  },
77
+ {
78
+ question: "Auto-advance pipeline? (discuss → plan → execute automatically)",
79
+ header: "Auto",
80
+ multiSelect: false,
81
+ options: [
82
+ { label: "No (Recommended)", description: "Manual /clear + paste between stages" },
83
+ { label: "Yes", description: "Chain stages via Task() subagents (same isolation)" }
84
+ ]
85
+ },
77
86
  {
78
87
  question: "Git branching strategy?",
79
88
  header: "Branching",
@@ -98,7 +107,8 @@ Merge new settings into existing config.json:
98
107
  "workflow": {
99
108
  "research": true/false,
100
109
  "plan_check": true/false,
101
- "verifier": true/false
110
+ "verifier": true/false,
111
+ "auto_advance": true/false
102
112
  },
103
113
  "git": {
104
114
  "branching_strategy": "none" | "phase" | "milestone"
@@ -123,6 +133,7 @@ Display:
123
133
  | Plan Researcher | {On/Off} |
124
134
  | Plan Checker | {On/Off} |
125
135
  | Execution Verifier | {On/Off} |
136
+ | Auto-Advance | {On/Off} |
126
137
  | Git Branching | {None/Per Phase/Per Milestone} |
127
138
 
128
139
  These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
@@ -139,7 +150,7 @@ Quick commands:
139
150
 
140
151
  <success_criteria>
141
152
  - [ ] Current config read
142
- - [ ] User presented with 5 settings (profile + 3 workflow toggles + git branching)
153
+ - [ ] User presented with 6 settings (profile + 4 workflow toggles + git branching)
143
154
  - [ ] Config updated with model_profile, workflow, and git sections
144
155
  - [ ] Changes confirmed to user
145
156
  </success_criteria>
@@ -358,10 +358,18 @@ This returns all phases with goals, disk status, and completion info.
358
358
 
359
359
  Read ROADMAP.md to get the next phase's name and goal.
360
360
 
361
+ **Check if next phase has CONTEXT.md:**
362
+
363
+ ```bash
364
+ ls .planning/phases/*[X+1]*/*-CONTEXT.md 2>/dev/null
365
+ ```
366
+
361
367
  **If next phase exists:**
362
368
 
363
369
  <if mode="yolo">
364
370
 
371
+ **If CONTEXT.md exists:**
372
+
365
373
  ```
366
374
  Phase [X] marked complete.
367
375
 
@@ -372,10 +380,48 @@ Next: Phase [X+1] — [Name]
372
380
 
373
381
  Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
374
382
 
383
+ **If CONTEXT.md does NOT exist:**
384
+
385
+ ```
386
+ Phase [X] marked complete.
387
+
388
+ Next: Phase [X+1] — [Name]
389
+
390
+ ⚡ Auto-continuing: Discuss Phase [X+1] first
391
+ ```
392
+
393
+ Exit skill and invoke SlashCommand("/gsd:discuss-phase [X+1]")
394
+
375
395
  </if>
376
396
 
377
397
  <if mode="interactive" OR="custom with gates.confirm_transition true">
378
398
 
399
+ **If CONTEXT.md does NOT exist:**
400
+
401
+ ```
402
+ ## ✓ Phase [X] Complete
403
+
404
+ ---
405
+
406
+ ## ▶ Next Up
407
+
408
+ **Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
409
+
410
+ `/gsd:discuss-phase [X+1]` — gather context and clarify approach
411
+
412
+ <sub>`/clear` first → fresh context window</sub>
413
+
414
+ ---
415
+
416
+ **Also available:**
417
+ - `/gsd:plan-phase [X+1]` — skip discussion, plan directly
418
+ - `/gsd:research-phase [X+1]` — investigate unknowns
419
+
420
+ ---
421
+ ```
422
+
423
+ **If CONTEXT.md exists:**
424
+
379
425
  ```
380
426
  ## ✓ Phase [X] Complete
381
427
 
@@ -384,6 +430,7 @@ Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
384
430
  ## ▶ Next Up
385
431
 
386
432
  **Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
433
+ <sub>✓ Context gathered, ready to plan</sub>
387
434
 
388
435
  `/gsd:plan-phase [X+1]`
389
436
 
@@ -392,9 +439,8 @@ Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
392
439
  ---
393
440
 
394
441
  **Also available:**
395
- - `/gsd:discuss-phase [X+1]` — gather context first
442
+ - `/gsd:discuss-phase [X+1]` — revisit context
396
443
  - `/gsd:research-phase [X+1]` — investigate unknowns
397
- - Review roadmap
398
444
 
399
445
  ---
400
446
  ```
@@ -13,8 +13,9 @@ Detect whether GSD is installed locally or globally by checking both locations:
13
13
 
14
14
  ```bash
15
15
  # Check local first (takes priority)
16
- if [ -f "./.claude/get-shit-done/VERSION" ]; then
17
- cat "./.claude/get-shit-done/VERSION"
16
+ # Paths templated at install time for runtime compatibility
17
+ if [ -f ./.claude/get-shit-done/VERSION ]; then
18
+ cat ./.claude/get-shit-done/VERSION
18
19
  echo "LOCAL"
19
20
  elif [ -f ~/.claude/get-shit-done/VERSION ]; then
20
21
  cat ~/.claude/get-shit-done/VERSION
@@ -167,6 +168,7 @@ rm -f ./.claude/cache/gsd-update-check.json
167
168
  ```bash
168
169
  rm -f ~/.claude/cache/gsd-update-check.json
169
170
  ```
171
+ (Paths are templated at install time for runtime compatibility)
170
172
  </step>
171
173
 
172
174
  <step name="display_result">
@@ -59,9 +59,25 @@ Returns JSON: `{ truths: [...], artifacts: [...], key_links: [...] }`
59
59
 
60
60
  Aggregate all must_haves across plans for phase-level verification.
61
61
 
62
- **Option B: Derive from phase goal**
62
+ **Option B: Use Success Criteria from ROADMAP.md**
63
63
 
64
- If no must_haves in frontmatter (MUST_HAVES returns error or empty):
64
+ If no must_haves in frontmatter (MUST_HAVES returns error or empty), check for Success Criteria:
65
+
66
+ ```bash
67
+ PHASE_DATA=$(node ~/.claude/get-shit-done/bin/gsd-tools.js roadmap get-phase "${phase_number}" --raw)
68
+ ```
69
+
70
+ Parse the `success_criteria` array from the JSON output. If non-empty:
71
+ 1. Use each Success Criterion directly as a **truth** (they are already written as observable, testable behaviors)
72
+ 2. Derive **artifacts** (concrete file paths for each truth)
73
+ 3. Derive **key links** (critical wiring where stubs hide)
74
+ 4. Document the must-haves before proceeding
75
+
76
+ Success Criteria from ROADMAP.md are the contract — they override PLAN-level must_haves when both exist.
77
+
78
+ **Option C: Derive from phase goal (fallback)**
79
+
80
+ If no must_haves in frontmatter AND no Success Criteria in ROADMAP:
65
81
  1. State the goal from ROADMAP.md
66
82
  2. Derive **truths** (3-7 observable behaviors, each testable)
67
83
  3. Derive **artifacts** (concrete file paths for each truth)
@@ -164,7 +164,7 @@ skipped: 0
164
164
  [none yet]
165
165
  ```
166
166
 
167
- Write to `.planning/phases/XX-name/{phase}-UAT.md`
167
+ Write to `.planning/phases/XX-name/{phase_num}-UAT.md`
168
168
 
169
169
  Proceed to `present_test`.
170
170
  </step>
@@ -292,7 +292,7 @@ Clear Current Test section:
292
292
 
293
293
  Commit the UAT file:
294
294
  ```bash
295
- node ~/.claude/get-shit-done/bin/gsd-tools.js commit "test({phase}): complete UAT - {passed} passed, {issues} issues" --files ".planning/phases/XX-name/{phase}-UAT.md"
295
+ node ~/.claude/get-shit-done/bin/gsd-tools.js commit "test({phase_num}): complete UAT - {passed} passed, {issues} issues" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
296
296
  ```
297
297
 
298
298
  Present summary:
@@ -366,7 +366,7 @@ Task(
366
366
  **Mode:** gap_closure
367
367
 
368
368
  **UAT with diagnoses:**
369
- @.planning/phases/{phase_dir}/{phase}-UAT.md
369
+ @.planning/phases/{phase_dir}/{phase_num}-UAT.md
370
370
 
371
371
  **Project State:**
372
372
  @.planning/STATE.md
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahmed118glitch/get-shit-done-codex",
3
- "version": "1.18.4",
3
+ "version": "1.19.2",
4
4
  "description": "Codex-native package for the get-shit-done workflow with native subagent orchestration.",
5
5
  "bin": {
6
6
  "get-shit-done-codex": "bin/install-codex.js",