@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
|
@@ -25,13 +25,13 @@ cat .planning/config.json
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Parse current values (default to `true` if not present):
|
|
28
|
+
|
|
28
29
|
- `workflow.research` — spawn researcher during plan-phase
|
|
29
30
|
- `workflow.plan_check` — spawn plan checker during plan-phase
|
|
30
31
|
- `workflow.verifier` — spawn verifier during execute-phase
|
|
31
|
-
- `workflow.nyquist_validation` — validation architecture research during plan-phase
|
|
32
32
|
- `model_profile` — which model each agent uses (default: `balanced`)
|
|
33
33
|
- `git.branching_strategy` — branching approach (default: `"none"`)
|
|
34
|
-
</step>
|
|
34
|
+
</step>
|
|
35
35
|
|
|
36
36
|
<step name="present_settings">
|
|
37
37
|
Use AskUserQuestion with current values pre-selected:
|
|
@@ -43,9 +43,9 @@ AskUserQuestion([
|
|
|
43
43
|
header: "Model",
|
|
44
44
|
multiSelect: false,
|
|
45
45
|
options: [
|
|
46
|
-
{ label: "Quality", description: "
|
|
47
|
-
{ label: "Balanced (Recommended)", description: "
|
|
48
|
-
{ label: "Budget", description: "
|
|
46
|
+
{ label: "Quality", description: "gpt-5.3-codex with xhigh thinking for decision-makers, high for analysis" },
|
|
47
|
+
{ label: "Balanced (Recommended)", description: "gpt-5.3-codex with xhigh thinking for planner/debugger, high/medium for others" },
|
|
48
|
+
{ label: "Budget", description: "gpt-5.3-codex with high thinking for planner/debugger, medium everywhere else" }
|
|
49
49
|
]
|
|
50
50
|
},
|
|
51
51
|
{
|
|
@@ -84,15 +84,6 @@ AskUserQuestion([
|
|
|
84
84
|
{ label: "Yes", description: "Chain stages via Task() subagents (same isolation)" }
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
|
-
{
|
|
88
|
-
question: "Enable Nyquist Validation? (researches test coverage during planning)",
|
|
89
|
-
header: "Nyquist",
|
|
90
|
-
multiSelect: false,
|
|
91
|
-
options: [
|
|
92
|
-
{ label: "Yes (Recommended)", description: "Research automated test coverage during plan-phase. Adds validation requirements to plans. Blocks approval if tasks lack automated verify." },
|
|
93
|
-
{ label: "No", description: "Skip validation research. Good for rapid prototyping or no-test phases." }
|
|
94
|
-
]
|
|
95
|
-
},
|
|
96
87
|
{
|
|
97
88
|
question: "Git branching strategy?",
|
|
98
89
|
header: "Branching",
|
|
@@ -105,6 +96,7 @@ AskUserQuestion([
|
|
|
105
96
|
}
|
|
106
97
|
])
|
|
107
98
|
```
|
|
99
|
+
|
|
108
100
|
</step>
|
|
109
101
|
|
|
110
102
|
<step name="update_config">
|
|
@@ -118,8 +110,7 @@ Merge new settings into existing config.json:
|
|
|
118
110
|
"research": true/false,
|
|
119
111
|
"plan_check": true/false,
|
|
120
112
|
"verifier": true/false,
|
|
121
|
-
"auto_advance": true/false
|
|
122
|
-
"nyquist_validation": true/false
|
|
113
|
+
"auto_advance": true/false
|
|
123
114
|
},
|
|
124
115
|
"git": {
|
|
125
116
|
"branching_strategy": "none" | "phase" | "milestone"
|
|
@@ -154,6 +145,7 @@ mkdir -p ~/.gsd
|
|
|
154
145
|
```
|
|
155
146
|
|
|
156
147
|
Write `~/.gsd/defaults.json` with:
|
|
148
|
+
|
|
157
149
|
```json
|
|
158
150
|
{
|
|
159
151
|
"mode": <current>,
|
|
@@ -166,11 +158,11 @@ Write `~/.gsd/defaults.json` with:
|
|
|
166
158
|
"research": <current>,
|
|
167
159
|
"plan_check": <current>,
|
|
168
160
|
"verifier": <current>,
|
|
169
|
-
"auto_advance": <current
|
|
170
|
-
"nyquist_validation": <current>
|
|
161
|
+
"auto_advance": <current>
|
|
171
162
|
}
|
|
172
163
|
}
|
|
173
164
|
```
|
|
165
|
+
|
|
174
166
|
</step>
|
|
175
167
|
|
|
176
168
|
<step name="confirm">
|
|
@@ -188,7 +180,6 @@ Display:
|
|
|
188
180
|
| Plan Checker | {On/Off} |
|
|
189
181
|
| Execution Verifier | {On/Off} |
|
|
190
182
|
| Auto-Advance | {On/Off} |
|
|
191
|
-
| Nyquist Validation | {On/Off} |
|
|
192
183
|
| Git Branching | {None/Per Phase/Per Milestone} |
|
|
193
184
|
| Saved as Defaults | {Yes/No} |
|
|
194
185
|
|
|
@@ -200,14 +191,16 @@ Quick commands:
|
|
|
200
191
|
- $gsd-plan-phase --skip-research — skip research
|
|
201
192
|
- $gsd-plan-phase --skip-verify — skip plan check
|
|
202
193
|
```
|
|
194
|
+
|
|
203
195
|
</step>
|
|
204
196
|
|
|
205
197
|
</process>
|
|
206
198
|
|
|
207
199
|
<success_criteria>
|
|
200
|
+
|
|
208
201
|
- [ ] Current config read
|
|
209
|
-
- [ ] User presented with
|
|
202
|
+
- [ ] User presented with 6 settings (profile + 4 workflow toggles + git branching)
|
|
210
203
|
- [ ] Config updated with model_profile, workflow, and git sections
|
|
211
204
|
- [ ] User offered to save as global defaults (~/.gsd/defaults.json)
|
|
212
205
|
- [ ] Changes confirmed to user
|
|
213
|
-
</success_criteria>
|
|
206
|
+
</success_criteria>
|
|
@@ -451,11 +451,6 @@ Exit skill and invoke SlashCommand("$gsd-discuss-phase [X+1] --auto")
|
|
|
451
451
|
|
|
452
452
|
**Route B: Milestone complete (all phases done)**
|
|
453
453
|
|
|
454
|
-
**Clear auto-advance** — milestone boundary is the natural stopping point:
|
|
455
|
-
```bash
|
|
456
|
-
node ~/.codex/get-shit-done/bin/gsd-tools.cjs config-set workflow.auto_advance false
|
|
457
|
-
```
|
|
458
|
-
|
|
459
454
|
<if mode="yolo">
|
|
460
455
|
|
|
461
456
|
```
|
|
@@ -365,11 +365,14 @@ Task(
|
|
|
365
365
|
**Phase:** {phase_number}
|
|
366
366
|
**Mode:** gap_closure
|
|
367
367
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
368
|
+
**UAT with diagnoses:**
|
|
369
|
+
@.planning/phases/{phase_dir}/{phase_num}-UAT.md
|
|
370
|
+
|
|
371
|
+
**Project State:**
|
|
372
|
+
@.planning/STATE.md
|
|
373
|
+
|
|
374
|
+
**Roadmap:**
|
|
375
|
+
@.planning/ROADMAP.md
|
|
373
376
|
|
|
374
377
|
</planning_context>
|
|
375
378
|
|
|
@@ -413,9 +416,8 @@ Task(
|
|
|
413
416
|
**Phase:** {phase_number}
|
|
414
417
|
**Phase Goal:** Close diagnosed gaps from UAT
|
|
415
418
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
</files_to_read>
|
|
419
|
+
**Plans to verify:**
|
|
420
|
+
@.planning/phases/{phase_dir}/*-PLAN.md
|
|
419
421
|
|
|
420
422
|
</verification_context>
|
|
421
423
|
|
|
@@ -453,9 +455,8 @@ Task(
|
|
|
453
455
|
**Phase:** {phase_number}
|
|
454
456
|
**Mode:** revision
|
|
455
457
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
</files_to_read>
|
|
458
|
+
**Existing plans:**
|
|
459
|
+
@.planning/phases/{phase_dir}/*-PLAN.md
|
|
459
460
|
|
|
460
461
|
**Checker issues:**
|
|
461
462
|
{structured_issues_from_checker}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Context Monitor - PostToolUse hook
|
|
2
|
+
// Context Monitor - PostToolUse hook for Codex CLI
|
|
3
3
|
// Reads context metrics from the statusline bridge file and injects
|
|
4
4
|
// warnings when context usage is high. This makes the AGENT aware of
|
|
5
5
|
// context limits (the statusline only shows the user).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@undeemed/get-shit-done-codex",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.2",
|
|
4
4
|
"description": "A meta-prompting, context engineering and spec-driven development system for OpenAI Codex (CLI and Desktop). Fork of get-shit-done by TÂCHES, adapted for Codex.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"get-shit-done-codex": "bin/install.js"
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"scripts": {
|
|
68
68
|
"build:hooks": "node scripts/build-hooks.js",
|
|
69
69
|
"prepublishOnly": "npm run build:hooks",
|
|
70
|
-
"test": "node
|
|
70
|
+
"test": "node scripts/run-tests.cjs",
|
|
71
|
+
"test:coverage": "node scripts/run-tests.cjs --coverage"
|
|
71
72
|
}
|
|
72
73
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("node:fs");
|
|
4
|
+
const path = require("node:path");
|
|
5
|
+
const { spawnSync } = require("node:child_process");
|
|
6
|
+
|
|
7
|
+
function collectTests(dir) {
|
|
8
|
+
if (!fs.existsSync(dir)) return [];
|
|
9
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
10
|
+
const files = [];
|
|
11
|
+
|
|
12
|
+
for (const entry of entries) {
|
|
13
|
+
const fullPath = path.join(dir, entry.name);
|
|
14
|
+
if (entry.isDirectory()) {
|
|
15
|
+
files.push(...collectTests(fullPath));
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (entry.isFile() && entry.name.endsWith(".test.cjs")) {
|
|
19
|
+
files.push(fullPath);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return files;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const withCoverage = process.argv.includes("--coverage");
|
|
27
|
+
const testFiles = collectTests(path.resolve(__dirname, "..", "tests")).sort();
|
|
28
|
+
|
|
29
|
+
if (testFiles.length === 0) {
|
|
30
|
+
console.error("No test files found in ./tests");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const args = [];
|
|
35
|
+
if (withCoverage) args.push("--experimental-test-coverage");
|
|
36
|
+
args.push("--test", ...testFiles);
|
|
37
|
+
|
|
38
|
+
const result = spawnSync(process.execPath, args, { stdio: "inherit" });
|
|
39
|
+
if (result.error) {
|
|
40
|
+
console.error(result.error.message);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
process.exit(result.status ?? 1);
|