gsd-codex-cli 1.20.12 → 1.20.13

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.
Files changed (43) hide show
  1. package/.codex/agents/gsd-codebase-mapper.toml +2 -0
  2. package/.codex/agents/gsd-debugger.toml +2 -0
  3. package/.codex/agents/gsd-executor.toml +2 -0
  4. package/.codex/agents/gsd-integration-checker.toml +2 -0
  5. package/.codex/agents/gsd-phase-researcher.toml +2 -0
  6. package/.codex/agents/gsd-plan-checker.toml +2 -0
  7. package/.codex/agents/gsd-planner.toml +2 -0
  8. package/.codex/agents/gsd-project-researcher.toml +2 -0
  9. package/.codex/agents/gsd-research-synthesizer.toml +2 -0
  10. package/.codex/agents/gsd-roadmapper.toml +2 -0
  11. package/.codex/agents/gsd-verifier.toml +2 -0
  12. package/.codex/prompts/gsd-add-phase.md +1 -0
  13. package/.codex/prompts/gsd-add-todo.md +1 -0
  14. package/.codex/prompts/gsd-audit-milestone.md +1 -0
  15. package/.codex/prompts/gsd-check-todos.md +1 -0
  16. package/.codex/prompts/gsd-complete-milestone.md +1 -0
  17. package/.codex/prompts/gsd-debug.md +1 -0
  18. package/.codex/prompts/gsd-discuss-phase.md +1 -0
  19. package/.codex/prompts/gsd-doctor.md +14 -6
  20. package/.codex/prompts/gsd-execute-phase.md +1 -0
  21. package/.codex/prompts/gsd-help.md +1 -0
  22. package/.codex/prompts/gsd-insert-phase.md +1 -0
  23. package/.codex/prompts/gsd-list-phase-assumptions.md +1 -0
  24. package/.codex/prompts/gsd-map-codebase.md +1 -0
  25. package/.codex/prompts/gsd-new-milestone.md +1 -0
  26. package/.codex/prompts/gsd-new-project.md +1 -0
  27. package/.codex/prompts/gsd-pause-work.md +1 -0
  28. package/.codex/prompts/gsd-plan-milestone-gaps.md +1 -0
  29. package/.codex/prompts/gsd-plan-phase.md +1 -0
  30. package/.codex/prompts/gsd-progress.md +1 -0
  31. package/.codex/prompts/gsd-quick.md +1 -0
  32. package/.codex/prompts/gsd-remove-phase.md +1 -0
  33. package/.codex/prompts/gsd-research-phase.md +1 -0
  34. package/.codex/prompts/gsd-resume-work.md +1 -0
  35. package/.codex/prompts/gsd-set-profile.md +1 -0
  36. package/.codex/prompts/gsd-settings.md +1 -0
  37. package/.codex/prompts/gsd-update.md +1 -0
  38. package/.codex/prompts/gsd-verify-work.md +1 -0
  39. package/.codex/skills/get-shit-done-codex/SKILL.md +14 -13
  40. package/.codex/skills/get-shit-done-codex/references/compat.md +4 -2
  41. package/README.md +12 -9
  42. package/bin/install-codex.js +75 -24
  43. package/package.json +16 -15
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.1-codex-mini"
2
+ model_reasoning_effort = "high"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-codex"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -0,0 +1,2 @@
1
+ model = "gpt-5.3-spark"
2
+ model_reasoning_effort = "xhigh"
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op "0" --raw
38
38
  3. Load .claude/get-shit-done/workflows/add-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init todos [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/add-todo.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init milestone-op --raw
38
38
  3. Load .claude/get-shit-done/workflows/audit-milestone.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init todos [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/check-todos.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init execute-phase "1" --raw
38
38
  3. Load .claude/get-shit-done/workflows/complete-milestone.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> state load --raw
38
38
  3. Execute the debug flow defined in this command (no separate workflow file exists in the gsd commands set).
39
39
  4. Translate each Task(...) in the debug flow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/discuss-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -24,12 +24,20 @@ Run these checks and then present a compact table: `check | status | details | f
24
24
  - `.claude/get-shit-done/VERSION`
25
25
  - `~/.claude/get-shit-done/VERSION`
26
26
 
27
- ### Engine presence (required for Codex prompts)
28
- - `.claude/get-shit-done/bin/gsd-tools.cjs` OR `.claude/get-shit-done/bin/gsd-tools.js`
29
- - If only `gsd-tools.test.js` exists, treat engine as missing/incomplete.
30
-
31
- ### Project state
32
- - `.planning/` exists (if missing, user hasn’t initialized a project).
27
+ ### Engine presence (required for Codex prompts)
28
+ - `.claude/get-shit-done/bin/gsd-tools.cjs` OR `.claude/get-shit-done/bin/gsd-tools.js`
29
+ - If only `gsd-tools.test.js` exists, treat engine as missing/incomplete.
30
+
31
+ ### Codex agent roles (recommended for model routing)
32
+ - Role registrations exist (first match wins):
33
+ - `.codex/config.toml` contains `[agents.gsd-planner]`
34
+ - `~/.codex/config.toml` contains `[agents.gsd-planner]`
35
+ - Role config layers exist (first match wins):
36
+ - `.codex/agents/gsd-planner.toml`
37
+ - `~/.codex/agents/gsd-planner.toml`
38
+
39
+ ### Project state
40
+ - `.planning/` exists (if missing, user hasn’t initialized a project).
33
41
 
34
42
  ## Update check
35
43
  - Best-effort only; do not fail if offline.
@@ -51,6 +51,7 @@ node <gsd-tools-path> init execute-phase <phase> --raw
51
51
  6. Load .claude/get-shit-done/workflows/execute-phase.md and execute it step-by-step.
52
52
  7. Translate each Task(...) in workflow into:
53
53
  - spawn_agent with the matching role file context from .claude/agents/.
54
+ - Set `agent_type` to the matching GSD role (gsd-*).
54
55
  - wait for each spawned agent and apply returned output before moving forward.
55
56
  8. Preserve all gates and routing from upstream workflow.
56
57
  9. Preserve commit behavior using
@@ -38,6 +38,7 @@ Show available GSD commands and usage guide
38
38
  3. Load .claude/get-shit-done/workflows/help.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op [after-phase] --raw
38
38
  3. Load .claude/get-shit-done/workflows/insert-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/list-phase-assumptions.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init map-codebase --raw
38
38
  3. Load .claude/get-shit-done/workflows/map-codebase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -46,6 +46,7 @@ node <gsd-tools-path> init new-milestone --raw
46
46
  Then summarize the chosen direction and ask for confirmation.
47
47
  5. Translate each Task(...) in workflow into:
48
48
  - spawn_agent with the matching role file context from .claude/agents/.
49
+ - Set `agent_type` to the matching GSD role (gsd-*).
49
50
  - wait for each spawned agent and apply returned output before moving forward.
50
51
  6. Preserve all gates and routing from upstream workflow.
51
52
  7. Before reporting success, verify `.planning/ROADMAP.md` exists. If missing, treat as blocked and continue workflow remediation.
@@ -38,6 +38,7 @@ node <gsd-tools-path> init new-project --raw
38
38
  3. Load .claude/get-shit-done/workflows/new-project.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> state load --raw
38
38
  3. Load .claude/get-shit-done/workflows/pause-work.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init milestone-op --raw
38
38
  3. Load .claude/get-shit-done/workflows/plan-milestone-gaps.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init plan-phase [phase] --include state,roadmap,requiremen
38
38
  3. Load .claude/get-shit-done/workflows/plan-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init progress --include state,roadmap,project,config --raw
38
38
  3. Load .claude/get-shit-done/workflows/progress.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init quick "[argument]" --raw
38
38
  3. Load .claude/get-shit-done/workflows/quick.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/remove-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init phase-op [argument] --raw
38
38
  3. Load .claude/get-shit-done/workflows/research-phase.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init resume --raw
38
38
  3. Load .claude/get-shit-done/workflows/resume-project.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> state load --raw
38
38
  3. Load .claude/get-shit-done/workflows/set-profile.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> config-ensure-section --raw
38
38
  3. Load .claude/get-shit-done/workflows/settings.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -44,6 +44,7 @@ Update GSD to latest version with changelog display
44
44
  3. Load .claude/get-shit-done/workflows/update.md and execute it step-by-step.
45
45
  4. Translate each Task(...) in workflow into:
46
46
  - spawn_agent with the matching role file context from .claude/agents/.
47
+ - Set `agent_type` to the matching GSD role (gsd-*).
47
48
  - wait for each spawned agent and apply returned output before moving forward.
48
49
  5. Preserve all gates and routing from upstream workflow.
49
50
  6. Preserve commit behavior using
@@ -38,6 +38,7 @@ node <gsd-tools-path> init verify-work [phase] --raw
38
38
  3. Load .claude/get-shit-done/workflows/verify-work.md and execute it step-by-step.
39
39
  4. Translate each Task(...) in workflow into:
40
40
  - spawn_agent with the matching role file context from .claude/agents/.
41
+ - Set `agent_type` to the matching GSD role (gsd-*).
41
42
  - wait for each spawned agent and apply returned output before moving forward.
42
43
  5. Preserve all gates and routing from upstream workflow.
43
44
  6. Preserve commit behavior using
@@ -25,20 +25,21 @@ Use this skill to run `gsd-*` prompts under `Codex` while preserving upstream GS
25
25
  - Replace each `Task(...)` with: `spawn_agent` + `wait`.
26
26
  - Replace Bash/JQ patterns with PowerShell and `ConvertFrom-Json`.
27
27
  - Replace AskUserQuestion interactions with direct user prompts in chat.
28
- - Translate resolved model aliases before Codex subagent spawn:
29
- - `inherit` (opus tier) -> `gpt-5.3-codex` (`xhigh`)
30
- - `sonnet` -> `gpt-5.3-spark` (`xhigh`)
31
- - `haiku` -> `gpt-5.1-codex-mini` (`high`)
28
+ - GSD Codex agent roles route models per role via `.codex/agents/gsd-*.toml`:
29
+ - Opus-tier work uses `gpt-5.3-codex` (`xhigh` reasoning effort)
30
+ - Sonnet-tier work uses `gpt-5.3-spark` (`xhigh` reasoning effort)
31
+ - Haiku-tier work uses `gpt-5.1-codex-mini` (`high` reasoning effort)
32
32
 
33
- ## Subagent lifecycle (required)
34
- - Spawn only when the upstream workflow explicitly defines a `Task(...)` role.
35
- - For each spawned subagent:
36
- - Start with `spawn_agent` and provide the role source from `.claude/agents/gsd-*.md`.
37
- - Do not set `agent_type` to a GSD role. Codex only accepts `default`, `explorer`, or `worker` (or omit `agent_type`).
38
- - Wait for completion before proceeding: `wait`.
39
- - Explicitly close the agent after it finishes (`close_agent`) to release resources.
40
- - Keep prompt-level sequencing intact; do not continue to subsequent steps until waiting + closure are complete.
41
- - If an agent fails or exceeds retry policy, stop that phase of workflow and surface a clear remediation step.
33
+ ## Subagent lifecycle (required)
34
+ - Spawn only when the upstream workflow explicitly defines a `Task(...)` role.
35
+ - For each spawned subagent:
36
+ - Start with `spawn_agent` and provide the role source from `.claude/agents/gsd-*.md`.
37
+ - Set `agent_type` to the matching GSD role name (for example: `gsd-planner`, `gsd-executor`).
38
+ - These roles are registered under `[agents.*]` in `.codex/config.toml` and map to per-role Codex model settings via `.codex/agents/*.toml`.
39
+ - Wait for completion before proceeding: `wait`.
40
+ - Explicitly close the agent after it finishes (`close_agent`) to release resources.
41
+ - Keep prompt-level sequencing intact; do not continue to subsequent steps until waiting + closure are complete.
42
+ - If an agent fails or exceeds retry policy, stop that phase of workflow and surface a clear remediation step.
42
43
 
43
44
  ## Required GSD roles (must map by name)
44
45
  - `gsd-project-researcher`
@@ -19,8 +19,10 @@
19
19
  ## Subagent mapping
20
20
  - `subagent_type=gsd-*` maps to equivalent role contract in `.claude/agents/gsd-*.md`.
21
21
  - Unspecified `subagent_type` values default to command-context Codex agent behavior.
22
- - Do not pass `agent_type=gsd-*` to `spawn_agent`. Codex only accepts `default`, `explorer`, or `worker` (or omit `agent_type`).
23
- - Translate GSD model aliases to Codex models when spawning:
22
+ - Pass `agent_type=gsd-*` to `spawn_agent` so Codex can apply the matching role config.
23
+ - GSD Codex roles are declared under `[agents.gsd-*]` in `.codex/config.toml`.
24
+ - Each role points to a role config layer in `.codex/agents/gsd-*.toml` (used to route models and other Codex settings per role).
25
+ - GSD model alias mapping (implemented by the default role config layers):
24
26
  - `inherit` (opus tier) -> `gpt-5.3-codex` with `xhigh` reasoning effort
25
27
  - `sonnet` -> `gpt-5.3-spark` with `xhigh` reasoning effort
26
28
  - `haiku` -> `gpt-5.1-codex-mini` with `high` reasoning effort
package/README.md CHANGED
@@ -22,15 +22,18 @@ You can combine both:
22
22
  npx gsd-codex-cli@latest --path . --global
23
23
  ```
24
24
 
25
- ## What Gets Installed
26
-
27
- The installer copies these directories into the target location:
28
-
29
- - `.codex/prompts` and `.codex/skills` for Codex commands
30
- - `.claude/get-shit-done` for workflow references
31
- - `.claude/agents` for agent definitions
32
-
33
- This fork is Codex-first, but the Claude assets are kept alongside for compatibility with the upstream workflow files.
25
+ ## What Gets Installed
26
+
27
+ The installer copies these directories into the target location:
28
+
29
+ - `.codex/prompts` and `.codex/skills` for Codex commands
30
+ - `.codex/agents` for Codex agent roles (model routing)
31
+ - `.claude/get-shit-done` for workflow references
32
+ - `.claude/agents` for agent definitions
33
+
34
+ This fork is Codex-first, but the Claude assets are kept alongside for compatibility with the upstream workflow files.
35
+
36
+ The installer also registers GSD agent roles under `[agents.gsd-*]` in your Codex config (`.codex/config.toml` for local installs and `~/.codex/config.toml` for global installs). It only appends missing sections.
34
37
 
35
38
  ## Using the Prompts
36
39
 
@@ -4,13 +4,27 @@ const fs = require('fs');
4
4
  const path = require('path');
5
5
  const os = require('os');
6
6
 
7
- const args = process.argv.slice(2);
8
- const pkg = require('../package.json');
9
- const repoRoot = path.resolve(__dirname, '..');
10
-
11
- const helpText = `
12
- ${pkg.name} v${pkg.version}
13
-
7
+ const args = process.argv.slice(2);
8
+ const pkg = require('../package.json');
9
+ const repoRoot = path.resolve(__dirname, '..');
10
+
11
+ const GSD_AGENT_ROLES = [
12
+ { name: 'gsd-project-researcher', description: 'GSD role: project researcher.' },
13
+ { name: 'gsd-research-synthesizer', description: 'GSD role: research synthesizer.' },
14
+ { name: 'gsd-roadmapper', description: 'GSD role: roadmap planning.' },
15
+ { name: 'gsd-phase-researcher', description: 'GSD role: phase research.' },
16
+ { name: 'gsd-planner', description: 'GSD role: phase planning.' },
17
+ { name: 'gsd-plan-checker', description: 'GSD role: plan verification.' },
18
+ { name: 'gsd-executor', description: 'GSD role: plan execution.' },
19
+ { name: 'gsd-verifier', description: 'GSD role: execution verification.' },
20
+ { name: 'gsd-debugger', description: 'GSD role: debugging.' },
21
+ { name: 'gsd-integration-checker', description: 'GSD role: integration verification.' },
22
+ { name: 'gsd-codebase-mapper', description: 'GSD role: codebase mapping.' },
23
+ ];
24
+
25
+ const helpText = `
26
+ ${pkg.name} v${pkg.version}
27
+
14
28
  Usage:
15
29
  ${pkg.name} [--path <target-dir>] [--global] [--help]
16
30
 
@@ -53,11 +67,47 @@ function copyRecursive(source, destination) {
53
67
  function ensureDir(dirPath) {
54
68
  fs.mkdirSync(dirPath, { recursive: true });
55
69
  }
56
-
57
- function resolveSourceDir(repoRelative, fallbackRelative) {
58
- const primary = path.join(repoRoot, repoRelative);
59
- const fallback = fallbackRelative ? path.join(repoRoot, fallbackRelative) : null;
60
-
70
+
71
+ function escapeRegExp(value) {
72
+ // Escape special regex characters.
73
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
74
+ }
75
+
76
+ function ensureCodexConfigHasGsdAgentRoles(codexDir) {
77
+ const configPath = path.join(codexDir, 'config.toml');
78
+ const existing = fs.existsSync(configPath) ? fs.readFileSync(configPath, 'utf8') : '';
79
+ const eol = existing.includes('\r\n') ? '\r\n' : '\n';
80
+
81
+ const blocks = [];
82
+ for (const role of GSD_AGENT_ROLES) {
83
+ const header = `[agents.${role.name}]`;
84
+ const headerRegex = new RegExp(`^\\s*\\[agents\\.${escapeRegExp(role.name)}\\]\\s*$`, 'm');
85
+ if (headerRegex.test(existing)) continue;
86
+
87
+ blocks.push([
88
+ header,
89
+ `description = "${role.description}"`,
90
+ `config_file = "./agents/${role.name}.toml"`,
91
+ ].join(eol));
92
+ }
93
+
94
+ if (blocks.length === 0) {
95
+ return { changed: false, added_roles: [] };
96
+ }
97
+
98
+ let next = existing;
99
+ if (next.length > 0 && !next.endsWith(eol)) next += eol;
100
+ if (next.length > 0 && !next.endsWith(eol + eol)) next += eol;
101
+ next += blocks.join(eol + eol) + eol;
102
+
103
+ fs.writeFileSync(configPath, next, 'utf8');
104
+ return { changed: true, added_roles: blocks.map(b => b.split(eol, 1)[0]) };
105
+ }
106
+
107
+ function resolveSourceDir(repoRelative, fallbackRelative) {
108
+ const primary = path.join(repoRoot, repoRelative);
109
+ const fallback = fallbackRelative ? path.join(repoRoot, fallbackRelative) : null;
110
+
61
111
  if (fs.existsSync(primary)) return primary;
62
112
  if (fallback && fs.existsSync(fallback)) return fallback;
63
113
 
@@ -65,10 +115,10 @@ function resolveSourceDir(repoRelative, fallbackRelative) {
65
115
  throw new Error(`Missing source directory "${repoRelative}"${fallbackMessage} in repository root ${repoRoot}`);
66
116
  }
67
117
 
68
- function copyCodexToDirectory(baseDir) {
69
- const targetCodex = path.join(baseDir, '.codex');
70
- const targetClaude = path.join(baseDir, '.claude');
71
- const sourceCodex = path.join(repoRoot, '.codex');
118
+ function copyCodexToDirectory(baseDir) {
119
+ const targetCodex = path.join(baseDir, '.codex');
120
+ const targetClaude = path.join(baseDir, '.claude');
121
+ const sourceCodex = path.join(repoRoot, '.codex');
72
122
  const sourceGetShitDone = resolveSourceDir('get-shit-done', '.claude/get-shit-done');
73
123
  const sourceAgents = resolveSourceDir('agents', '.claude/agents');
74
124
  const versionDest = path.join(targetClaude, 'get-shit-done', 'VERSION');
@@ -77,14 +127,15 @@ function copyCodexToDirectory(baseDir) {
77
127
  ensureDir(baseDir);
78
128
  ensureDir(targetCodex);
79
129
  ensureDir(targetClaude);
80
-
81
- copyRecursive(sourceCodex, targetCodex);
82
- copyRecursive(sourceGetShitDone, path.join(targetClaude, 'get-shit-done'));
83
- copyRecursive(sourceAgents, path.join(targetClaude, 'agents'));
84
- ensureDir(path.dirname(versionDest));
85
- fs.writeFileSync(versionDest, `${pkg.version}\n`);
86
- ensureDir(path.dirname(codexVersionDest));
87
- fs.writeFileSync(codexVersionDest, `${pkg.version}\n`);
130
+
131
+ copyRecursive(sourceCodex, targetCodex);
132
+ copyRecursive(sourceGetShitDone, path.join(targetClaude, 'get-shit-done'));
133
+ copyRecursive(sourceAgents, path.join(targetClaude, 'agents'));
134
+ ensureCodexConfigHasGsdAgentRoles(targetCodex);
135
+ ensureDir(path.dirname(versionDest));
136
+ fs.writeFileSync(versionDest, `${pkg.version}\n`);
137
+ ensureDir(path.dirname(codexVersionDest));
138
+ fs.writeFileSync(codexVersionDest, `${pkg.version}\n`);
88
139
  }
89
140
 
90
141
  async function main() {
package/package.json CHANGED
@@ -1,25 +1,26 @@
1
1
  {
2
- "name": "gsd-codex-cli",
3
- "version": "1.20.12",
2
+ "name": "gsd-codex-cli",
3
+ "version": "1.20.13",
4
4
  "description": "Codex-native package for the get-shit-done workflow with native subagent orchestration.",
5
5
  "bin": {
6
6
  "gsd-codex-cli": "bin/install-codex.js",
7
7
  "get-shit-done-codex": "bin/install-codex.js",
8
8
  "get-shit-done-cc": "bin/install.js"
9
9
  },
10
- "files": [
11
- "bin",
12
- ".codex",
13
- "commands",
14
- "get-shit-done",
15
- "agents",
16
- "hooks/dist",
17
- "scripts",
18
- "README.md",
19
- "LICENSE",
20
- "CHANGELOG.md",
21
- "!**/*.bak"
22
- ],
10
+ "files": [
11
+ "bin",
12
+ ".codex",
13
+ "commands",
14
+ "get-shit-done",
15
+ "agents",
16
+ "hooks/dist",
17
+ "scripts",
18
+ "README.md",
19
+ "LICENSE",
20
+ "CHANGELOG.md",
21
+ "!**/*.bak",
22
+ "!.codex/gsd/**"
23
+ ],
23
24
  "keywords": [
24
25
  "codex",
25
26
  "claude",