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.
- package/.codex/agents/gsd-codebase-mapper.toml +2 -0
- package/.codex/agents/gsd-debugger.toml +2 -0
- package/.codex/agents/gsd-executor.toml +2 -0
- package/.codex/agents/gsd-integration-checker.toml +2 -0
- package/.codex/agents/gsd-phase-researcher.toml +2 -0
- package/.codex/agents/gsd-plan-checker.toml +2 -0
- package/.codex/agents/gsd-planner.toml +2 -0
- package/.codex/agents/gsd-project-researcher.toml +2 -0
- package/.codex/agents/gsd-research-synthesizer.toml +2 -0
- package/.codex/agents/gsd-roadmapper.toml +2 -0
- package/.codex/agents/gsd-verifier.toml +2 -0
- package/.codex/prompts/gsd-add-phase.md +1 -0
- package/.codex/prompts/gsd-add-todo.md +1 -0
- package/.codex/prompts/gsd-audit-milestone.md +1 -0
- package/.codex/prompts/gsd-check-todos.md +1 -0
- package/.codex/prompts/gsd-complete-milestone.md +1 -0
- package/.codex/prompts/gsd-debug.md +1 -0
- package/.codex/prompts/gsd-discuss-phase.md +1 -0
- package/.codex/prompts/gsd-doctor.md +14 -6
- package/.codex/prompts/gsd-execute-phase.md +1 -0
- package/.codex/prompts/gsd-help.md +1 -0
- package/.codex/prompts/gsd-insert-phase.md +1 -0
- package/.codex/prompts/gsd-list-phase-assumptions.md +1 -0
- package/.codex/prompts/gsd-map-codebase.md +1 -0
- package/.codex/prompts/gsd-new-milestone.md +1 -0
- package/.codex/prompts/gsd-new-project.md +1 -0
- package/.codex/prompts/gsd-pause-work.md +1 -0
- package/.codex/prompts/gsd-plan-milestone-gaps.md +1 -0
- package/.codex/prompts/gsd-plan-phase.md +1 -0
- package/.codex/prompts/gsd-progress.md +1 -0
- package/.codex/prompts/gsd-quick.md +1 -0
- package/.codex/prompts/gsd-remove-phase.md +1 -0
- package/.codex/prompts/gsd-research-phase.md +1 -0
- package/.codex/prompts/gsd-resume-work.md +1 -0
- package/.codex/prompts/gsd-set-profile.md +1 -0
- package/.codex/prompts/gsd-settings.md +1 -0
- package/.codex/prompts/gsd-update.md +1 -0
- package/.codex/prompts/gsd-verify-work.md +1 -0
- package/.codex/skills/get-shit-done-codex/SKILL.md +14 -13
- package/.codex/skills/get-shit-done-codex/references/compat.md +4 -2
- package/README.md +12 -9
- package/bin/install-codex.js +75 -24
- package/package.json +16 -15
|
@@ -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
|
-
###
|
|
32
|
-
-
|
|
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
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
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
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
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
|
-
-
|
|
23
|
-
-
|
|
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
|
-
- `.
|
|
31
|
-
- `.claude/
|
|
32
|
-
|
|
33
|
-
|
|
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
|
|
package/bin/install-codex.js
CHANGED
|
@@ -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
|
|
12
|
-
|
|
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
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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.
|
|
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",
|