@undeemed/get-shit-done-codex 1.20.2 → 1.20.7
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/README.md +29 -5
- package/agents/gsd-codebase-mapper.md +5 -2
- package/agents/gsd-debugger.md +6 -3
- package/agents/gsd-executor.md +62 -12
- package/agents/gsd-integration-checker.md +20 -0
- package/agents/gsd-phase-researcher.md +106 -14
- package/agents/gsd-plan-checker.md +132 -10
- package/agents/gsd-planner.md +64 -29
- package/agents/gsd-project-researcher.md +5 -2
- package/agents/gsd-research-synthesizer.md +6 -3
- package/agents/gsd-roadmapper.md +8 -5
- package/agents/gsd-verifier.md +33 -16
- package/bin/install.js +6 -6
- package/commands/gsd/add-phase.md +8 -4
- package/commands/gsd/add-todo.md +8 -3
- package/commands/gsd/audit-milestone.md +3 -9
- package/commands/gsd/check-todos.md +8 -4
- package/commands/gsd/cleanup.md +2 -2
- package/commands/gsd/complete-milestone.md +2 -2
- package/commands/gsd/debug.md +5 -3
- package/commands/gsd/discuss-phase.md +4 -8
- package/commands/gsd/execute-phase.md +4 -5
- package/commands/gsd/health.md +2 -2
- package/commands/gsd/help.md +2 -2
- package/commands/gsd/insert-phase.md +3 -4
- package/commands/gsd/list-phase-assumptions.md +5 -9
- package/commands/gsd/map-codebase.md +1 -1
- package/commands/gsd/new-milestone.md +7 -14
- package/commands/gsd/new-project.md +6 -6
- package/commands/gsd/new-project.md.bak +13 -13
- package/commands/gsd/pause-work.md +6 -3
- package/commands/gsd/plan-milestone-gaps.md +3 -9
- package/commands/gsd/plan-phase.md +3 -3
- package/commands/gsd/progress.md +2 -2
- package/commands/gsd/quick.md +4 -3
- package/commands/gsd/reapply-patches.md +2 -2
- package/commands/gsd/remove-phase.md +3 -4
- package/commands/gsd/research-phase.md +23 -21
- package/commands/gsd/resume-work.md +2 -2
- package/commands/gsd/set-profile.md +3 -3
- package/commands/gsd/settings.md +2 -2
- package/commands/gsd/update.md +2 -2
- package/commands/gsd/verify-work.md +5 -6
- package/get-shit-done/bin/gsd-tools.cjs +168 -4858
- package/get-shit-done/bin/lib/commands.cjs +556 -0
- package/get-shit-done/bin/lib/config.cjs +162 -0
- package/get-shit-done/bin/lib/core.cjs +398 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +299 -0
- package/get-shit-done/bin/lib/init.cjs +694 -0
- package/get-shit-done/bin/lib/milestone.cjs +215 -0
- package/get-shit-done/bin/lib/phase.cjs +873 -0
- package/get-shit-done/bin/lib/roadmap.cjs +298 -0
- package/get-shit-done/bin/lib/state.cjs +490 -0
- package/get-shit-done/bin/lib/template.cjs +222 -0
- package/get-shit-done/bin/lib/verify.cjs +772 -0
- package/get-shit-done/references/checkpoints.md +36 -35
- package/get-shit-done/references/decimal-phase-calculation.md +4 -4
- package/get-shit-done/references/git-integration.md +7 -7
- package/get-shit-done/references/git-planning-commit.md +2 -2
- package/get-shit-done/references/model-profile-resolution.md +1 -1
- package/get-shit-done/references/model-profiles.md +2 -2
- package/get-shit-done/references/phase-argument-parsing.md +3 -3
- package/get-shit-done/references/planning-config.md +6 -6
- package/get-shit-done/references/questioning.md +1 -1
- package/get-shit-done/references/verification-patterns.md +2 -2
- package/get-shit-done/templates/DEBUG.md +4 -4
- package/get-shit-done/templates/VALIDATION.md +104 -0
- package/get-shit-done/templates/codebase/architecture.md +1 -1
- package/get-shit-done/templates/codebase/concerns.md +1 -1
- package/get-shit-done/templates/codebase/conventions.md +1 -1
- package/get-shit-done/templates/codebase/structure.md +6 -6
- package/get-shit-done/templates/config.json +2 -1
- package/get-shit-done/templates/context.md +5 -5
- package/get-shit-done/templates/continue-here.md +1 -1
- package/get-shit-done/templates/phase-prompt.md +20 -18
- package/get-shit-done/templates/project.md +1 -1
- package/get-shit-done/templates/research.md +4 -4
- package/get-shit-done/templates/roadmap.md +1 -1
- package/get-shit-done/templates/state.md +1 -1
- package/get-shit-done/templates/summary.md +2 -0
- package/get-shit-done/templates/user-setup.md +8 -8
- package/get-shit-done/templates/verification-report.md +2 -2
- package/get-shit-done/workflows/add-phase.md +2 -2
- package/get-shit-done/workflows/add-todo.md +5 -5
- package/get-shit-done/workflows/audit-milestone.md +67 -12
- package/get-shit-done/workflows/check-todos.md +2 -2
- package/get-shit-done/workflows/cleanup.md +1 -1
- package/get-shit-done/workflows/complete-milestone.md +31 -5
- package/get-shit-done/workflows/diagnose-issues.md +2 -2
- package/get-shit-done/workflows/discovery-phase.md +6 -6
- package/get-shit-done/workflows/discuss-phase.md +79 -24
- package/get-shit-done/workflows/execute-phase.md +65 -20
- package/get-shit-done/workflows/execute-plan.md +31 -27
- package/get-shit-done/workflows/health.md +2 -2
- package/get-shit-done/workflows/help.md +4 -4
- package/get-shit-done/workflows/insert-phase.md +2 -2
- package/get-shit-done/workflows/list-phase-assumptions.md +7 -7
- package/get-shit-done/workflows/map-codebase.md +36 -48
- package/get-shit-done/workflows/new-milestone.md +24 -15
- package/get-shit-done/workflows/new-project.md +49 -46
- package/get-shit-done/workflows/pause-work.md +3 -3
- package/get-shit-done/workflows/plan-milestone-gaps.md +24 -6
- package/get-shit-done/workflows/plan-phase.md +113 -83
- package/get-shit-done/workflows/progress.md +18 -30
- package/get-shit-done/workflows/quick.md +28 -19
- package/get-shit-done/workflows/remove-phase.md +4 -4
- package/get-shit-done/workflows/research-phase.md +13 -14
- package/get-shit-done/workflows/resume-project.md +2 -2
- package/get-shit-done/workflows/set-profile.md +3 -3
- package/get-shit-done/workflows/settings.md +18 -5
- package/get-shit-done/workflows/transition.md +8 -3
- package/get-shit-done/workflows/update.md +9 -9
- package/get-shit-done/workflows/verify-phase.md +9 -9
- package/get-shit-done/workflows/verify-work.md +17 -18
- package/hooks/dist/gsd-context-monitor.js +122 -0
- package/hooks/dist/gsd-statusline.js +17 -0
- package/package.json +2 -2
- package/scripts/build-hooks.js +1 -0
- package/get-shit-done/bin/gsd-tools.test.cjs +0 -2273
|
@@ -40,7 +40,7 @@ When a milestone completes:
|
|
|
40
40
|
**Use `roadmap analyze` for comprehensive readiness check:**
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
ROADMAP=$(node ~/.
|
|
43
|
+
ROADMAP=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap analyze)
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
This returns all phases with plan/summary counts and disk status. Use this to verify:
|
|
@@ -48,6 +48,12 @@ This returns all phases with plan/summary counts and disk status. Use this to ve
|
|
|
48
48
|
- All phases complete (all plans have summaries)? Check `disk_status === 'complete'` for each.
|
|
49
49
|
- `progress_percent` should be 100%.
|
|
50
50
|
|
|
51
|
+
**Requirements completion check (REQUIRED before presenting):**
|
|
52
|
+
|
|
53
|
+
Parse REQUIREMENTS.md traceability table:
|
|
54
|
+
- Count total v1 requirements vs checked-off (`[x]`) requirements
|
|
55
|
+
- Identify any non-Complete rows in the traceability table
|
|
56
|
+
|
|
51
57
|
Present:
|
|
52
58
|
|
|
53
59
|
```
|
|
@@ -60,7 +66,24 @@ Includes:
|
|
|
60
66
|
- Phase 4: Polish (1/1 plan complete)
|
|
61
67
|
|
|
62
68
|
Total: {phase_count} phases, {total_plans} plans, all complete
|
|
69
|
+
Requirements: {N}/{M} v1 requirements checked off
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**If requirements incomplete** (N < M):
|
|
73
|
+
|
|
63
74
|
```
|
|
75
|
+
⚠ Unchecked Requirements:
|
|
76
|
+
|
|
77
|
+
- [ ] {REQ-ID}: {description} (Phase {X})
|
|
78
|
+
- [ ] {REQ-ID}: {description} (Phase {Y})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
MUST present 3 options:
|
|
82
|
+
1. **Proceed anyway** — mark milestone complete with known gaps
|
|
83
|
+
2. **Run audit first** — `/gsd:audit-milestone` to assess gap severity
|
|
84
|
+
3. **Abort** — return to development
|
|
85
|
+
|
|
86
|
+
If user selects "Proceed anyway": note incomplete requirements in MILESTONES.md under `### Known Gaps` with REQ-IDs and descriptions.
|
|
64
87
|
|
|
65
88
|
<config-check>
|
|
66
89
|
|
|
@@ -131,7 +154,7 @@ Extract one-liners from SUMMARY.md files using summary-extract:
|
|
|
131
154
|
```bash
|
|
132
155
|
# For each phase in milestone, extract one-liner
|
|
133
156
|
for summary in .planning/phases/*-*/*-SUMMARY.md; do
|
|
134
|
-
node ~/.
|
|
157
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
|
|
135
158
|
done
|
|
136
159
|
```
|
|
137
160
|
|
|
@@ -344,7 +367,7 @@ Update `.planning/ROADMAP.md` — group completed milestone phases:
|
|
|
344
367
|
**Delegate archival to gsd-tools:**
|
|
345
368
|
|
|
346
369
|
```bash
|
|
347
|
-
ARCHIVE=$(node ~/.
|
|
370
|
+
ARCHIVE=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
|
|
348
371
|
```
|
|
349
372
|
|
|
350
373
|
The CLI handles:
|
|
@@ -444,7 +467,7 @@ Check branching strategy and offer merge options.
|
|
|
444
467
|
Use `init milestone-op` for context, or load config directly:
|
|
445
468
|
|
|
446
469
|
```bash
|
|
447
|
-
INIT=$(node ~/.
|
|
470
|
+
INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init execute-phase "1")
|
|
448
471
|
```
|
|
449
472
|
|
|
450
473
|
Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
|
|
@@ -592,7 +615,7 @@ git push origin v[X.Y]
|
|
|
592
615
|
Commit milestone completion.
|
|
593
616
|
|
|
594
617
|
```bash
|
|
595
|
-
node ~/.
|
|
618
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
|
|
596
619
|
```
|
|
597
620
|
```
|
|
598
621
|
|
|
@@ -669,6 +692,9 @@ Milestone completion is successful when:
|
|
|
669
692
|
- [ ] STATE.md updated with fresh project reference
|
|
670
693
|
- [ ] Git tag created (v[X.Y])
|
|
671
694
|
- [ ] Milestone commit made (includes archive files and deletion)
|
|
695
|
+
- [ ] Requirements completion checked against REQUIREMENTS.md traceability table
|
|
696
|
+
- [ ] Incomplete requirements surfaced with proceed/audit/abort options
|
|
697
|
+
- [ ] Known gaps recorded in MILESTONES.md if user proceeded with incomplete requirements
|
|
672
698
|
- [ ] User knows next step (/gsd:new-milestone)
|
|
673
699
|
|
|
674
700
|
</success_criteria>
|
|
@@ -79,7 +79,7 @@ For each gap, fill the debug-subagent-prompt template and spawn:
|
|
|
79
79
|
|
|
80
80
|
```
|
|
81
81
|
Task(
|
|
82
|
-
prompt=filled_debug_subagent_prompt,
|
|
82
|
+
prompt=filled_debug_subagent_prompt + "\n\n<files_to_read>\n- {phase_dir}/{phase_num}-UAT.md\n- .planning/STATE.md\n</files_to_read>",
|
|
83
83
|
subagent_type="general-purpose",
|
|
84
84
|
description="Debug: {truth_short}"
|
|
85
85
|
)
|
|
@@ -158,7 +158,7 @@ Update status in frontmatter to "diagnosed".
|
|
|
158
158
|
|
|
159
159
|
Commit the updated UAT.md:
|
|
160
160
|
```bash
|
|
161
|
-
node ~/.
|
|
161
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs 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
|
|
|
@@ -22,13 +22,13 @@ NOTE: For comprehensive ecosystem research ("how do experts build this"), use /g
|
|
|
22
22
|
<source_hierarchy>
|
|
23
23
|
**MANDATORY: Context7 BEFORE WebSearch**
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Codex's training data is 6-18 months stale. Always verify.
|
|
26
26
|
|
|
27
27
|
1. **Context7 MCP FIRST** - Current docs, no hallucination
|
|
28
28
|
2. **Official docs** - When Context7 lacks coverage
|
|
29
29
|
3. **WebSearch LAST** - For comparisons and trends only
|
|
30
30
|
|
|
31
|
-
See ~/.
|
|
31
|
+
See ~/.codex/get-shit-done/templates/discovery.md `<discovery_protocol>` for full protocol.
|
|
32
32
|
</source_hierarchy>
|
|
33
33
|
|
|
34
34
|
<process>
|
|
@@ -107,7 +107,7 @@ For: Choosing between options, new external integration.
|
|
|
107
107
|
|
|
108
108
|
5. **Cross-verify:** Any WebSearch finding → confirm with Context7/official docs.
|
|
109
109
|
|
|
110
|
-
6. **Create DISCOVERY.md** using ~/.
|
|
110
|
+
6. **Create DISCOVERY.md** using ~/.codex/get-shit-done/templates/discovery.md structure:
|
|
111
111
|
|
|
112
112
|
- Summary with recommendation
|
|
113
113
|
- Key findings per option
|
|
@@ -126,7 +126,7 @@ For: Architectural decisions, novel problems, high-risk choices.
|
|
|
126
126
|
|
|
127
127
|
**Process:**
|
|
128
128
|
|
|
129
|
-
1. **Scope the discovery** using ~/.
|
|
129
|
+
1. **Scope the discovery** using ~/.codex/get-shit-done/templates/discovery.md:
|
|
130
130
|
|
|
131
131
|
- Define clear scope
|
|
132
132
|
- Define include/exclude boundaries
|
|
@@ -160,7 +160,7 @@ For: Architectural decisions, novel problems, high-risk choices.
|
|
|
160
160
|
|
|
161
161
|
6. **Create comprehensive DISCOVERY.md:**
|
|
162
162
|
|
|
163
|
-
- Full structure from ~/.
|
|
163
|
+
- Full structure from ~/.codex/get-shit-done/templates/discovery.md
|
|
164
164
|
- Quality report with source attribution
|
|
165
165
|
- Confidence by finding
|
|
166
166
|
- If LOW confidence on any critical finding → add validation checkpoints
|
|
@@ -184,7 +184,7 @@ Ask: What do we need to learn before we can plan this phase?
|
|
|
184
184
|
</step>
|
|
185
185
|
|
|
186
186
|
<step name="create_discovery_scope">
|
|
187
|
-
Use ~/.
|
|
187
|
+
Use ~/.codex/get-shit-done/templates/discovery.md.
|
|
188
188
|
|
|
189
189
|
Include:
|
|
190
190
|
|
|
@@ -13,7 +13,7 @@ You are a thinking partner, not an interviewer. The user is the visionary — yo
|
|
|
13
13
|
|
|
14
14
|
2. **gsd-planner** — Reads CONTEXT.md to know WHAT decisions are locked
|
|
15
15
|
- "Pull-to-refresh on mobile" → planner includes that in task specs
|
|
16
|
-
- "
|
|
16
|
+
- "Codex's Discretion: loading skeleton" → planner can decide approach
|
|
17
17
|
|
|
18
18
|
**Your job:** Capture decisions clearly enough that downstream agents can act on them without asking the user again.
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ You are a thinking partner, not an interviewer. The user is the visionary — yo
|
|
|
21
21
|
</downstream_awareness>
|
|
22
22
|
|
|
23
23
|
<philosophy>
|
|
24
|
-
**User = founder/visionary.
|
|
24
|
+
**User = founder/visionary. Codex = builder.**
|
|
25
25
|
|
|
26
26
|
The user knows:
|
|
27
27
|
- How they imagine it working
|
|
@@ -98,7 +98,7 @@ Phase: "API documentation"
|
|
|
98
98
|
|
|
99
99
|
**The key question:** What decisions would change the outcome that the user should weigh in on?
|
|
100
100
|
|
|
101
|
-
**
|
|
101
|
+
**Codex handles these (don't ask):**
|
|
102
102
|
- Technical implementation details
|
|
103
103
|
- Architecture patterns
|
|
104
104
|
- Performance optimization
|
|
@@ -111,7 +111,7 @@ Phase: "API documentation"
|
|
|
111
111
|
Phase number from argument (required).
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
|
-
INIT=$(node ~/.
|
|
114
|
+
INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
|
|
@@ -206,9 +206,10 @@ We'll clarify HOW to implement this.
|
|
|
206
206
|
**Then use AskUserQuestion (multiSelect: true):**
|
|
207
207
|
- header: "Discuss"
|
|
208
208
|
- question: "Which areas do you want to discuss for [phase name]?"
|
|
209
|
-
- options: Generate 3-4 phase-specific gray areas, each
|
|
209
|
+
- options: Generate 3-4 phase-specific gray areas, each with:
|
|
210
210
|
- "[Specific area]" (label) — concrete, not generic
|
|
211
211
|
- [1-2 questions this covers] (description)
|
|
212
|
+
- **Highlight the recommended choice with brief explanation why**
|
|
212
213
|
|
|
213
214
|
**Do NOT include a "skip" or "you decide" option.** User ran this command to discuss — give them real choices.
|
|
214
215
|
|
|
@@ -258,8 +259,8 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
|
|
|
258
259
|
2. **Ask 4 questions using AskUserQuestion:**
|
|
259
260
|
- header: "[Area]" (max 12 chars — abbreviate if needed)
|
|
260
261
|
- question: Specific decision for this area
|
|
261
|
-
- options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically)
|
|
262
|
-
- Include "You decide" as an option when reasonable — captures
|
|
262
|
+
- options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically), with the recommended choice highlighted and brief explanation why
|
|
263
|
+
- Include "You decide" as an option when reasonable — captures Codex discretion
|
|
263
264
|
|
|
264
265
|
3. **After 4 questions, check:**
|
|
265
266
|
- header: "[Area]" (max 12 chars)
|
|
@@ -270,10 +271,17 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
|
|
|
270
271
|
If "Next area" → proceed to next selected area
|
|
271
272
|
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?"
|
|
272
273
|
|
|
273
|
-
4. **After all areas complete:**
|
|
274
|
-
-
|
|
275
|
-
-
|
|
276
|
-
|
|
274
|
+
4. **After all initially-selected areas complete:**
|
|
275
|
+
- Summarize what was captured from the discussion so far
|
|
276
|
+
- AskUserQuestion:
|
|
277
|
+
- header: "Done"
|
|
278
|
+
- question: "We've discussed [list areas]. Which gray areas remain unclear?"
|
|
279
|
+
- options: "Explore more gray areas" / "I'm ready for context"
|
|
280
|
+
- If "Explore more gray areas":
|
|
281
|
+
- Identify 2-4 additional gray areas based on what was learned
|
|
282
|
+
- Return to present_gray_areas logic with these new areas
|
|
283
|
+
- Loop: discuss new areas, then prompt again
|
|
284
|
+
- If "I'm ready for context": Proceed to write_context
|
|
277
285
|
|
|
278
286
|
**Question design:**
|
|
279
287
|
- Options should be concrete, not abstract ("Cards" not "Option A")
|
|
@@ -331,8 +339,8 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
|
|
|
331
339
|
### [Category 2 that was discussed]
|
|
332
340
|
- [Decision or preference captured]
|
|
333
341
|
|
|
334
|
-
###
|
|
335
|
-
[Areas where user said "you decide" — note that
|
|
342
|
+
### Codex's Discretion
|
|
343
|
+
[Areas where user said "you decide" — note that Codex has flexibility here]
|
|
336
344
|
|
|
337
345
|
</decisions>
|
|
338
346
|
|
|
@@ -405,7 +413,7 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
|
|
|
405
413
|
Commit phase context (uses `commit_docs` from init internally):
|
|
406
414
|
|
|
407
415
|
```bash
|
|
408
|
-
node ~/.
|
|
416
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
409
417
|
```
|
|
410
418
|
|
|
411
419
|
Confirm: "Committed: docs(${padded_phase}): capture phase context"
|
|
@@ -415,7 +423,7 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context"
|
|
|
415
423
|
Update STATE.md with session info:
|
|
416
424
|
|
|
417
425
|
```bash
|
|
418
|
-
node ~/.
|
|
426
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs state record-session \
|
|
419
427
|
--stopped-at "Phase ${PHASE} context gathered" \
|
|
420
428
|
--resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
421
429
|
```
|
|
@@ -423,7 +431,7 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs state record-session \
|
|
|
423
431
|
Commit STATE.md:
|
|
424
432
|
|
|
425
433
|
```bash
|
|
426
|
-
node ~/.
|
|
434
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
|
|
427
435
|
```
|
|
428
436
|
</step>
|
|
429
437
|
|
|
@@ -433,9 +441,14 @@ Check for auto-advance trigger:
|
|
|
433
441
|
1. Parse `--auto` flag from $ARGUMENTS
|
|
434
442
|
2. Read `workflow.auto_advance` from config:
|
|
435
443
|
```bash
|
|
436
|
-
AUTO_CFG=$(node ~/.
|
|
444
|
+
AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
437
445
|
```
|
|
438
446
|
|
|
447
|
+
**If `--auto` flag present AND `AUTO_CFG` is not true:** Persist auto-advance to config (handles direct `--auto` usage without new-project):
|
|
448
|
+
```bash
|
|
449
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-set workflow.auto_advance true
|
|
450
|
+
```
|
|
451
|
+
|
|
439
452
|
**If `--auto` flag present OR `AUTO_CFG` is true:**
|
|
440
453
|
|
|
441
454
|
Display banner:
|
|
@@ -447,23 +460,65 @@ Display banner:
|
|
|
447
460
|
Context captured. Spawning plan-phase...
|
|
448
461
|
```
|
|
449
462
|
|
|
450
|
-
Spawn plan-phase as Task:
|
|
463
|
+
Spawn plan-phase as Task with direct workflow file reference (do NOT use Skill tool — Skills don't resolve inside Task subagents):
|
|
451
464
|
```
|
|
452
465
|
Task(
|
|
453
|
-
prompt="
|
|
466
|
+
prompt="
|
|
467
|
+
<objective>
|
|
468
|
+
You are the plan-phase orchestrator. Create executable plans for Phase ${PHASE}: ${PHASE_NAME}, then auto-advance to execution.
|
|
469
|
+
</objective>
|
|
470
|
+
|
|
471
|
+
<execution_context>
|
|
472
|
+
@~/.codex/get-shit-done/workflows/plan-phase.md
|
|
473
|
+
@~/.codex/get-shit-done/references/ui-brand.md
|
|
474
|
+
@~/.codex/get-shit-done/references/model-profile-resolution.md
|
|
475
|
+
</execution_context>
|
|
476
|
+
|
|
477
|
+
<arguments>
|
|
478
|
+
PHASE=${PHASE}
|
|
479
|
+
ARGUMENTS='${PHASE} --auto'
|
|
480
|
+
</arguments>
|
|
481
|
+
|
|
482
|
+
<instructions>
|
|
483
|
+
1. Read plan-phase.md from execution_context for your complete workflow
|
|
484
|
+
2. Follow ALL steps: initialize, validate, load context, research, plan, verify, auto-advance
|
|
485
|
+
3. When spawning agents (gsd-phase-researcher, gsd-planner, gsd-plan-checker), use Task with specified subagent_type and model
|
|
486
|
+
4. For step 14 (auto-advance to execute): spawn execute-phase as a Task with DIRECT file reference — tell it to read execute-phase.md. Include @file refs to execute-phase.md, checkpoints.md, tdd.md, model-profile-resolution.md. Pass --no-transition flag so execute-phase returns results instead of chaining further.
|
|
487
|
+
5. Do NOT use the Skill tool or /gsd: commands. Read workflow .md files directly.
|
|
488
|
+
6. Return: PHASE COMPLETE (full pipeline success), PLANNING COMPLETE (planning done but execute failed/skipped), PLANNING INCONCLUSIVE, or GAPS FOUND
|
|
489
|
+
</instructions>
|
|
490
|
+
",
|
|
454
491
|
subagent_type="general-purpose",
|
|
455
492
|
description="Plan Phase ${PHASE}"
|
|
456
493
|
)
|
|
457
494
|
```
|
|
458
495
|
|
|
459
496
|
**Handle plan-phase return:**
|
|
460
|
-
- **
|
|
461
|
-
- **PLANNING INCONCLUSIVE / CHECKPOINT** → Display result, stop chain:
|
|
497
|
+
- **PHASE COMPLETE** → Full chain succeeded. Display:
|
|
462
498
|
```
|
|
463
|
-
|
|
499
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
500
|
+
GSD ► PHASE ${PHASE} COMPLETE
|
|
501
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
502
|
+
|
|
503
|
+
Auto-advance pipeline finished: discuss → plan → execute
|
|
464
504
|
|
|
465
|
-
|
|
466
|
-
|
|
505
|
+
Next: /gsd:discuss-phase ${NEXT_PHASE} --auto
|
|
506
|
+
<sub>/clear first → fresh context window</sub>
|
|
507
|
+
```
|
|
508
|
+
- **PLANNING COMPLETE** → Planning done, execution didn't complete:
|
|
509
|
+
```
|
|
510
|
+
Auto-advance partial: Planning complete, execution did not finish.
|
|
511
|
+
Continue: /gsd:execute-phase ${PHASE}
|
|
512
|
+
```
|
|
513
|
+
- **PLANNING INCONCLUSIVE / CHECKPOINT** → Stop chain:
|
|
514
|
+
```
|
|
515
|
+
Auto-advance stopped: Planning needs input.
|
|
516
|
+
Continue: /gsd:plan-phase ${PHASE}
|
|
517
|
+
```
|
|
518
|
+
- **GAPS FOUND** → Stop chain:
|
|
519
|
+
```
|
|
520
|
+
Auto-advance stopped: Gaps found during execution.
|
|
521
|
+
Continue: /gsd:plan-phase ${PHASE} --gaps
|
|
467
522
|
```
|
|
468
523
|
|
|
469
524
|
**If neither `--auto` nor config enabled:**
|
|
@@ -16,7 +16,7 @@ Read STATE.md before any operation to load project context.
|
|
|
16
16
|
Load all context in one call:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
INIT=$(node ~/.
|
|
19
|
+
INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init execute-phase "${PHASE_ARG}")
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`.
|
|
@@ -51,7 +51,7 @@ Report: "Found {plan_count} plans in {phase_dir} ({incomplete_count} incomplete)
|
|
|
51
51
|
Load plan inventory with wave grouping in one call:
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
PLAN_INDEX=$(node ~/.
|
|
54
|
+
PLAN_INDEX=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs phase-plan-index "${PHASE_NUMBER}")
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
Parse JSON for: `phase`, `plans[]` (each with `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (map of wave number → plan IDs), `incomplete`, `has_checkpoints`.
|
|
@@ -106,21 +106,23 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
|
|
|
106
106
|
prompt="
|
|
107
107
|
<objective>
|
|
108
108
|
Execute plan {plan_number} of phase {phase_number}-{phase_name}.
|
|
109
|
-
Commit each task atomically. Create SUMMARY.md. Update STATE.md.
|
|
109
|
+
Commit each task atomically. Create SUMMARY.md. Update STATE.md and ROADMAP.md.
|
|
110
110
|
</objective>
|
|
111
111
|
|
|
112
112
|
<execution_context>
|
|
113
|
-
@~/.
|
|
114
|
-
@~/.
|
|
115
|
-
@~/.
|
|
116
|
-
@~/.
|
|
113
|
+
@~/.codex/get-shit-done/workflows/execute-plan.md
|
|
114
|
+
@~/.codex/get-shit-done/templates/summary.md
|
|
115
|
+
@~/.codex/get-shit-done/references/checkpoints.md
|
|
116
|
+
@~/.codex/get-shit-done/references/tdd.md
|
|
117
117
|
</execution_context>
|
|
118
118
|
|
|
119
119
|
<files_to_read>
|
|
120
120
|
Read these files at execution start using the Read tool:
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
121
|
+
- {phase_dir}/{plan_file} (Plan)
|
|
122
|
+
- .planning/STATE.md (State)
|
|
123
|
+
- .planning/config.json (Config, if exists)
|
|
124
|
+
- ./CODEX.md (Project instructions, if exists — follow project-specific guidelines and coding conventions)
|
|
125
|
+
- .agents/skills/ (Project skills, if exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
|
|
124
126
|
</files_to_read>
|
|
125
127
|
|
|
126
128
|
<success_criteria>
|
|
@@ -128,6 +130,7 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
|
|
|
128
130
|
- [ ] Each task committed individually
|
|
129
131
|
- [ ] SUMMARY.md created in plan directory
|
|
130
132
|
- [ ] STATE.md updated with position and decisions
|
|
133
|
+
- [ ] ROADMAP.md updated with plan progress (via `roadmap update-plan-progress`)
|
|
131
134
|
</success_criteria>
|
|
132
135
|
"
|
|
133
136
|
)
|
|
@@ -162,7 +165,7 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
|
|
|
162
165
|
|
|
163
166
|
5. **Handle failures:**
|
|
164
167
|
|
|
165
|
-
**Known
|
|
168
|
+
**Known Codex Code bug (classifyHandoffIfNeeded):** If an agent reports "failed" with error containing `classifyHandoffIfNeeded is not defined`, this is a Codex Code runtime bug — not a GSD or agent issue. The error fires in the completion handler AFTER all tool calls finish. In this case: run the same spot-checks as step 4 (SUMMARY.md exists, git commits present, no Self-Check: FAILED). If spot-checks PASS → treat as **successful**. If spot-checks FAIL → treat as real failure below.
|
|
166
169
|
|
|
167
170
|
For real failures: report which plan failed → ask "Continue?" or "Stop?" → if continue, dependent plans may also fail. If stop, partial completion report.
|
|
168
171
|
|
|
@@ -174,7 +177,19 @@ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`
|
|
|
174
177
|
<step name="checkpoint_handling">
|
|
175
178
|
Plans with `autonomous: false` require user interaction.
|
|
176
179
|
|
|
177
|
-
**
|
|
180
|
+
**Auto-mode checkpoint handling:**
|
|
181
|
+
|
|
182
|
+
Read auto-advance config:
|
|
183
|
+
```bash
|
|
184
|
+
AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
When executor returns a checkpoint AND `AUTO_CFG` is `"true"`:
|
|
188
|
+
- **human-verify** → Auto-spawn continuation agent with `{user_response}` = `"approved"`. Log `⚡ Auto-approved checkpoint`.
|
|
189
|
+
- **decision** → Auto-spawn continuation agent with `{user_response}` = first option from checkpoint details. Log `⚡ Auto-selected: [option]`.
|
|
190
|
+
- **human-action** → Present to user (existing behavior below). Auth gates cannot be automated.
|
|
191
|
+
|
|
192
|
+
**Standard flow (not auto-mode, or human-action type):**
|
|
178
193
|
|
|
179
194
|
1. Spawn agent for checkpoint plan
|
|
180
195
|
2. Agent runs until checkpoint task or auth gate → returns structured state
|
|
@@ -241,7 +256,7 @@ fi
|
|
|
241
256
|
|
|
242
257
|
**2. Find parent UAT file:**
|
|
243
258
|
```bash
|
|
244
|
-
PARENT_INFO=$(node ~/.
|
|
259
|
+
PARENT_INFO=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs find-phase "${PARENT_PHASE}" --raw)
|
|
245
260
|
# Extract directory from PARENT_INFO JSON, then find UAT file in that directory
|
|
246
261
|
```
|
|
247
262
|
|
|
@@ -272,19 +287,26 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
|
|
|
272
287
|
|
|
273
288
|
**6. Commit updated artifacts:**
|
|
274
289
|
```bash
|
|
275
|
-
node ~/.
|
|
290
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs 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
|
|
276
291
|
```
|
|
277
292
|
</step>
|
|
278
293
|
|
|
279
294
|
<step name="verify_phase_goal">
|
|
280
295
|
Verify phase achieved its GOAL, not just completed tasks.
|
|
281
296
|
|
|
297
|
+
```bash
|
|
298
|
+
PHASE_REQ_IDS=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE_NUMBER}" | jq -r '.section' | grep -i "Requirements:" | sed 's/.*Requirements:\*\*\s*//' | sed 's/[\[\]]//g')
|
|
299
|
+
```
|
|
300
|
+
|
|
282
301
|
```
|
|
283
302
|
Task(
|
|
284
303
|
prompt="Verify phase {phase_number} goal achievement.
|
|
285
304
|
Phase directory: {phase_dir}
|
|
286
305
|
Phase goal: {goal from ROADMAP.md}
|
|
287
|
-
|
|
306
|
+
Phase requirement IDs: {phase_req_ids}
|
|
307
|
+
Check must_haves against actual codebase.
|
|
308
|
+
Cross-reference requirement IDs from PLAN frontmatter against REQUIREMENTS.md — every ID MUST be accounted for.
|
|
309
|
+
Create VERIFICATION.md.",
|
|
288
310
|
subagent_type="gsd-verifier",
|
|
289
311
|
model="{verifier_model}"
|
|
290
312
|
)
|
|
@@ -340,7 +362,7 @@ Gap closure cycle: `/gsd:plan-phase {X} --gaps` reads VERIFICATION.md → create
|
|
|
340
362
|
**Mark phase complete and update all tracking files:**
|
|
341
363
|
|
|
342
364
|
```bash
|
|
343
|
-
COMPLETION=$(node ~/.
|
|
365
|
+
COMPLETION=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs phase complete "${PHASE_NUMBER}")
|
|
344
366
|
```
|
|
345
367
|
|
|
346
368
|
The CLI handles:
|
|
@@ -353,7 +375,7 @@ The CLI handles:
|
|
|
353
375
|
Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`.
|
|
354
376
|
|
|
355
377
|
```bash
|
|
356
|
-
node ~/.
|
|
378
|
+
node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
|
|
357
379
|
```
|
|
358
380
|
</step>
|
|
359
381
|
|
|
@@ -361,12 +383,35 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete
|
|
|
361
383
|
|
|
362
384
|
**Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd:plan-phase {X} --gaps`). No additional routing needed — skip auto-advance.
|
|
363
385
|
|
|
386
|
+
**No-transition check (spawned by auto-advance chain):**
|
|
387
|
+
|
|
388
|
+
Parse `--no-transition` flag from $ARGUMENTS.
|
|
389
|
+
|
|
390
|
+
**If `--no-transition` flag present:**
|
|
391
|
+
|
|
392
|
+
Execute-phase was spawned by plan-phase's auto-advance. Do NOT run transition.md.
|
|
393
|
+
After verification passes and roadmap is updated, return completion status to parent:
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
## PHASE COMPLETE
|
|
397
|
+
|
|
398
|
+
Phase: ${PHASE_NUMBER} - ${PHASE_NAME}
|
|
399
|
+
Plans: ${completed_count}/${total_count}
|
|
400
|
+
Verification: {Passed | Gaps Found}
|
|
401
|
+
|
|
402
|
+
[Include aggregate_results output]
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
STOP. Do not proceed to auto-advance or transition.
|
|
406
|
+
|
|
407
|
+
**If `--no-transition` flag is NOT present:**
|
|
408
|
+
|
|
364
409
|
**Auto-advance detection:**
|
|
365
410
|
|
|
366
411
|
1. Parse `--auto` flag from $ARGUMENTS
|
|
367
412
|
2. Read `workflow.auto_advance` from config:
|
|
368
413
|
```bash
|
|
369
|
-
AUTO_CFG=$(node ~/.
|
|
414
|
+
AUTO_CFG=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
370
415
|
```
|
|
371
416
|
|
|
372
417
|
**If `--auto` flag present OR `AUTO_CFG` is true (AND verification passed with no gaps):**
|
|
@@ -380,7 +425,7 @@ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs(phase-{X}): complete
|
|
|
380
425
|
|
|
381
426
|
Execute the transition workflow inline (do NOT use Task — orchestrator context is ~10-15%, transition needs phase completion data already in context):
|
|
382
427
|
|
|
383
|
-
Read and follow `~/.
|
|
428
|
+
Read and follow `~/.codex/get-shit-done/workflows/transition.md`, passing through the `--auto` flag so it propagates to the next phase invocation.
|
|
384
429
|
|
|
385
430
|
**If neither `--auto` nor `AUTO_CFG` is true:**
|
|
386
431
|
|
|
@@ -394,7 +439,7 @@ Orchestrator: ~10-15% context. Subagents: fresh 200k each. No polling (Task bloc
|
|
|
394
439
|
</context_efficiency>
|
|
395
440
|
|
|
396
441
|
<failure_handling>
|
|
397
|
-
- **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` →
|
|
442
|
+
- **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` → Codex Code bug, not GSD. Spot-check (SUMMARY exists, commits present) → if pass, treat as success
|
|
398
443
|
- **Agent fails mid-plan:** Missing SUMMARY.md → report, ask user how to proceed
|
|
399
444
|
- **Dependency chain breaks:** Wave 1 fails → Wave 2 dependents likely fail → user chooses attempt or skip
|
|
400
445
|
- **All agents in wave fail:** Systemic issue → stop, report for investigation
|