@undeemed/get-shit-done-codex 1.20.10 → 1.22.0
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/.codex/config.toml +77 -0
- package/README.md +53 -42
- package/agents/gsd-codebase-mapper.md +3 -3
- package/agents/gsd-debugger.md +5 -5
- package/agents/gsd-executor.md +14 -14
- package/agents/gsd-phase-researcher.md +7 -7
- package/agents/gsd-plan-checker.md +10 -10
- package/agents/gsd-planner.md +19 -19
- package/agents/gsd-project-researcher.md +3 -3
- package/agents/gsd-research-synthesizer.md +6 -6
- package/agents/gsd-roadmapper.md +7 -7
- package/agents/gsd-verifier.md +29 -17
- package/bin/install.js +161 -208
- package/commands/gsd/add-tests.md +5 -4
- package/commands/gsd/complete-milestone.md +6 -6
- package/commands/gsd/debug.md +1 -1
- package/commands/gsd/map-codebase.md +3 -3
- package/commands/gsd/new-milestone.md +1 -1
- package/commands/gsd/new-project.md +1 -1
- package/commands/gsd/plan-milestone-gaps.md +2 -2
- package/commands/gsd/reapply-patches.md +2 -2
- package/commands/gsd/research-phase.md +3 -3
- package/commands/gsd/verify-work.md +1 -1
- package/{AGENTS.md → get-shit-done/AGENTS.md} +1 -1
- package/get-shit-done/bin/lib/commands.cjs +1 -1
- package/get-shit-done/bin/lib/phase.cjs +2 -2
- package/get-shit-done/bin/lib/verify.cjs +8 -8
- package/get-shit-done/references/continuation-format.md +16 -16
- package/get-shit-done/references/model-profiles.md +1 -1
- package/get-shit-done/references/ui-brand.md +2 -2
- package/get-shit-done/templates/DEBUG.md +1 -1
- package/get-shit-done/templates/UAT.md +3 -3
- package/get-shit-done/templates/VALIDATION.md +1 -1
- package/get-shit-done/templates/debug-subagent-prompt.md +1 -1
- package/get-shit-done/templates/discovery.md +2 -2
- package/get-shit-done/templates/phase-prompt.md +1 -1
- package/get-shit-done/templates/planner-subagent-prompt.md +3 -3
- package/get-shit-done/templates/project.md +1 -1
- package/get-shit-done/templates/research.md +1 -1
- package/get-shit-done/templates/retrospective.md +13 -7
- package/get-shit-done/templates/state.md +2 -2
- package/get-shit-done/workflows/add-phase.md +7 -7
- package/get-shit-done/workflows/add-tests.md +41 -18
- package/get-shit-done/workflows/add-todo.md +2 -2
- package/get-shit-done/workflows/audit-milestone.md +5 -5
- package/get-shit-done/workflows/check-todos.md +8 -8
- package/get-shit-done/workflows/complete-milestone.md +33 -8
- package/get-shit-done/workflows/diagnose-issues.md +1 -1
- package/get-shit-done/workflows/discovery-phase.md +3 -3
- package/get-shit-done/workflows/discuss-phase.md +10 -10
- package/get-shit-done/workflows/execute-phase.md +7 -7
- package/get-shit-done/workflows/execute-plan.md +3 -3
- package/get-shit-done/workflows/health.md +5 -5
- package/get-shit-done/workflows/help.md +85 -85
- package/get-shit-done/workflows/insert-phase.md +6 -6
- package/get-shit-done/workflows/list-phase-assumptions.md +4 -4
- package/get-shit-done/workflows/map-codebase.md +2 -2
- package/get-shit-done/workflows/new-milestone.md +5 -5
- package/get-shit-done/workflows/new-project.md +11 -11
- package/get-shit-done/workflows/pause-work.md +1 -1
- package/get-shit-done/workflows/plan-milestone-gaps.md +7 -7
- package/get-shit-done/workflows/plan-phase.md +12 -12
- package/get-shit-done/workflows/progress.md +22 -22
- package/get-shit-done/workflows/quick.md +3 -3
- package/get-shit-done/workflows/remove-phase.md +6 -6
- package/get-shit-done/workflows/research-phase.md +2 -2
- package/get-shit-done/workflows/resume-project.md +9 -9
- package/get-shit-done/workflows/settings.md +5 -5
- package/get-shit-done/workflows/transition.md +10 -10
- package/get-shit-done/workflows/update.md +2 -2
- package/get-shit-done/workflows/verify-work.md +8 -8
- package/package.json +2 -2
- package/commands/gsd/new-project.md.bak +0 -1041
|
@@ -25,7 +25,7 @@ Initialize a new project through unified flow: questioning → research (optiona
|
|
|
25
25
|
- `.planning/ROADMAP.md` — phase structure
|
|
26
26
|
- `.planning/STATE.md` — project memory
|
|
27
27
|
|
|
28
|
-
**After this command:** Run
|
|
28
|
+
**After this command:** Run `$gsd-plan-phase 1` to start execution.
|
|
29
29
|
</objective>
|
|
30
30
|
|
|
31
31
|
<execution_context>
|
|
@@ -10,11 +10,11 @@ allowed-tools:
|
|
|
10
10
|
- AskUserQuestion
|
|
11
11
|
---
|
|
12
12
|
<objective>
|
|
13
|
-
Create all phases necessary to close gaps identified by
|
|
13
|
+
Create all phases necessary to close gaps identified by `$gsd-audit-milestone`.
|
|
14
14
|
|
|
15
15
|
Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase.
|
|
16
16
|
|
|
17
|
-
One command creates all fix phases — no manual
|
|
17
|
+
One command creates all fix phases — no manual `$gsd-add-phase` per gap.
|
|
18
18
|
</objective>
|
|
19
19
|
|
|
20
20
|
<execution_context>
|
|
@@ -28,7 +28,7 @@ Read `backup-meta.json` from the patches directory.
|
|
|
28
28
|
```
|
|
29
29
|
No local patches found. Nothing to reapply.
|
|
30
30
|
|
|
31
|
-
Local patches are automatically saved when you run
|
|
31
|
+
Local patches are automatically saved when you run $gsd-update
|
|
32
32
|
after modifying any GSD workflow, command, or agent files.
|
|
33
33
|
```
|
|
34
34
|
Exit.
|
|
@@ -76,7 +76,7 @@ For each file in `backup-meta.json`:
|
|
|
76
76
|
After reapplying, regenerate the file manifest so future updates correctly detect these as user modifications:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
# The manifest will be regenerated on next
|
|
79
|
+
# The manifest will be regenerated on next $gsd-update
|
|
80
80
|
# For now, just note which files were modified
|
|
81
81
|
```
|
|
82
82
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsd:research-phase
|
|
3
|
-
description: Research how to implement a phase (standalone - usually use
|
|
3
|
+
description: Research how to implement a phase (standalone - usually use $gsd-plan-phase instead)
|
|
4
4
|
argument-hint: "[phase]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
@@ -11,7 +11,7 @@ allowed-tools:
|
|
|
11
11
|
<objective>
|
|
12
12
|
Research how to implement a phase. Spawns gsd-phase-researcher agent with phase context.
|
|
13
13
|
|
|
14
|
-
**Note:** This is a standalone research command. For most workflows, use
|
|
14
|
+
**Note:** This is a standalone research command. For most workflows, use `$gsd-plan-phase` which integrates research automatically.
|
|
15
15
|
|
|
16
16
|
**Use this command when:**
|
|
17
17
|
- You want to research without planning yet
|
|
@@ -109,7 +109,7 @@ Mode: ecosystem
|
|
|
109
109
|
</additional_context>
|
|
110
110
|
|
|
111
111
|
<downstream_consumer>
|
|
112
|
-
Your RESEARCH.md will be loaded by
|
|
112
|
+
Your RESEARCH.md will be loaded by `$gsd-plan-phase` which uses specific sections:
|
|
113
113
|
- `## Standard Stack` → Plans use these libraries
|
|
114
114
|
- `## Architecture Patterns` → Task structure follows these
|
|
115
115
|
- `## Don't Hand-Roll` → Tasks NEVER build custom solutions for listed problems
|
|
@@ -16,7 +16,7 @@ Validate built features through conversational testing with persistent state.
|
|
|
16
16
|
|
|
17
17
|
Purpose: Confirm what Codex built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
|
|
18
18
|
|
|
19
|
-
Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for
|
|
19
|
+
Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for $gsd-execute-phase
|
|
20
20
|
</objective>
|
|
21
21
|
|
|
22
22
|
<execution_context>
|
|
@@ -497,7 +497,7 @@ function cmdScaffold(cwd, type, options, raw) {
|
|
|
497
497
|
switch (type) {
|
|
498
498
|
case 'context': {
|
|
499
499
|
filePath = path.join(phaseDir, `${padded}-CONTEXT.md`);
|
|
500
|
-
content = `---\nphase: "${padded}"\nname: "${name || phaseInfo?.phase_name || 'Unnamed'}"\ncreated: ${today}\n---\n\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\n\n## Decisions\n\n_Decisions will be captured during
|
|
500
|
+
content = `---\nphase: "${padded}"\nname: "${name || phaseInfo?.phase_name || 'Unnamed'}"\ncreated: ${today}\n---\n\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\n\n## Decisions\n\n_Decisions will be captured during $gsd-discuss-phase ${phase}_\n\n## Discretion Areas\n\n_Areas where the executor can use judgment_\n\n## Deferred Ideas\n\n_Ideas to consider later_\n`;
|
|
501
501
|
break;
|
|
502
502
|
}
|
|
503
503
|
case 'uat': {
|
|
@@ -333,7 +333,7 @@ function cmdPhaseAdd(cwd, description, raw) {
|
|
|
333
333
|
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
|
334
334
|
|
|
335
335
|
// Build phase entry
|
|
336
|
-
const phaseEntry = `\n### Phase ${newPhaseNum}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${maxPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run
|
|
336
|
+
const phaseEntry = `\n### Phase ${newPhaseNum}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${maxPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run $gsd-plan-phase ${newPhaseNum} to break down)\n`;
|
|
337
337
|
|
|
338
338
|
// Find insertion point: before last "---" or at end
|
|
339
339
|
let updatedContent;
|
|
@@ -404,7 +404,7 @@ function cmdPhaseInsert(cwd, afterPhase, description, raw) {
|
|
|
404
404
|
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
|
405
405
|
|
|
406
406
|
// Build phase entry
|
|
407
|
-
const phaseEntry = `\n### Phase ${decimalPhase}: ${description} (INSERTED)\n\n**Goal:** [Urgent work - to be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${afterPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run
|
|
407
|
+
const phaseEntry = `\n### Phase ${decimalPhase}: ${description} (INSERTED)\n\n**Goal:** [Urgent work - to be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${afterPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run $gsd-plan-phase ${decimalPhase} to break down)\n`;
|
|
408
408
|
|
|
409
409
|
// Insert after the target phase section
|
|
410
410
|
const headerPattern = new RegExp(`(#{2,4}\\s*Phase\\s+0*${afterPhaseEscaped}:[^\\n]*\\n)`, 'i');
|
|
@@ -537,7 +537,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
537
537
|
|
|
538
538
|
// ─── Check 1: .planning/ exists ───────────────────────────────────────────
|
|
539
539
|
if (!fs.existsSync(planningDir)) {
|
|
540
|
-
addIssue('error', 'E001', '.planning/ directory not found', 'Run
|
|
540
|
+
addIssue('error', 'E001', '.planning/ directory not found', 'Run $gsd-new-project to initialize');
|
|
541
541
|
output({
|
|
542
542
|
status: 'broken',
|
|
543
543
|
errors,
|
|
@@ -550,7 +550,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
550
550
|
|
|
551
551
|
// ─── Check 2: PROJECT.md exists and has required sections ─────────────────
|
|
552
552
|
if (!fs.existsSync(projectPath)) {
|
|
553
|
-
addIssue('error', 'E002', 'PROJECT.md not found', 'Run
|
|
553
|
+
addIssue('error', 'E002', 'PROJECT.md not found', 'Run $gsd-new-project to create');
|
|
554
554
|
} else {
|
|
555
555
|
const content = fs.readFileSync(projectPath, 'utf-8');
|
|
556
556
|
const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];
|
|
@@ -563,12 +563,12 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
563
563
|
|
|
564
564
|
// ─── Check 3: ROADMAP.md exists ───────────────────────────────────────────
|
|
565
565
|
if (!fs.existsSync(roadmapPath)) {
|
|
566
|
-
addIssue('error', 'E003', 'ROADMAP.md not found', 'Run
|
|
566
|
+
addIssue('error', 'E003', 'ROADMAP.md not found', 'Run $gsd-new-milestone to create roadmap');
|
|
567
567
|
}
|
|
568
568
|
|
|
569
569
|
// ─── Check 4: STATE.md exists and references valid phases ─────────────────
|
|
570
570
|
if (!fs.existsSync(statePath)) {
|
|
571
|
-
addIssue('error', 'E004', 'STATE.md not found', 'Run
|
|
571
|
+
addIssue('error', 'E004', 'STATE.md not found', 'Run $gsd-health --repair to regenerate', true);
|
|
572
572
|
repairs.push('regenerateState');
|
|
573
573
|
} else {
|
|
574
574
|
const stateContent = fs.readFileSync(statePath, 'utf-8');
|
|
@@ -591,7 +591,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
591
591
|
if (!diskPhases.has(ref) && !diskPhases.has(normalizedRef) && !diskPhases.has(String(parseInt(ref, 10)))) {
|
|
592
592
|
// Only warn if phases dir has any content (not just an empty project)
|
|
593
593
|
if (diskPhases.size > 0) {
|
|
594
|
-
addIssue('warning', 'W002', `STATE.md references phase ${ref}, but only phases ${[...diskPhases].sort().join(', ')} exist`, 'Run
|
|
594
|
+
addIssue('warning', 'W002', `STATE.md references phase ${ref}, but only phases ${[...diskPhases].sort().join(', ')} exist`, 'Run $gsd-health --repair to regenerate STATE.md', true);
|
|
595
595
|
if (!repairs.includes('regenerateState')) repairs.push('regenerateState');
|
|
596
596
|
}
|
|
597
597
|
}
|
|
@@ -600,7 +600,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
600
600
|
|
|
601
601
|
// ─── Check 5: config.json valid JSON + valid schema ───────────────────────
|
|
602
602
|
if (!fs.existsSync(configPath)) {
|
|
603
|
-
addIssue('warning', 'W003', 'config.json not found', 'Run
|
|
603
|
+
addIssue('warning', 'W003', 'config.json not found', 'Run $gsd-health --repair to create with defaults', true);
|
|
604
604
|
repairs.push('createConfig');
|
|
605
605
|
} else {
|
|
606
606
|
try {
|
|
@@ -612,7 +612,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
612
612
|
addIssue('warning', 'W004', `config.json: invalid model_profile "${parsed.model_profile}"`, `Valid values: ${validProfiles.join(', ')}`);
|
|
613
613
|
}
|
|
614
614
|
} catch (err) {
|
|
615
|
-
addIssue('error', 'E005', `config.json: JSON parse error - ${err.message}`, 'Run
|
|
615
|
+
addIssue('error', 'E005', `config.json: JSON parse error - ${err.message}`, 'Run $gsd-health --repair to reset to defaults', true);
|
|
616
616
|
repairs.push('resetConfig');
|
|
617
617
|
}
|
|
618
618
|
}
|
|
@@ -725,7 +725,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|
|
725
725
|
stateContent += `**Current phase:** (determining...)\n`;
|
|
726
726
|
stateContent += `**Status:** Resuming\n\n`;
|
|
727
727
|
stateContent += `## Session Log\n\n`;
|
|
728
|
-
stateContent += `- ${new Date().toISOString().split('T')[0]}: STATE.md regenerated by
|
|
728
|
+
stateContent += `- ${new Date().toISOString().split('T')[0]}: STATE.md regenerated by $gsd-health --repair\n`;
|
|
729
729
|
writeStateMd(statePath, stateContent, cwd);
|
|
730
730
|
repairActions.push({ action: repair, success: true, path: 'STATE.md' });
|
|
731
731
|
break;
|
|
@@ -44,7 +44,7 @@ Standard format for presenting next steps after completing a command or workflow
|
|
|
44
44
|
|
|
45
45
|
**02-03: Refresh Token Rotation** — Add /api/auth/refresh with sliding expiry
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
`$gsd-execute-phase 2`
|
|
48
48
|
|
|
49
49
|
<sub>`/clear` first → fresh context window</sub>
|
|
50
50
|
|
|
@@ -52,7 +52,7 @@ Standard format for presenting next steps after completing a command or workflow
|
|
|
52
52
|
|
|
53
53
|
**Also available:**
|
|
54
54
|
- Review plan before executing
|
|
55
|
-
-
|
|
55
|
+
- `$gsd-list-phase-assumptions 2` — check assumptions
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
```
|
|
@@ -69,7 +69,7 @@ Add note that this is the last plan and what comes after:
|
|
|
69
69
|
**02-03: Refresh Token Rotation** — Add /api/auth/refresh with sliding expiry
|
|
70
70
|
<sub>Final plan in Phase 2</sub>
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
`$gsd-execute-phase 2`
|
|
73
73
|
|
|
74
74
|
<sub>`/clear` first → fresh context window</sub>
|
|
75
75
|
|
|
@@ -91,15 +91,15 @@ Add note that this is the last plan and what comes after:
|
|
|
91
91
|
|
|
92
92
|
**Phase 2: Authentication** — JWT login flow with refresh tokens
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
`$gsd-plan-phase 2`
|
|
95
95
|
|
|
96
96
|
<sub>`/clear` first → fresh context window</sub>
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
100
|
**Also available:**
|
|
101
|
-
-
|
|
102
|
-
-
|
|
101
|
+
- `$gsd-discuss-phase 2` — gather context first
|
|
102
|
+
- `$gsd-research-phase 2` — investigate unknowns
|
|
103
103
|
- Review roadmap
|
|
104
104
|
|
|
105
105
|
---
|
|
@@ -120,15 +120,15 @@ Show completion status before next action:
|
|
|
120
120
|
|
|
121
121
|
**Phase 3: Core Features** — User dashboard, settings, and data export
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
`$gsd-plan-phase 3`
|
|
124
124
|
|
|
125
125
|
<sub>`/clear` first → fresh context window</sub>
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
129
129
|
**Also available:**
|
|
130
|
-
-
|
|
131
|
-
-
|
|
130
|
+
- `$gsd-discuss-phase 3` — gather context first
|
|
131
|
+
- `$gsd-research-phase 3` — investigate unknowns
|
|
132
132
|
- Review what Phase 2 built
|
|
133
133
|
|
|
134
134
|
---
|
|
@@ -145,11 +145,11 @@ When there's no clear primary action:
|
|
|
145
145
|
|
|
146
146
|
**Phase 3: Core Features** — User dashboard, settings, and data export
|
|
147
147
|
|
|
148
|
-
**To plan directly:**
|
|
148
|
+
**To plan directly:** `$gsd-plan-phase 3`
|
|
149
149
|
|
|
150
|
-
**To discuss context first:**
|
|
150
|
+
**To discuss context first:** `$gsd-discuss-phase 3`
|
|
151
151
|
|
|
152
|
-
**To research unknowns:**
|
|
152
|
+
**To research unknowns:** `$gsd-research-phase 3`
|
|
153
153
|
|
|
154
154
|
<sub>`/clear` first → fresh context window</sub>
|
|
155
155
|
|
|
@@ -169,7 +169,7 @@ All 4 phases shipped
|
|
|
169
169
|
|
|
170
170
|
**Start v1.1** — questioning → research → requirements → roadmap
|
|
171
171
|
|
|
172
|
-
|
|
172
|
+
`$gsd-new-milestone`
|
|
173
173
|
|
|
174
174
|
<sub>`/clear` first → fresh context window</sub>
|
|
175
175
|
|
|
@@ -214,7 +214,7 @@ Extract: `**02-03: Refresh Token Rotation** — Add /api/auth/refresh with slidi
|
|
|
214
214
|
## To Continue
|
|
215
215
|
|
|
216
216
|
Run `/clear`, then paste:
|
|
217
|
-
|
|
217
|
+
$gsd-execute-phase 2
|
|
218
218
|
```
|
|
219
219
|
|
|
220
220
|
User has no idea what 02-03 is about.
|
|
@@ -222,7 +222,7 @@ User has no idea what 02-03 is about.
|
|
|
222
222
|
### Don't: Missing /clear explanation
|
|
223
223
|
|
|
224
224
|
```
|
|
225
|
-
|
|
225
|
+
`$gsd-plan-phase 3`
|
|
226
226
|
|
|
227
227
|
Run /clear first.
|
|
228
228
|
```
|
|
@@ -242,7 +242,7 @@ Sounds like an afterthought. Use "Also available:" instead.
|
|
|
242
242
|
|
|
243
243
|
```
|
|
244
244
|
```
|
|
245
|
-
|
|
245
|
+
$gsd-plan-phase 3
|
|
246
246
|
```
|
|
247
247
|
```
|
|
248
248
|
|
|
@@ -65,7 +65,7 @@ Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `hai
|
|
|
65
65
|
|
|
66
66
|
## Switching Profiles
|
|
67
67
|
|
|
68
|
-
Runtime:
|
|
68
|
+
Runtime: `$gsd-set-profile <profile>`
|
|
69
69
|
|
|
70
70
|
Per-project default: Set in `.planning/config.json`:
|
|
71
71
|
```json
|
|
@@ -115,8 +115,8 @@ Always at end of major completions.
|
|
|
115
115
|
───────────────────────────────────────────────────────────────
|
|
116
116
|
|
|
117
117
|
**Also available:**
|
|
118
|
-
-
|
|
119
|
-
-
|
|
118
|
+
- `$gsd-alternative-1` — description
|
|
119
|
+
- `$gsd-alternative-2` — description
|
|
120
120
|
|
|
121
121
|
───────────────────────────────────────────────────────────────
|
|
122
122
|
```
|
|
@@ -99,7 +99,7 @@ files_changed: []
|
|
|
99
99
|
|
|
100
100
|
<lifecycle>
|
|
101
101
|
|
|
102
|
-
**Creation:** Immediately when
|
|
102
|
+
**Creation:** Immediately when $gsd-debug is called
|
|
103
103
|
- Create file with trigger from user input
|
|
104
104
|
- Set status to "gathering"
|
|
105
105
|
- Current Focus: next_action = "gather symptoms"
|
|
@@ -98,7 +98,7 @@ skipped: [N]
|
|
|
98
98
|
**Gaps:**
|
|
99
99
|
- APPEND only when issue found (YAML format)
|
|
100
100
|
- After diagnosis: fill `root_cause`, `artifacts`, `missing`, `debug_session`
|
|
101
|
-
- This section feeds directly into
|
|
101
|
+
- This section feeds directly into $gsd-plan-phase --gaps
|
|
102
102
|
|
|
103
103
|
</section_rules>
|
|
104
104
|
|
|
@@ -112,7 +112,7 @@ skipped: [N]
|
|
|
112
112
|
4. UAT.md Gaps section updated with diagnosis:
|
|
113
113
|
- Each gap gets `root_cause`, `artifacts`, `missing`, `debug_session` filled
|
|
114
114
|
5. status → "diagnosed"
|
|
115
|
-
6. Ready for
|
|
115
|
+
6. Ready for $gsd-plan-phase --gaps with root causes
|
|
116
116
|
|
|
117
117
|
**After diagnosis:**
|
|
118
118
|
```yaml
|
|
@@ -136,7 +136,7 @@ skipped: [N]
|
|
|
136
136
|
|
|
137
137
|
<lifecycle>
|
|
138
138
|
|
|
139
|
-
**Creation:** When
|
|
139
|
+
**Creation:** When $gsd-verify-work starts new session
|
|
140
140
|
- Extract tests from SUMMARY.md files
|
|
141
141
|
- Set status to "testing"
|
|
142
142
|
- Current Test points to test 1
|
|
@@ -29,7 +29,7 @@ created: {date}
|
|
|
29
29
|
|
|
30
30
|
- **After every task commit:** Run `{quick run command}`
|
|
31
31
|
- **After every plan wave:** Run `{full suite command}`
|
|
32
|
-
- **Before
|
|
32
|
+
- **Before `$gsd-verify-work`:** Full suite must be green
|
|
33
33
|
- **Max feedback latency:** {N} seconds
|
|
34
34
|
|
|
35
35
|
---
|
|
@@ -4,7 +4,7 @@ Template for `.planning/phases/XX-name/DISCOVERY.md` - shallow research for libr
|
|
|
4
4
|
|
|
5
5
|
**Purpose:** Answer "which library/option should we use" questions during mandatory discovery in plan-phase.
|
|
6
6
|
|
|
7
|
-
For deep ecosystem research ("how do experts build this"), use
|
|
7
|
+
For deep ecosystem research ("how do experts build this"), use `$gsd-research-phase` which produces RESEARCH.md.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -142,5 +142,5 @@ Create `.planning/phases/XX-name/DISCOVERY.md`:
|
|
|
142
142
|
- Niche/complex domains (3D, games, audio, shaders)
|
|
143
143
|
- Need ecosystem knowledge, not just library choice
|
|
144
144
|
- "How do experts build this" questions
|
|
145
|
-
- Use
|
|
145
|
+
- Use `$gsd-research-phase` for these
|
|
146
146
|
</guidelines>
|
|
@@ -134,7 +134,7 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
|
|
|
134
134
|
| `user_setup` | No | Array of human-required setup items (external services) |
|
|
135
135
|
| `must_haves` | Yes | Goal-backward verification criteria (see below) |
|
|
136
136
|
|
|
137
|
-
**Wave is pre-computed:** Wave numbers are assigned during
|
|
137
|
+
**Wave is pre-computed:** Wave numbers are assigned during `$gsd-plan-phase`. Execute-phase reads `wave` directly from frontmatter and groups plans by wave number. No runtime dependency analysis needed.
|
|
138
138
|
|
|
139
139
|
**Must-haves enable verification:** The `must_haves` field carries goal-backward requirements from planning to execution. After all plans complete, execute-phase spawns a verification subagent that checks these criteria against the actual codebase.
|
|
140
140
|
|
|
@@ -34,7 +34,7 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
|
|
|
34
34
|
</planning_context>
|
|
35
35
|
|
|
36
36
|
<downstream_consumer>
|
|
37
|
-
Output consumed by
|
|
37
|
+
Output consumed by $gsd-execute-phase
|
|
38
38
|
Plans must be executable prompts with:
|
|
39
39
|
- Frontmatter (wave, depends_on, files_modified, autonomous)
|
|
40
40
|
- Tasks in XML format
|
|
@@ -68,7 +68,7 @@ Before returning PLANNING COMPLETE:
|
|
|
68
68
|
|
|
69
69
|
## Usage
|
|
70
70
|
|
|
71
|
-
**From
|
|
71
|
+
**From $gsd-plan-phase (standard mode):**
|
|
72
72
|
```python
|
|
73
73
|
Task(
|
|
74
74
|
prompt=filled_template,
|
|
@@ -77,7 +77,7 @@ Task(
|
|
|
77
77
|
)
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
**From
|
|
80
|
+
**From $gsd-plan-phase --gaps (gap closure mode):**
|
|
81
81
|
```python
|
|
82
82
|
Task(
|
|
83
83
|
prompt=filled_template, # with mode: gap_closure
|
|
@@ -147,7 +147,7 @@ PROJECT.md evolves throughout the project lifecycle.
|
|
|
147
147
|
|
|
148
148
|
For existing codebases:
|
|
149
149
|
|
|
150
|
-
1. **Map codebase first** via
|
|
150
|
+
1. **Map codebase first** via `$gsd-map-codebase`
|
|
151
151
|
|
|
152
152
|
2. **Infer Validated requirements** from existing code:
|
|
153
153
|
- What does the codebase actually do?
|
|
@@ -18,7 +18,7 @@ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive
|
|
|
18
18
|
<user_constraints>
|
|
19
19
|
## User Constraints (from CONTEXT.md)
|
|
20
20
|
|
|
21
|
-
**CRITICAL:** If CONTEXT.md exists from
|
|
21
|
+
**CRITICAL:** If CONTEXT.md exists from $gsd-discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
|
|
22
22
|
|
|
23
23
|
### Locked Decisions
|
|
24
24
|
[Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Project Retrospective
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
_A living document updated after each milestone. Lessons feed forward into future planning._
|
|
4
4
|
|
|
5
5
|
## Milestone: v{version} — {name}
|
|
6
6
|
|
|
@@ -8,27 +8,33 @@
|
|
|
8
8
|
**Phases:** {count} | **Plans:** {count} | **Sessions:** {count}
|
|
9
9
|
|
|
10
10
|
### What Was Built
|
|
11
|
+
|
|
11
12
|
- {Key deliverable 1}
|
|
12
13
|
- {Key deliverable 2}
|
|
13
14
|
- {Key deliverable 3}
|
|
14
15
|
|
|
15
16
|
### What Worked
|
|
17
|
+
|
|
16
18
|
- {Efficiency win or successful pattern}
|
|
17
19
|
- {What went smoothly}
|
|
18
20
|
|
|
19
21
|
### What Was Inefficient
|
|
22
|
+
|
|
20
23
|
- {Missed opportunity}
|
|
21
24
|
- {What took longer than expected}
|
|
22
25
|
|
|
23
26
|
### Patterns Established
|
|
27
|
+
|
|
24
28
|
- {New pattern or convention that should persist}
|
|
25
29
|
|
|
26
30
|
### Key Lessons
|
|
31
|
+
|
|
27
32
|
1. {Specific, actionable lesson}
|
|
28
33
|
2. {Another lesson}
|
|
29
34
|
|
|
30
35
|
### Cost Observations
|
|
31
|
-
|
|
36
|
+
|
|
37
|
+
- Model mix: {breakdown of model usage}
|
|
32
38
|
- Sessions: {count}
|
|
33
39
|
- Notable: {efficiency observation}
|
|
34
40
|
|
|
@@ -38,15 +44,15 @@
|
|
|
38
44
|
|
|
39
45
|
### Process Evolution
|
|
40
46
|
|
|
41
|
-
| Milestone | Sessions | Phases | Key Change
|
|
42
|
-
|
|
43
|
-
| v{X}
|
|
47
|
+
| Milestone | Sessions | Phases | Key Change |
|
|
48
|
+
| --------- | -------- | ------ | ------------------------- |
|
|
49
|
+
| v{X} | {N} | {M} | {What changed in process} |
|
|
44
50
|
|
|
45
51
|
### Cumulative Quality
|
|
46
52
|
|
|
47
53
|
| Milestone | Tests | Coverage | Zero-Dep Additions |
|
|
48
|
-
|
|
49
|
-
| v{X}
|
|
54
|
+
| --------- | ----- | -------- | ------------------ |
|
|
55
|
+
| v{X} | {N} | {Y}% | {count} |
|
|
50
56
|
|
|
51
57
|
### Top Lessons (Verified Across Milestones)
|
|
52
58
|
|
|
@@ -145,10 +145,10 @@ Updated after each plan completion.
|
|
|
145
145
|
|
|
146
146
|
**Decisions:** Reference to PROJECT.md Key Decisions table, plus recent decisions summary for quick access. Full decision log lives in PROJECT.md.
|
|
147
147
|
|
|
148
|
-
**Pending Todos:** Ideas captured via
|
|
148
|
+
**Pending Todos:** Ideas captured via $gsd-add-todo
|
|
149
149
|
- Count of pending todos
|
|
150
150
|
- Reference to .planning/todos/pending/
|
|
151
|
-
- Brief list if few, count if many (e.g., "5 pending todos — see
|
|
151
|
+
- Brief list if few, count if many (e.g., "5 pending todos — see $gsd-check-todos")
|
|
152
152
|
|
|
153
153
|
**Blockers/Concerns:** From "Next Phase Readiness" sections
|
|
154
154
|
- Issues that affect future work
|
|
@@ -11,15 +11,15 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
11
11
|
<step name="parse_arguments">
|
|
12
12
|
Parse the command arguments:
|
|
13
13
|
- All arguments become the phase description
|
|
14
|
-
- Example:
|
|
15
|
-
- Example:
|
|
14
|
+
- Example: `$gsd-add-phase Add authentication` → description = "Add authentication"
|
|
15
|
+
- Example: `$gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
|
|
16
16
|
|
|
17
17
|
If no arguments provided:
|
|
18
18
|
|
|
19
19
|
```
|
|
20
20
|
ERROR: Phase description required
|
|
21
|
-
Usage:
|
|
22
|
-
Example:
|
|
21
|
+
Usage: $gsd-add-phase <description>
|
|
22
|
+
Example: $gsd-add-phase Add authentication system
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
Exit.
|
|
@@ -35,7 +35,7 @@ INIT=$(node ~/.codex/get-shit-done/bin/gsd-tools.cjs init phase-op "0")
|
|
|
35
35
|
Check `roadmap_exists` from init JSON. If false:
|
|
36
36
|
```
|
|
37
37
|
ERROR: No roadmap found (.planning/ROADMAP.md)
|
|
38
|
-
Run
|
|
38
|
+
Run $gsd-new-project to initialize.
|
|
39
39
|
```
|
|
40
40
|
Exit.
|
|
41
41
|
</step>
|
|
@@ -86,14 +86,14 @@ Roadmap updated: .planning/ROADMAP.md
|
|
|
86
86
|
|
|
87
87
|
**Phase {N}: {description}**
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
`$gsd-plan-phase {N}`
|
|
90
90
|
|
|
91
91
|
<sub>`/clear` first → fresh context window</sub>
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
|
|
95
95
|
**Also available:**
|
|
96
|
-
-
|
|
96
|
+
- `$gsd-add-phase <description>` — add another phase
|
|
97
97
|
- Review roadmap
|
|
98
98
|
|
|
99
99
|
---
|