@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.
- package/CHANGELOG.md +33 -1
- package/agents/gsd-phase-researcher.md +1 -1
- package/agents/gsd-roadmapper.md +39 -5
- package/agents/gsd-verifier.md +20 -4
- package/bin/install-codex.js +1 -1
- package/bin/install.js +65 -8
- package/commands/gsd/discuss-phase.md +3 -2
- package/commands/gsd/plan-phase.md +1 -1
- package/commands/gsd/reapply-patches.md +3 -3
- package/commands/gsd/verify-work.md +1 -1
- package/get-shit-done/bin/gsd-tools.js +222 -20
- package/get-shit-done/bin/gsd-tools.test.js +189 -0
- package/get-shit-done/references/model-profile-resolution.md +4 -2
- package/get-shit-done/references/model-profiles.md +3 -0
- package/get-shit-done/references/questioning.md +1 -0
- package/get-shit-done/templates/UAT.md +1 -1
- package/get-shit-done/templates/config.json +2 -1
- package/get-shit-done/templates/context.md +2 -2
- package/get-shit-done/templates/planner-subagent-prompt.md +4 -4
- package/get-shit-done/templates/research.md +2 -2
- package/get-shit-done/templates/verification-report.md +1 -1
- package/get-shit-done/workflows/diagnose-issues.md +1 -1
- package/get-shit-done/workflows/discovery-phase.md +1 -1
- package/get-shit-done/workflows/discuss-phase.md +64 -3
- package/get-shit-done/workflows/execute-phase.md +68 -20
- package/get-shit-done/workflows/execute-plan.md +4 -1
- package/get-shit-done/workflows/new-milestone.md +1 -1
- package/get-shit-done/workflows/new-project.md +3 -3
- package/get-shit-done/workflows/plan-phase.md +54 -2
- package/get-shit-done/workflows/progress.md +2 -2
- package/get-shit-done/workflows/settings.md +13 -2
- package/get-shit-done/workflows/transition.md +48 -2
- package/get-shit-done/workflows/update.md +4 -2
- package/get-shit-done/workflows/verify-phase.md +18 -2
- package/get-shit-done/workflows/verify-work.md +3 -3
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Phase Context Template
|
|
2
2
|
|
|
3
|
-
Template for `.planning/phases/XX-name/{
|
|
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/{
|
|
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}/{
|
|
25
|
+
@.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
|
|
26
26
|
|
|
27
27
|
**Research (if exists):**
|
|
28
|
-
@.planning/phases/{phase_dir}/{
|
|
28
|
+
@.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
|
|
29
29
|
|
|
30
30
|
**Gap Closure (if --gaps mode):**
|
|
31
|
-
@.planning/phases/{phase_dir}/{
|
|
32
|
-
@.planning/phases/{phase_dir}/{
|
|
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/{
|
|
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/{
|
|
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
|
|
@@ -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({
|
|
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
|
|
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: "
|
|
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}/{
|
|
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}/{
|
|
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
|
|
339
|
+
**Mark phase complete and update all tracking files:**
|
|
291
340
|
|
|
292
341
|
```bash
|
|
293
|
-
node ~/.claude/get-shit-done/bin/gsd-tools.js
|
|
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
|
-
|
|
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
|
-
|
|
352
|
+
Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`.
|
|
306
353
|
|
|
307
|
-
|
|
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
|
-
|
|
311
|
-
```
|
|
312
|
-
MILESTONE COMPLETE!
|
|
359
|
+
<step name="offer_next">
|
|
313
360
|
|
|
314
|
-
|
|
361
|
+
**Routing is handled by `transition.md`** — do NOT emit a separate "Next Up" block here.
|
|
315
362
|
|
|
316
|
-
`/gsd:
|
|
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
|
-
|
|
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: "
|
|
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: "
|
|
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
|
|
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}/{
|
|
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 `{
|
|
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
|
-
**{
|
|
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
|
|
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]` —
|
|
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
|
-
|
|
17
|
-
|
|
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:
|
|
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/{
|
|
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({
|
|
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}/{
|
|
369
|
+
@.planning/phases/{phase_dir}/{phase_num}-UAT.md
|
|
370
370
|
|
|
371
371
|
**Project State:**
|
|
372
372
|
@.planning/STATE.md
|
package/package.json
CHANGED