@undeemed/get-shit-done-codex 1.23.2 → 1.24.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/README.md +51 -5
- package/agents/gsd-debugger.md +8 -56
- package/agents/gsd-planner.md +2 -118
- package/agents/gsd-project-researcher.md +0 -3
- package/agents/gsd-research-synthesizer.md +0 -3
- package/bin/install.js +267 -5
- package/commands/gsd/add-phase.md +2 -6
- package/commands/gsd/add-todo.md +1 -6
- package/commands/gsd/check-todos.md +2 -6
- package/commands/gsd/debug.md +1 -6
- package/commands/gsd/discuss-phase.md +16 -9
- package/commands/gsd/execute-phase.md +2 -1
- package/commands/gsd/new-milestone.md +8 -1
- package/commands/gsd/pause-work.md +1 -4
- package/commands/gsd/plan-phase.md +1 -2
- package/commands/gsd/research-phase.md +15 -17
- package/commands/gsd/verify-work.md +2 -1
- package/get-shit-done/bin/gsd-tools.cjs +4951 -121
- package/get-shit-done/bin/lib/commands.cjs +4 -9
- package/get-shit-done/bin/lib/core.cjs +102 -23
- package/get-shit-done/bin/lib/init.cjs +11 -11
- package/get-shit-done/bin/lib/milestone.cjs +54 -3
- package/get-shit-done/bin/lib/phase.cjs +40 -10
- package/get-shit-done/bin/lib/state.cjs +86 -33
- package/get-shit-done/references/checkpoints.md +0 -1
- package/get-shit-done/references/model-profile-resolution.md +13 -6
- package/get-shit-done/references/model-profiles.md +60 -51
- package/get-shit-done/templates/context.md +14 -0
- package/get-shit-done/templates/phase-prompt.md +0 -2
- package/get-shit-done/workflows/audit-milestone.md +8 -63
- package/get-shit-done/workflows/diagnose-issues.md +1 -1
- package/get-shit-done/workflows/execute-phase.md +9 -54
- package/get-shit-done/workflows/execute-plan.md +13 -17
- package/get-shit-done/workflows/help.md +3 -3
- package/get-shit-done/workflows/map-codebase.md +44 -32
- package/get-shit-done/workflows/new-milestone.md +7 -16
- package/get-shit-done/workflows/new-project.md +80 -49
- package/get-shit-done/workflows/progress.md +26 -14
- package/get-shit-done/workflows/quick.md +15 -24
- package/get-shit-done/workflows/set-profile.md +12 -8
- package/get-shit-done/workflows/settings.md +14 -21
- package/get-shit-done/workflows/transition.md +0 -5
- package/get-shit-done/workflows/verify-work.md +12 -11
- package/hooks/dist/gsd-context-monitor.js +1 -1
- package/package.json +3 -2
- package/scripts/run-tests.cjs +43 -0
|
@@ -7,11 +7,13 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
7
7
|
</required_reading>
|
|
8
8
|
|
|
9
9
|
<auto_mode>
|
|
10
|
+
|
|
10
11
|
## Auto Mode Detection
|
|
11
12
|
|
|
12
13
|
Check if `--auto` flag is present in $ARGUMENTS.
|
|
13
14
|
|
|
14
15
|
**If auto mode:**
|
|
16
|
+
|
|
15
17
|
- Skip brownfield mapping offer (assume greenfield)
|
|
16
18
|
- Skip deep questioning (extract context from provided document)
|
|
17
19
|
- Config: YOLO mode is implicit (skip that question), but ask depth/git/agents FIRST (Step 2a)
|
|
@@ -23,6 +25,7 @@ Check if `--auto` flag is present in $ARGUMENTS.
|
|
|
23
25
|
|
|
24
26
|
**Document requirement:**
|
|
25
27
|
Auto mode requires an idea document — either:
|
|
28
|
+
|
|
26
29
|
- File reference: `$gsd-new-project --auto @prd.md`
|
|
27
30
|
- Pasted/written text in the prompt
|
|
28
31
|
|
|
@@ -37,6 +40,7 @@ Usage:
|
|
|
37
40
|
|
|
38
41
|
The document should describe what you want to build.
|
|
39
42
|
```
|
|
43
|
+
|
|
40
44
|
</auto_mode>
|
|
41
45
|
|
|
42
46
|
<process>
|
|
@@ -49,11 +53,12 @@ The document should describe what you want to build.
|
|
|
49
53
|
INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init new-project)
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git
|
|
56
|
+
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`.
|
|
53
57
|
|
|
54
58
|
**If `project_exists` is true:** Error — project already initialized. Use `$gsd-progress`.
|
|
55
59
|
|
|
56
60
|
**If `has_git` is false:** Initialize git:
|
|
61
|
+
|
|
57
62
|
```bash
|
|
58
63
|
git init
|
|
59
64
|
```
|
|
@@ -65,6 +70,7 @@ git init
|
|
|
65
70
|
**If `needs_codebase_map` is true** (from init — existing code detected but no codebase map):
|
|
66
71
|
|
|
67
72
|
Use AskUserQuestion:
|
|
73
|
+
|
|
68
74
|
- header: "Codebase"
|
|
69
75
|
- question: "I detected existing code in this directory. Would you like to map the codebase first?"
|
|
70
76
|
- options:
|
|
@@ -72,9 +78,11 @@ Use AskUserQuestion:
|
|
|
72
78
|
- "Skip mapping" — Proceed with project initialization
|
|
73
79
|
|
|
74
80
|
**If "Map codebase first":**
|
|
81
|
+
|
|
75
82
|
```
|
|
76
83
|
Run `$gsd-map-codebase` first, then return to `$gsd-new-project`
|
|
77
84
|
```
|
|
85
|
+
|
|
78
86
|
Exit command.
|
|
79
87
|
|
|
80
88
|
**If "Skip mapping" OR `needs_codebase_map` is false:** Continue to Step 3.
|
|
@@ -156,9 +164,9 @@ AskUserQuestion([
|
|
|
156
164
|
question: "Which AI models for planning agents?",
|
|
157
165
|
multiSelect: false,
|
|
158
166
|
options: [
|
|
159
|
-
{ label: "Balanced (Recommended)", description: "
|
|
160
|
-
{ label: "Quality", description: "
|
|
161
|
-
{ label: "Budget", description: "
|
|
167
|
+
{ label: "Balanced (Recommended)", description: "gpt-5.3-codex — xhigh/high/medium thinking allocation per role" },
|
|
168
|
+
{ label: "Quality", description: "gpt-5.3-codex — xhigh thinking for all decision-makers" },
|
|
169
|
+
{ label: "Budget", description: "gpt-5.3-codex — high/medium thinking, fastest/cheapest" }
|
|
162
170
|
]
|
|
163
171
|
}
|
|
164
172
|
])
|
|
@@ -176,8 +184,7 @@ Create `.planning/config.json` with mode set to "yolo":
|
|
|
176
184
|
"workflow": {
|
|
177
185
|
"research": true|false,
|
|
178
186
|
"plan_check": true|false,
|
|
179
|
-
"verifier": true|false
|
|
180
|
-
"auto_advance": true
|
|
187
|
+
"verifier": true|false
|
|
181
188
|
}
|
|
182
189
|
}
|
|
183
190
|
```
|
|
@@ -191,12 +198,6 @@ mkdir -p .planning
|
|
|
191
198
|
node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "chore: add project config" --files .planning/config.json
|
|
192
199
|
```
|
|
193
200
|
|
|
194
|
-
**Persist auto-advance to config (survives context compaction):**
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-set workflow.auto_advance true
|
|
198
|
-
```
|
|
199
|
-
|
|
200
201
|
Proceed to Step 4 (skip Steps 3 and 5).
|
|
201
202
|
|
|
202
203
|
## 3. Deep Questioning
|
|
@@ -224,6 +225,7 @@ Wait for their response. This gives you the context needed to ask intelligent fo
|
|
|
224
225
|
Based on what they said, ask follow-up questions that dig into their response. Use AskUserQuestion with options that probe what they mentioned — interpretations, clarifications, concrete examples.
|
|
225
226
|
|
|
226
227
|
Keep following threads. Each answer opens new threads to explore. Ask about:
|
|
228
|
+
|
|
227
229
|
- What excited them
|
|
228
230
|
- What problem sparked this
|
|
229
231
|
- What they mean by vague terms
|
|
@@ -231,6 +233,7 @@ Keep following threads. Each answer opens new threads to explore. Ask about:
|
|
|
231
233
|
- What's already decided
|
|
232
234
|
|
|
233
235
|
Consult `questioning.md` for techniques:
|
|
236
|
+
|
|
234
237
|
- Challenge vagueness
|
|
235
238
|
- Make abstract concrete
|
|
236
239
|
- Surface assumptions
|
|
@@ -320,16 +323,17 @@ Initialize with any decisions made during questioning:
|
|
|
320
323
|
```markdown
|
|
321
324
|
## Key Decisions
|
|
322
325
|
|
|
323
|
-
| Decision
|
|
324
|
-
|
|
325
|
-
| [Choice from questioning] | [Why]
|
|
326
|
+
| Decision | Rationale | Outcome |
|
|
327
|
+
| ------------------------- | --------- | --------- |
|
|
328
|
+
| [Choice from questioning] | [Why] | — Pending |
|
|
326
329
|
```
|
|
327
330
|
|
|
328
331
|
**Last updated footer:**
|
|
329
332
|
|
|
330
333
|
```markdown
|
|
331
334
|
---
|
|
332
|
-
|
|
335
|
+
|
|
336
|
+
_Last updated: [date] after initialization_
|
|
333
337
|
```
|
|
334
338
|
|
|
335
339
|
Do not compress. Capture everything gathered.
|
|
@@ -413,11 +417,11 @@ questions: [
|
|
|
413
417
|
|
|
414
418
|
These spawn additional agents during planning/execution. They add tokens and time but improve quality.
|
|
415
419
|
|
|
416
|
-
| Agent
|
|
417
|
-
|
|
418
|
-
| **Researcher**
|
|
419
|
-
| **Plan Checker** | After plan is created
|
|
420
|
-
| **Verifier**
|
|
420
|
+
| Agent | When it runs | What it does |
|
|
421
|
+
| ---------------- | -------------------------- | ----------------------------------------------------- |
|
|
422
|
+
| **Researcher** | Before planning each phase | Investigates domain, finds patterns, surfaces gotchas |
|
|
423
|
+
| **Plan Checker** | After plan is created | Verifies plan actually achieves the phase goal |
|
|
424
|
+
| **Verifier** | After phase execution | Confirms must-haves were delivered |
|
|
421
425
|
|
|
422
426
|
All recommended for important projects. Skip for quick experiments.
|
|
423
427
|
|
|
@@ -455,9 +459,9 @@ questions: [
|
|
|
455
459
|
question: "Which AI models for planning agents?",
|
|
456
460
|
multiSelect: false,
|
|
457
461
|
options: [
|
|
458
|
-
{ label: "Balanced (Recommended)", description: "
|
|
459
|
-
{ label: "Quality", description: "
|
|
460
|
-
{ label: "Budget", description: "
|
|
462
|
+
{ label: "Balanced (Recommended)", description: "gpt-5.3-codex — xhigh/high/medium thinking allocation per role" },
|
|
463
|
+
{ label: "Quality", description: "gpt-5.3-codex — xhigh thinking for all decision-makers" },
|
|
464
|
+
{ label: "Budget", description: "gpt-5.3-codex — high/medium thinking, fastest/cheapest" }
|
|
461
465
|
]
|
|
462
466
|
}
|
|
463
467
|
]
|
|
@@ -481,10 +485,12 @@ Create `.planning/config.json` with all settings:
|
|
|
481
485
|
```
|
|
482
486
|
|
|
483
487
|
**If commit_docs = No:**
|
|
488
|
+
|
|
484
489
|
- Set `commit_docs: false` in config.json
|
|
485
490
|
- Add `.planning/` to `.gitignore` (create if needed)
|
|
486
491
|
|
|
487
492
|
**If commit_docs = Yes:**
|
|
493
|
+
|
|
488
494
|
- No additional gitignore entries needed
|
|
489
495
|
|
|
490
496
|
**Commit config.json:**
|
|
@@ -504,6 +510,7 @@ Use models from init: `researcher_model`, `synthesizer_model`, `roadmapper_model
|
|
|
504
510
|
**If auto mode:** Default to "Research first" without asking.
|
|
505
511
|
|
|
506
512
|
Use AskUserQuestion:
|
|
513
|
+
|
|
507
514
|
- header: "Research"
|
|
508
515
|
- question: "Research the domain ecosystem before defining requirements?"
|
|
509
516
|
- options:
|
|
@@ -513,6 +520,7 @@ Use AskUserQuestion:
|
|
|
513
520
|
**If "Research first":**
|
|
514
521
|
|
|
515
522
|
Display stage banner:
|
|
523
|
+
|
|
516
524
|
```
|
|
517
525
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
518
526
|
GSD ► RESEARCHING
|
|
@@ -522,6 +530,7 @@ Researching [domain] ecosystem...
|
|
|
522
530
|
```
|
|
523
531
|
|
|
524
532
|
Create research directory:
|
|
533
|
+
|
|
525
534
|
```bash
|
|
526
535
|
mkdir -p .planning/research
|
|
527
536
|
```
|
|
@@ -529,10 +538,12 @@ mkdir -p .planning/research
|
|
|
529
538
|
**Determine milestone context:**
|
|
530
539
|
|
|
531
540
|
Check if this is greenfield or subsequent milestone:
|
|
541
|
+
|
|
532
542
|
- If no "Validated" requirements in PROJECT.md → Greenfield (building from scratch)
|
|
533
543
|
- If "Validated" requirements exist → Subsequent milestone (adding to existing app)
|
|
534
544
|
|
|
535
545
|
Display spawning indicator:
|
|
546
|
+
|
|
536
547
|
```
|
|
537
548
|
◆ Spawning 4 researchers in parallel...
|
|
538
549
|
→ Stack research
|
|
@@ -541,7 +552,7 @@ Display spawning indicator:
|
|
|
541
552
|
→ Pitfalls research
|
|
542
553
|
```
|
|
543
554
|
|
|
544
|
-
Spawn 4 parallel gsd-project-researcher agents with
|
|
555
|
+
Spawn 4 parallel gsd-project-researcher agents with rich context:
|
|
545
556
|
|
|
546
557
|
```
|
|
547
558
|
Task(prompt="First, read ~/.codex/agents/gsd-project-researcher.md for your role and instructions.
|
|
@@ -561,9 +572,9 @@ Subsequent: Research what's needed to add [target features] to an existing [doma
|
|
|
561
572
|
What's the standard 2025 stack for [domain]?
|
|
562
573
|
</question>
|
|
563
574
|
|
|
564
|
-
<
|
|
565
|
-
-
|
|
566
|
-
</
|
|
575
|
+
<project_context>
|
|
576
|
+
[PROJECT.md summary - core value, constraints, what they're building]
|
|
577
|
+
</project_context>
|
|
567
578
|
|
|
568
579
|
<downstream_consumer>
|
|
569
580
|
Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
@@ -601,9 +612,9 @@ Subsequent: How do [target features] typically work? What's expected behavior?
|
|
|
601
612
|
What features do [domain] products have? What's table stakes vs differentiating?
|
|
602
613
|
</question>
|
|
603
614
|
|
|
604
|
-
<
|
|
605
|
-
|
|
606
|
-
</
|
|
615
|
+
<project_context>
|
|
616
|
+
[PROJECT.md summary]
|
|
617
|
+
</project_context>
|
|
607
618
|
|
|
608
619
|
<downstream_consumer>
|
|
609
620
|
Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
@@ -641,9 +652,9 @@ Subsequent: How do [target features] integrate with existing [domain] architectu
|
|
|
641
652
|
How are [domain] systems typically structured? What are major components?
|
|
642
653
|
</question>
|
|
643
654
|
|
|
644
|
-
<
|
|
645
|
-
|
|
646
|
-
</
|
|
655
|
+
<project_context>
|
|
656
|
+
[PROJECT.md summary]
|
|
657
|
+
</project_context>
|
|
647
658
|
|
|
648
659
|
<downstream_consumer>
|
|
649
660
|
Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
@@ -681,9 +692,9 @@ Subsequent: What are common mistakes when adding [target features] to [domain]?
|
|
|
681
692
|
What do [domain] projects commonly get wrong? Critical mistakes?
|
|
682
693
|
</question>
|
|
683
694
|
|
|
684
|
-
<
|
|
685
|
-
|
|
686
|
-
</
|
|
695
|
+
<project_context>
|
|
696
|
+
[PROJECT.md summary]
|
|
697
|
+
</project_context>
|
|
687
698
|
|
|
688
699
|
<downstream_consumer>
|
|
689
700
|
Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
@@ -713,12 +724,13 @@ Task(prompt="
|
|
|
713
724
|
Synthesize research outputs into SUMMARY.md.
|
|
714
725
|
</task>
|
|
715
726
|
|
|
716
|
-
<
|
|
727
|
+
<research_files>
|
|
728
|
+
Read these files:
|
|
717
729
|
- .planning/research/STACK.md
|
|
718
730
|
- .planning/research/FEATURES.md
|
|
719
731
|
- .planning/research/ARCHITECTURE.md
|
|
720
732
|
- .planning/research/PITFALLS.md
|
|
721
|
-
</
|
|
733
|
+
</research_files>
|
|
722
734
|
|
|
723
735
|
<output>
|
|
724
736
|
Write to: .planning/research/SUMMARY.md
|
|
@@ -729,6 +741,7 @@ Commit after writing.
|
|
|
729
741
|
```
|
|
730
742
|
|
|
731
743
|
Display research complete banner and key findings:
|
|
744
|
+
|
|
732
745
|
```
|
|
733
746
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
734
747
|
GSD ► RESEARCH COMPLETE ✓
|
|
@@ -748,6 +761,7 @@ Files: `.planning/research/`
|
|
|
748
761
|
## 7. Define Requirements
|
|
749
762
|
|
|
750
763
|
Display stage banner:
|
|
764
|
+
|
|
751
765
|
```
|
|
752
766
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
753
767
|
GSD ► DEFINING REQUIREMENTS
|
|
@@ -757,6 +771,7 @@ Display stage banner:
|
|
|
757
771
|
**Load context:**
|
|
758
772
|
|
|
759
773
|
Read PROJECT.md and extract:
|
|
774
|
+
|
|
760
775
|
- Core value (the ONE thing that must work)
|
|
761
776
|
- Stated constraints (budget, timeline, tech limitations)
|
|
762
777
|
- Any explicit scope boundaries
|
|
@@ -764,6 +779,7 @@ Read PROJECT.md and extract:
|
|
|
764
779
|
**If research exists:** Read research/FEATURES.md and extract feature categories.
|
|
765
780
|
|
|
766
781
|
**If auto mode:**
|
|
782
|
+
|
|
767
783
|
- Auto-include all table stakes features (users expect these)
|
|
768
784
|
- Include features explicitly mentioned in provided document
|
|
769
785
|
- Auto-defer differentiators not mentioned in document
|
|
@@ -802,6 +818,7 @@ Here are the features for [domain]:
|
|
|
802
818
|
Ask: "What are the main things users need to be able to do?"
|
|
803
819
|
|
|
804
820
|
For each capability mentioned:
|
|
821
|
+
|
|
805
822
|
- Ask clarifying questions to make it specific
|
|
806
823
|
- Probe for related capabilities
|
|
807
824
|
- Group into categories
|
|
@@ -820,6 +837,7 @@ For each category, use AskUserQuestion:
|
|
|
820
837
|
- "None for v1" — Defer entire category
|
|
821
838
|
|
|
822
839
|
Track responses:
|
|
840
|
+
|
|
823
841
|
- Selected features → v1 requirements
|
|
824
842
|
- Unselected table stakes → v2 (users expect these)
|
|
825
843
|
- Unselected differentiators → out of scope
|
|
@@ -827,6 +845,7 @@ Track responses:
|
|
|
827
845
|
**Identify gaps:**
|
|
828
846
|
|
|
829
847
|
Use AskUserQuestion:
|
|
848
|
+
|
|
830
849
|
- header: "Additions"
|
|
831
850
|
- question: "Any requirements research missed? (Features specific to your vision)"
|
|
832
851
|
- options:
|
|
@@ -840,6 +859,7 @@ Cross-check requirements against Core Value from PROJECT.md. If gaps detected, s
|
|
|
840
859
|
**Generate REQUIREMENTS.md:**
|
|
841
860
|
|
|
842
861
|
Create `.planning/REQUIREMENTS.md` with:
|
|
862
|
+
|
|
843
863
|
- v1 Requirements grouped by category (checkboxes, REQ-IDs)
|
|
844
864
|
- v2 Requirements (deferred)
|
|
845
865
|
- Out of Scope (explicit exclusions with reasoning)
|
|
@@ -850,12 +870,14 @@ Create `.planning/REQUIREMENTS.md` with:
|
|
|
850
870
|
**Requirement quality criteria:**
|
|
851
871
|
|
|
852
872
|
Good requirements are:
|
|
873
|
+
|
|
853
874
|
- **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
|
|
854
875
|
- **User-centric:** "User can X" (not "System does Y")
|
|
855
876
|
- **Atomic:** One capability per requirement (not "User can login and manage profile")
|
|
856
877
|
- **Independent:** Minimal dependencies on other requirements
|
|
857
878
|
|
|
858
879
|
Reject vague requirements. Push for specificity:
|
|
880
|
+
|
|
859
881
|
- "Handle authentication" → "User can log in with email/password and stay logged in across sessions"
|
|
860
882
|
- "Support sharing" → "User can share post via link that opens in recipient's browser"
|
|
861
883
|
|
|
@@ -893,6 +915,7 @@ node ~/.codex/get-shit-done/bin/gsd-tools.cjs commit "docs: define v1 requiremen
|
|
|
893
915
|
## 8. Create Roadmap
|
|
894
916
|
|
|
895
917
|
Display stage banner:
|
|
918
|
+
|
|
896
919
|
```
|
|
897
920
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
898
921
|
GSD ► CREATING ROADMAP
|
|
@@ -901,18 +924,23 @@ Display stage banner:
|
|
|
901
924
|
◆ Spawning roadmapper...
|
|
902
925
|
```
|
|
903
926
|
|
|
904
|
-
Spawn gsd-roadmapper agent with
|
|
927
|
+
Spawn gsd-roadmapper agent with context:
|
|
905
928
|
|
|
906
929
|
```
|
|
907
930
|
Task(prompt="
|
|
908
931
|
<planning_context>
|
|
909
932
|
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
933
|
+
**Project:**
|
|
934
|
+
@.planning/PROJECT.md
|
|
935
|
+
|
|
936
|
+
**Requirements:**
|
|
937
|
+
@.planning/REQUIREMENTS.md
|
|
938
|
+
|
|
939
|
+
**Research (if exists):**
|
|
940
|
+
@.planning/research/SUMMARY.md
|
|
941
|
+
|
|
942
|
+
**Config:**
|
|
943
|
+
@.planning/config.json
|
|
916
944
|
|
|
917
945
|
</planning_context>
|
|
918
946
|
|
|
@@ -933,6 +961,7 @@ Write files first, then return. This ensures artifacts persist even if context i
|
|
|
933
961
|
**Handle roadmapper return:**
|
|
934
962
|
|
|
935
963
|
**If `## ROADMAP BLOCKED`:**
|
|
964
|
+
|
|
936
965
|
- Present blocker information
|
|
937
966
|
- Work with user to resolve
|
|
938
967
|
- Re-spawn when resolved
|
|
@@ -982,6 +1011,7 @@ Success criteria:
|
|
|
982
1011
|
**CRITICAL: Ask for approval before committing (interactive mode only):**
|
|
983
1012
|
|
|
984
1013
|
Use AskUserQuestion:
|
|
1014
|
+
|
|
985
1015
|
- header: "Roadmap"
|
|
986
1016
|
- question: "Does this roadmap structure work for you?"
|
|
987
1017
|
- options:
|
|
@@ -992,23 +1022,24 @@ Use AskUserQuestion:
|
|
|
992
1022
|
**If "Approve":** Continue to commit.
|
|
993
1023
|
|
|
994
1024
|
**If "Adjust phases":**
|
|
1025
|
+
|
|
995
1026
|
- Get user's adjustment notes
|
|
996
1027
|
- Re-spawn roadmapper with revision context:
|
|
1028
|
+
|
|
997
1029
|
```
|
|
998
1030
|
Task(prompt="
|
|
999
1031
|
<revision>
|
|
1000
1032
|
User feedback on roadmap:
|
|
1001
1033
|
[user's notes]
|
|
1002
1034
|
|
|
1003
|
-
|
|
1004
|
-
- .planning/ROADMAP.md (Current roadmap to revise)
|
|
1005
|
-
</files_to_read>
|
|
1035
|
+
Current ROADMAP.md: @.planning/ROADMAP.md
|
|
1006
1036
|
|
|
1007
1037
|
Update the roadmap based on feedback. Edit files in place.
|
|
1008
1038
|
Return ROADMAP REVISED with changes made.
|
|
1009
1039
|
</revision>
|
|
1010
1040
|
", subagent_type="gsd-roadmapper", model="{roadmapper_model}", description="Revise roadmap")
|
|
1011
1041
|
```
|
|
1042
|
+
|
|
1012
1043
|
- Present revised roadmap
|
|
1013
1044
|
- Loop until user approves
|
|
1014
1045
|
|
|
@@ -9,13 +9,23 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
9
9
|
<process>
|
|
10
10
|
|
|
11
11
|
<step name="init_context">
|
|
12
|
-
**Load progress context (
|
|
12
|
+
**Load progress context (with file contents to avoid redundant reads):**
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
|
|
15
|
+
INIT_RAW=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init progress --include state,roadmap,project,config)
|
|
16
|
+
# Large payloads are written to a tmpfile — output starts with @file:/path
|
|
17
|
+
if [[ "$INIT_RAW" == @file:* ]]; then
|
|
18
|
+
INIT_FILE="${INIT_RAW#@file:}"
|
|
19
|
+
INIT=$(cat "$INIT_FILE")
|
|
20
|
+
rm -f "$INIT_FILE"
|
|
21
|
+
else
|
|
22
|
+
INIT="$INIT_RAW"
|
|
23
|
+
fi
|
|
16
24
|
```
|
|
17
25
|
|
|
18
|
-
Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at
|
|
26
|
+
Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at`.
|
|
27
|
+
|
|
28
|
+
**File contents (from --include):** `state_content`, `roadmap_content`, `project_content`, `config_content`. These are null if files don't exist.
|
|
19
29
|
|
|
20
30
|
If `project_exists` is false (no `.planning/` directory):
|
|
21
31
|
|
|
@@ -37,13 +47,15 @@ If missing both ROADMAP.md and PROJECT.md: suggest `$gsd-new-project`.
|
|
|
37
47
|
</step>
|
|
38
48
|
|
|
39
49
|
<step name="load">
|
|
40
|
-
**Use
|
|
50
|
+
**Use project context from INIT:**
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
- `
|
|
44
|
-
- `
|
|
52
|
+
All file contents are already loaded via `--include` in init_context step:
|
|
53
|
+
- `state_content` — living memory (position, decisions, issues)
|
|
54
|
+
- `roadmap_content` — phase structure and objectives
|
|
55
|
+
- `project_content` — current state (What This Is, Core Value, Requirements)
|
|
56
|
+
- `config_content` — settings (model_profile, workflow toggles)
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
No additional file reads needed.
|
|
47
59
|
</step>
|
|
48
60
|
|
|
49
61
|
<step name="analyze_roadmap">
|
|
@@ -77,8 +89,9 @@ Use this instead of manually reading/parsing ROADMAP.md.
|
|
|
77
89
|
<step name="position">
|
|
78
90
|
**Parse current position from init context and roadmap analysis:**
|
|
79
91
|
|
|
80
|
-
- Use `current_phase` and `next_phase` from
|
|
81
|
-
-
|
|
92
|
+
- Use `current_phase` and `next_phase` from roadmap analyze
|
|
93
|
+
- Use phase-level `has_context` and `has_research` flags from analyze
|
|
94
|
+
- Note `paused_at` if work was paused (from init context)
|
|
82
95
|
- Count pending todos: use `init todos` or `list-todos`
|
|
83
96
|
- Check for active debug sessions: `ls .planning/debug/*.md 2>/dev/null | grep -v resolved | wc -l`
|
|
84
97
|
</step>
|
|
@@ -109,12 +122,11 @@ Plan [M] of [phase-total]: [status]
|
|
|
109
122
|
CONTEXT: [✓ if has_context | - if not]
|
|
110
123
|
|
|
111
124
|
## Key Decisions Made
|
|
112
|
-
- [
|
|
113
|
-
- [
|
|
125
|
+
- [decision 1 from STATE.md]
|
|
126
|
+
- [decision 2]
|
|
114
127
|
|
|
115
128
|
## Blockers/Concerns
|
|
116
|
-
- [
|
|
117
|
-
- [e.g. jq -r '.blockers[].text' from state-snapshot]
|
|
129
|
+
- [any blockers or concerns from STATE.md]
|
|
118
130
|
|
|
119
131
|
## Pending Todos
|
|
120
132
|
- [count] pending — $gsd-check-todos to review
|
|
@@ -96,12 +96,8 @@ Task(
|
|
|
96
96
|
**Directory:** ${QUICK_DIR}
|
|
97
97
|
**Description:** ${DESCRIPTION}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
- ./CODEX.md (if exists — follow project-specific guidelines)
|
|
102
|
-
</files_to_read>
|
|
103
|
-
|
|
104
|
-
**Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, plans should account for project skill rules
|
|
99
|
+
**Project State:**
|
|
100
|
+
@.planning/STATE.md
|
|
105
101
|
|
|
106
102
|
</planning_context>
|
|
107
103
|
|
|
@@ -147,6 +143,10 @@ Display banner:
|
|
|
147
143
|
◆ Spawning plan checker...
|
|
148
144
|
```
|
|
149
145
|
|
|
146
|
+
```bash
|
|
147
|
+
PLAN_CONTENT=$(cat "${QUICK_DIR}/${next_num}-PLAN.md" 2>/dev/null)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
150
|
Checker prompt:
|
|
151
151
|
|
|
152
152
|
```markdown
|
|
@@ -154,9 +154,7 @@ Checker prompt:
|
|
|
154
154
|
**Mode:** quick-full
|
|
155
155
|
**Task Description:** ${DESCRIPTION}
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
- ${QUICK_DIR}/${next_num}-PLAN.md (Plan to verify)
|
|
159
|
-
</files_to_read>
|
|
157
|
+
**Plan to verify:** ${PLAN_CONTENT}
|
|
160
158
|
|
|
161
159
|
**Scope:** This is a quick task, not a full phase. Skip checks that require a ROADMAP phase goal.
|
|
162
160
|
</verification_context>
|
|
@@ -199,16 +197,17 @@ Track `iteration_count` (starts at 1 after initial plan + check).
|
|
|
199
197
|
|
|
200
198
|
Display: `Sending back to planner for revision... (iteration ${N}/2)`
|
|
201
199
|
|
|
200
|
+
```bash
|
|
201
|
+
PLAN_CONTENT=$(cat "${QUICK_DIR}/${next_num}-PLAN.md" 2>/dev/null)
|
|
202
|
+
```
|
|
203
|
+
|
|
202
204
|
Revision prompt:
|
|
203
205
|
|
|
204
206
|
```markdown
|
|
205
207
|
<revision_context>
|
|
206
208
|
**Mode:** quick-full (revision)
|
|
207
209
|
|
|
208
|
-
|
|
209
|
-
- ${QUICK_DIR}/${next_num}-PLAN.md (Existing plan)
|
|
210
|
-
</files_to_read>
|
|
211
|
-
|
|
210
|
+
**Existing plan:** ${PLAN_CONTENT}
|
|
212
211
|
**Checker issues:** ${structured_issues_from_checker}
|
|
213
212
|
|
|
214
213
|
</revision_context>
|
|
@@ -248,12 +247,8 @@ Task(
|
|
|
248
247
|
prompt="
|
|
249
248
|
Execute quick task ${next_num}.
|
|
250
249
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
- .planning/STATE.md (Project state)
|
|
254
|
-
- ./CODEX.md (Project instructions, if exists)
|
|
255
|
-
- .agents/skills/ (Project skills, if exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
|
|
256
|
-
</files_to_read>
|
|
250
|
+
Plan: @${QUICK_DIR}/${next_num}-PLAN.md
|
|
251
|
+
Project state: @.planning/STATE.md
|
|
257
252
|
|
|
258
253
|
<constraints>
|
|
259
254
|
- Execute all tasks in the plan
|
|
@@ -299,11 +294,7 @@ Task(
|
|
|
299
294
|
prompt="Verify quick task goal achievement.
|
|
300
295
|
Task directory: ${QUICK_DIR}
|
|
301
296
|
Task goal: ${DESCRIPTION}
|
|
302
|
-
|
|
303
|
-
<files_to_read>
|
|
304
|
-
- ${QUICK_DIR}/${next_num}-PLAN.md (Plan)
|
|
305
|
-
</files_to_read>
|
|
306
|
-
|
|
297
|
+
Plan: @${QUICK_DIR}/${next_num}-PLAN.md
|
|
307
298
|
Check must_haves against actual codebase. Create VERIFICATION.md at ${QUICK_DIR}/${next_num}-VERIFICATION.md.",
|
|
308
299
|
subagent_type="gsd-verifier",
|
|
309
300
|
model="{verifier_model}",
|
|
@@ -17,6 +17,7 @@ if $ARGUMENTS.profile not in ["quality", "balanced", "budget"]:
|
|
|
17
17
|
Valid profiles: quality, balanced, budget
|
|
18
18
|
EXIT
|
|
19
19
|
```
|
|
20
|
+
|
|
20
21
|
</step>
|
|
21
22
|
|
|
22
23
|
<step name="ensure_and_load_config">
|
|
@@ -34,6 +35,7 @@ This creates `.planning/config.json` with defaults if missing and loads current
|
|
|
34
35
|
Read current config from state load or directly:
|
|
35
36
|
|
|
36
37
|
Update `model_profile` field:
|
|
38
|
+
|
|
37
39
|
```json
|
|
38
40
|
{
|
|
39
41
|
"model_profile": "$ARGUMENTS.profile"
|
|
@@ -54,27 +56,29 @@ Agents will now use:
|
|
|
54
56
|
[Show table from MODEL_PROFILES in gsd-tools.cjs for selected profile]
|
|
55
57
|
|
|
56
58
|
Example:
|
|
57
|
-
| Agent | Model |
|
|
58
|
-
|
|
59
|
-
| gsd-planner |
|
|
60
|
-
| gsd-executor |
|
|
61
|
-
| gsd-verifier |
|
|
62
|
-
| ... | ... |
|
|
59
|
+
| Agent | Model | Thinking |
|
|
60
|
+
|-------|-------|----------|
|
|
61
|
+
| gsd-planner | gpt-5.3-codex | xhigh |
|
|
62
|
+
| gsd-executor | gpt-5.3-codex | high |
|
|
63
|
+
| gsd-verifier | gpt-5.3-codex | high |
|
|
64
|
+
| ... | ... | ... |
|
|
63
65
|
|
|
64
66
|
Next spawned agents will use the new profile.
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
Map profile names:
|
|
70
|
+
|
|
68
71
|
- quality: use "quality" column from MODEL_PROFILES
|
|
69
72
|
- balanced: use "balanced" column from MODEL_PROFILES
|
|
70
73
|
- budget: use "budget" column from MODEL_PROFILES
|
|
71
|
-
</step>
|
|
74
|
+
</step>
|
|
72
75
|
|
|
73
76
|
</process>
|
|
74
77
|
|
|
75
78
|
<success_criteria>
|
|
79
|
+
|
|
76
80
|
- [ ] Argument validated
|
|
77
81
|
- [ ] Config file ensured
|
|
78
82
|
- [ ] Config updated with new model_profile
|
|
79
83
|
- [ ] Confirmation displayed with model table
|
|
80
|
-
</success_criteria>
|
|
84
|
+
</success_criteria>
|