gsd-opencode 1.22.1 → 1.33.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/agents/gsd-advisor-researcher.md +112 -0
- package/agents/gsd-assumptions-analyzer.md +110 -0
- package/agents/gsd-codebase-mapper.md +0 -2
- package/agents/gsd-debugger.md +117 -2
- package/agents/gsd-doc-verifier.md +207 -0
- package/agents/gsd-doc-writer.md +608 -0
- package/agents/gsd-executor.md +45 -4
- package/agents/gsd-integration-checker.md +0 -2
- package/agents/gsd-nyquist-auditor.md +0 -2
- package/agents/gsd-phase-researcher.md +191 -5
- package/agents/gsd-plan-checker.md +152 -5
- package/agents/gsd-planner.md +131 -157
- package/agents/gsd-project-researcher.md +28 -3
- package/agents/gsd-research-synthesizer.md +0 -2
- package/agents/gsd-roadmapper.md +29 -2
- package/agents/gsd-security-auditor.md +129 -0
- package/agents/gsd-ui-auditor.md +485 -0
- package/agents/gsd-ui-checker.md +305 -0
- package/agents/gsd-ui-researcher.md +368 -0
- package/agents/gsd-user-profiler.md +173 -0
- package/agents/gsd-verifier.md +207 -22
- package/commands/gsd/gsd-add-backlog.md +76 -0
- package/commands/gsd/gsd-analyze-dependencies.md +34 -0
- package/commands/gsd/gsd-audit-uat.md +24 -0
- package/commands/gsd/gsd-autonomous.md +45 -0
- package/commands/gsd/gsd-cleanup.md +5 -0
- package/commands/gsd/gsd-debug.md +29 -21
- package/commands/gsd/gsd-discuss-phase.md +15 -36
- package/commands/gsd/gsd-do.md +30 -0
- package/commands/gsd/gsd-docs-update.md +48 -0
- package/commands/gsd/gsd-execute-phase.md +24 -2
- package/commands/gsd/gsd-fast.md +30 -0
- package/commands/gsd/gsd-forensics.md +56 -0
- package/commands/gsd/gsd-help.md +2 -0
- package/commands/gsd/gsd-join-discord.md +2 -1
- package/commands/gsd/gsd-list-workspaces.md +19 -0
- package/commands/gsd/gsd-manager.md +40 -0
- package/commands/gsd/gsd-milestone-summary.md +51 -0
- package/commands/gsd/gsd-new-project.md +4 -0
- package/commands/gsd/gsd-new-workspace.md +44 -0
- package/commands/gsd/gsd-next.md +24 -0
- package/commands/gsd/gsd-note.md +34 -0
- package/commands/gsd/gsd-plan-phase.md +8 -1
- package/commands/gsd/gsd-plant-seed.md +28 -0
- package/commands/gsd/gsd-pr-branch.md +25 -0
- package/commands/gsd/gsd-profile-user.md +46 -0
- package/commands/gsd/gsd-quick.md +7 -3
- package/commands/gsd/gsd-reapply-patches.md +178 -45
- package/commands/gsd/gsd-remove-workspace.md +26 -0
- package/commands/gsd/gsd-research-phase.md +7 -12
- package/commands/gsd/gsd-review-backlog.md +62 -0
- package/commands/gsd/gsd-review.md +38 -0
- package/commands/gsd/gsd-secure-phase.md +35 -0
- package/commands/gsd/gsd-session-report.md +19 -0
- package/commands/gsd/gsd-set-profile.md +24 -23
- package/commands/gsd/gsd-ship.md +23 -0
- package/commands/gsd/gsd-stats.md +18 -0
- package/commands/gsd/gsd-thread.md +127 -0
- package/commands/gsd/gsd-ui-phase.md +34 -0
- package/commands/gsd/gsd-ui-review.md +32 -0
- package/commands/gsd/gsd-workstreams.md +71 -0
- package/get-shit-done/bin/gsd-tools.cjs +450 -90
- package/get-shit-done/bin/lib/commands.cjs +489 -24
- package/get-shit-done/bin/lib/config.cjs +329 -48
- package/get-shit-done/bin/lib/core.cjs +1143 -102
- package/get-shit-done/bin/lib/docs.cjs +267 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +125 -43
- package/get-shit-done/bin/lib/init.cjs +918 -106
- package/get-shit-done/bin/lib/milestone.cjs +65 -33
- package/get-shit-done/bin/lib/model-profiles.cjs +70 -0
- package/get-shit-done/bin/lib/phase.cjs +434 -404
- package/get-shit-done/bin/lib/profile-output.cjs +1048 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/roadmap.cjs +156 -101
- package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
- package/get-shit-done/bin/lib/security.cjs +384 -0
- package/get-shit-done/bin/lib/state.cjs +711 -79
- package/get-shit-done/bin/lib/template.cjs +2 -2
- package/get-shit-done/bin/lib/uat.cjs +282 -0
- package/get-shit-done/bin/lib/verify.cjs +254 -42
- package/get-shit-done/bin/lib/workstream.cjs +495 -0
- package/get-shit-done/references/agent-contracts.md +79 -0
- package/get-shit-done/references/artifact-types.md +113 -0
- package/get-shit-done/references/checkpoints.md +12 -10
- package/get-shit-done/references/context-budget.md +49 -0
- package/get-shit-done/references/continuation-format.md +15 -15
- package/get-shit-done/references/decimal-phase-calculation.md +2 -3
- package/get-shit-done/references/domain-probes.md +125 -0
- package/get-shit-done/references/gate-prompts.md +100 -0
- package/get-shit-done/references/git-integration.md +47 -0
- package/get-shit-done/references/model-profile-resolution.md +2 -0
- package/get-shit-done/references/model-profiles.md +62 -16
- package/get-shit-done/references/phase-argument-parsing.md +2 -2
- package/get-shit-done/references/planner-gap-closure.md +62 -0
- package/get-shit-done/references/planner-reviews.md +39 -0
- package/get-shit-done/references/planner-revision.md +87 -0
- package/get-shit-done/references/planning-config.md +18 -1
- package/get-shit-done/references/revision-loop.md +97 -0
- package/get-shit-done/references/ui-brand.md +2 -2
- package/get-shit-done/references/universal-anti-patterns.md +58 -0
- package/get-shit-done/references/user-profiling.md +681 -0
- package/get-shit-done/references/workstream-flag.md +111 -0
- package/get-shit-done/templates/SECURITY.md +61 -0
- package/get-shit-done/templates/UAT.md +21 -3
- package/get-shit-done/templates/UI-SPEC.md +100 -0
- package/get-shit-done/templates/VALIDATION.md +3 -3
- package/get-shit-done/templates/claude-md.md +145 -0
- package/get-shit-done/templates/config.json +14 -3
- package/get-shit-done/templates/context.md +61 -6
- package/get-shit-done/templates/debug-subagent-prompt.md +2 -6
- package/get-shit-done/templates/dev-preferences.md +21 -0
- package/get-shit-done/templates/discussion-log.md +63 -0
- package/get-shit-done/templates/phase-prompt.md +46 -5
- package/get-shit-done/templates/planner-subagent-prompt.md +2 -10
- package/get-shit-done/templates/project.md +2 -0
- package/get-shit-done/templates/state.md +2 -2
- package/get-shit-done/templates/user-profile.md +146 -0
- package/get-shit-done/workflows/add-phase.md +4 -4
- package/get-shit-done/workflows/add-tests.md +4 -4
- package/get-shit-done/workflows/add-todo.md +4 -4
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-milestone.md +20 -16
- package/get-shit-done/workflows/audit-uat.md +109 -0
- package/get-shit-done/workflows/autonomous.md +1036 -0
- package/get-shit-done/workflows/check-todos.md +4 -4
- package/get-shit-done/workflows/cleanup.md +4 -4
- package/get-shit-done/workflows/complete-milestone.md +22 -10
- package/get-shit-done/workflows/diagnose-issues.md +21 -7
- package/get-shit-done/workflows/discovery-phase.md +2 -2
- package/get-shit-done/workflows/discuss-phase-assumptions.md +671 -0
- package/get-shit-done/workflows/discuss-phase-power.md +291 -0
- package/get-shit-done/workflows/discuss-phase.md +558 -47
- package/get-shit-done/workflows/do.md +104 -0
- package/get-shit-done/workflows/docs-update.md +1093 -0
- package/get-shit-done/workflows/execute-phase.md +741 -58
- package/get-shit-done/workflows/execute-plan.md +77 -12
- package/get-shit-done/workflows/fast.md +105 -0
- package/get-shit-done/workflows/forensics.md +265 -0
- package/get-shit-done/workflows/health.md +28 -6
- package/get-shit-done/workflows/help.md +127 -7
- package/get-shit-done/workflows/insert-phase.md +4 -4
- package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
- package/get-shit-done/workflows/list-workspaces.md +56 -0
- package/get-shit-done/workflows/manager.md +363 -0
- package/get-shit-done/workflows/map-codebase.md +83 -44
- package/get-shit-done/workflows/milestone-summary.md +223 -0
- package/get-shit-done/workflows/new-milestone.md +133 -25
- package/get-shit-done/workflows/new-project.md +216 -54
- package/get-shit-done/workflows/new-workspace.md +237 -0
- package/get-shit-done/workflows/next.md +97 -0
- package/get-shit-done/workflows/node-repair.md +92 -0
- package/get-shit-done/workflows/note.md +156 -0
- package/get-shit-done/workflows/pause-work.md +132 -15
- package/get-shit-done/workflows/plan-milestone-gaps.md +6 -7
- package/get-shit-done/workflows/plan-phase.md +513 -62
- package/get-shit-done/workflows/plant-seed.md +169 -0
- package/get-shit-done/workflows/pr-branch.md +129 -0
- package/get-shit-done/workflows/profile-user.md +450 -0
- package/get-shit-done/workflows/progress.md +154 -29
- package/get-shit-done/workflows/quick.md +285 -111
- package/get-shit-done/workflows/remove-phase.md +2 -2
- package/get-shit-done/workflows/remove-workspace.md +90 -0
- package/get-shit-done/workflows/research-phase.md +13 -9
- package/get-shit-done/workflows/resume-project.md +37 -18
- package/get-shit-done/workflows/review.md +281 -0
- package/get-shit-done/workflows/secure-phase.md +154 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/set-profile.md +2 -2
- package/get-shit-done/workflows/settings.md +91 -11
- package/get-shit-done/workflows/ship.md +237 -0
- package/get-shit-done/workflows/stats.md +60 -0
- package/get-shit-done/workflows/transition.md +150 -23
- package/get-shit-done/workflows/ui-phase.md +292 -0
- package/get-shit-done/workflows/ui-review.md +183 -0
- package/get-shit-done/workflows/update.md +262 -30
- package/get-shit-done/workflows/validate-phase.md +14 -17
- package/get-shit-done/workflows/verify-phase.md +143 -11
- package/get-shit-done/workflows/verify-work.md +141 -39
- package/package.json +1 -1
- package/skills/gsd-audit-milestone/SKILL.md +29 -0
- package/skills/gsd-cleanup/SKILL.md +19 -0
- package/skills/gsd-complete-milestone/SKILL.md +131 -0
- package/skills/gsd-discuss-phase/SKILL.md +54 -0
- package/skills/gsd-execute-phase/SKILL.md +49 -0
- package/skills/gsd-plan-phase/SKILL.md +37 -0
- package/skills/gsd-ui-phase/SKILL.md +24 -0
- package/skills/gsd-ui-review/SKILL.md +24 -0
- package/skills/gsd-verify-work/SKILL.md +30 -0
|
@@ -50,7 +50,7 @@ Plans execute autonomously. Checkpoints formalize interaction points where human
|
|
|
50
50
|
<task type="auto">
|
|
51
51
|
<name>Start dev server for verification</name>
|
|
52
52
|
<action>Run `npm run dev` in background, wait for "ready" message, capture port</action>
|
|
53
|
-
<verify>
|
|
53
|
+
<verify>fetch http://localhost:3000 returns 200</verify>
|
|
54
54
|
<done>Dev server running at http://localhost:3000</done>
|
|
55
55
|
</task>
|
|
56
56
|
|
|
@@ -240,7 +240,7 @@ Plans execute autonomously. Checkpoints formalize interaction points where human
|
|
|
240
240
|
<name>Deploy to Vercel</name>
|
|
241
241
|
<files>.vercel/, vercel.json</files>
|
|
242
242
|
<action>Run `vercel --yes` to deploy</action>
|
|
243
|
-
<verify>vercel ls shows deployment,
|
|
243
|
+
<verify>vercel ls shows deployment, fetch returns 200</verify>
|
|
244
244
|
</task>
|
|
245
245
|
|
|
246
246
|
<!-- If vercel returns "Error: Not authenticated", OpenCode creates checkpoint on the fly -->
|
|
@@ -261,7 +261,7 @@ Plans execute autonomously. Checkpoints formalize interaction points where human
|
|
|
261
261
|
<task type="auto">
|
|
262
262
|
<name>Retry Vercel deployment</name>
|
|
263
263
|
<action>Run `vercel --yes` (now authenticated)</action>
|
|
264
|
-
<verify>vercel ls shows deployment,
|
|
264
|
+
<verify>vercel ls shows deployment, fetch returns 200</verify>
|
|
265
265
|
</task>
|
|
266
266
|
```
|
|
267
267
|
|
|
@@ -455,8 +455,8 @@ I'll verify: vercel whoami returns your account
|
|
|
455
455
|
npm run dev &
|
|
456
456
|
DEV_SERVER_PID=$!
|
|
457
457
|
|
|
458
|
-
# Wait for ready (max 30s)
|
|
459
|
-
timeout 30 bash -c 'until
|
|
458
|
+
# Wait for ready (max 30s) — uses fetch() for cross-platform compatibility
|
|
459
|
+
timeout 30 bash -c 'until node -e "fetch(\"http://localhost:3000\").then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))" 2>/dev/null; do sleep 1; done'
|
|
460
460
|
```
|
|
461
461
|
|
|
462
462
|
**Port conflicts:** Kill stale process (`lsof -ti:3000 | xargs kill`) or use alternate port (`--port 3001`).
|
|
@@ -489,7 +489,9 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
|
|
|
489
489
|
| Auth error | Create auth gate checkpoint |
|
|
490
490
|
| Network timeout | Retry with backoff, then checkpoint if persistent |
|
|
491
491
|
|
|
492
|
-
**Never present a checkpoint with broken verification environment.** If
|
|
492
|
+
**Never present a checkpoint with broken verification environment.** If the local server isn't responding, don't ask user to "visit localhost:3000".
|
|
493
|
+
|
|
494
|
+
> **Cross-platform note:** Use `node -e "fetch('http://localhost:3000').then(r=>console.log(r.status))"` instead of `curl` for health checks. `curl` is broken on Windows MSYS/Git bash due to SSL/path mangling issues.
|
|
493
495
|
|
|
494
496
|
```xml
|
|
495
497
|
<!-- WRONG: Checkpoint with broken environment -->
|
|
@@ -502,7 +504,7 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
|
|
|
502
504
|
<task type="auto">
|
|
503
505
|
<name>Fix server startup issue</name>
|
|
504
506
|
<action>Investigate error, fix root cause, restart server</action>
|
|
505
|
-
<verify>
|
|
507
|
+
<verify>fetch http://localhost:3000 returns 200</verify>
|
|
506
508
|
</task>
|
|
507
509
|
|
|
508
510
|
<task type="checkpoint:human-verify">
|
|
@@ -608,7 +610,7 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
|
|
|
608
610
|
<task type="auto">
|
|
609
611
|
<name>Start dev server for auth testing</name>
|
|
610
612
|
<action>Run `npm run dev` in background, wait for ready signal</action>
|
|
611
|
-
<verify>
|
|
613
|
+
<verify>fetch http://localhost:3000 returns 200</verify>
|
|
612
614
|
<done>Dev server running at http://localhost:3000</done>
|
|
613
615
|
</task>
|
|
614
616
|
|
|
@@ -651,7 +653,7 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
|
|
|
651
653
|
<task type="auto">
|
|
652
654
|
<name>Start dev server</name>
|
|
653
655
|
<action>Run `npm run dev` in background</action>
|
|
654
|
-
<verify>
|
|
656
|
+
<verify>fetch http://localhost:3000 returns 200</verify>
|
|
655
657
|
</task>
|
|
656
658
|
|
|
657
659
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
@@ -677,7 +679,7 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
|
|
|
677
679
|
<task type="auto">
|
|
678
680
|
<name>Deploy to Vercel</name>
|
|
679
681
|
<action>Run `vercel --yes`. Capture URL.</action>
|
|
680
|
-
<verify>vercel ls shows deployment,
|
|
682
|
+
<verify>vercel ls shows deployment, fetch returns 200</verify>
|
|
681
683
|
</task>
|
|
682
684
|
|
|
683
685
|
<task type="checkpoint:human-verify">
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Context Budget Rules
|
|
2
|
+
|
|
3
|
+
Standard rules for keeping orchestrator context lean. Reference this in workflows that spawn subagents or read significant content.
|
|
4
|
+
|
|
5
|
+
See also: `references/universal-anti-patterns.md` for the complete set of universal rules.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Universal Rules
|
|
10
|
+
|
|
11
|
+
Every workflow that spawns agents or reads significant content must follow these rules:
|
|
12
|
+
|
|
13
|
+
1. **Never** read agent definition files (`agents/*.md`) -- `subagent_type` auto-loads them
|
|
14
|
+
2. **Never** inline large files into subagent prompts -- tell agents to read files from disk instead
|
|
15
|
+
3. **read depth scales with context window** -- check `context_window_tokens` in `.planning/config.json`:
|
|
16
|
+
- At < 500000 tokens (default 200k): read only frontmatter, status fields, or summaries. Never read full SUMMARY.md, VERIFICATION.md, or RESEARCH.md bodies.
|
|
17
|
+
- At >= 500000 tokens (1M model): MAY read full subagent output bodies when the content is needed for inline presentation or decision-making. Still avoid unnecessary reads.
|
|
18
|
+
4. **Delegate** heavy work to subagents -- the orchestrator routes, it doesn't execute
|
|
19
|
+
5. **Proactive warning**: If you've already consumed significant context (large file reads, multiple subagent results), warn the user: "Context budget is getting heavy. Consider checkpointing progress."
|
|
20
|
+
|
|
21
|
+
## read Depth by Context Window
|
|
22
|
+
|
|
23
|
+
| Context Window | Subagent Output Reading | SUMMARY.md | VERIFICATION.md | PLAN.md (other phases) |
|
|
24
|
+
|---------------|------------------------|------------|-----------------|------------------------|
|
|
25
|
+
| < 500k (200k model) | Frontmatter only | Frontmatter only | Frontmatter only | Current phase only |
|
|
26
|
+
| >= 500k (1M model) | Full body permitted | Full body permitted | Full body permitted | Current phase only |
|
|
27
|
+
|
|
28
|
+
**How to check:** read `.planning/config.json` and inspect `context_window_tokens`. If the field is absent, treat as 200k (conservative default).
|
|
29
|
+
|
|
30
|
+
## Context Degradation Tiers
|
|
31
|
+
|
|
32
|
+
Monitor context usage and adjust behavior accordingly:
|
|
33
|
+
|
|
34
|
+
| Tier | Usage | Behavior |
|
|
35
|
+
|------|-------|----------|
|
|
36
|
+
| PEAK | 0-30% | Full operations. read bodies, spawn multiple agents, inline results. |
|
|
37
|
+
| GOOD | 30-50% | Normal operations. Prefer frontmatter reads, delegate aggressively. |
|
|
38
|
+
| DEGRADING | 50-70% | Economize. Frontmatter-only reads, minimal inlining, warn user about budget. |
|
|
39
|
+
| POOR | 70%+ | Emergency mode. Checkpoint progress immediately. No new reads unless critical. |
|
|
40
|
+
|
|
41
|
+
## Context Degradation Warning Signs
|
|
42
|
+
|
|
43
|
+
Quality degrades gradually before panic thresholds fire. Watch for these early signals:
|
|
44
|
+
|
|
45
|
+
- **Silent partial completion** -- agent claims task is done but implementation is incomplete. Self-check catches file existence but not semantic completeness. Always verify agent output meets the plan's must_haves, not just that files exist.
|
|
46
|
+
- **Increasing vagueness** -- agent starts using phrases like "appropriate handling" or "standard patterns" instead of specific code. This indicates context pressure even before budget warnings fire.
|
|
47
|
+
- **Skipped steps** -- agent omits protocol steps it would normally follow. If an agent's success criteria has 8 items but it only reports 5, suspect context pressure.
|
|
48
|
+
|
|
49
|
+
When delegating to agents, the orchestrator cannot verify semantic correctness of agent output -- only structural completeness. This is a fundamental limitation. Mitigate with must_haves.truths and spot-check verification.
|
|
@@ -11,9 +11,9 @@ Standard format for presenting next steps after completing a command or workflow
|
|
|
11
11
|
|
|
12
12
|
**{identifier}: {name}** — {one-line description}
|
|
13
13
|
|
|
14
|
-
`
|
|
14
|
+
`/new` then:
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
`{command to copy-paste}`
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -29,7 +29,7 @@ Standard format for presenting next steps after completing a command or workflow
|
|
|
29
29
|
1. **Always show what it is** — name + description, never just a command path
|
|
30
30
|
2. **Pull context from source** — ROADMAP.md for phases, PLAN.md `<objective>` for plans
|
|
31
31
|
3. **Command in inline code** — backticks, easy to copy-paste, renders as clickable link
|
|
32
|
-
4. **`/new`
|
|
32
|
+
4. **`/new` first** — always show `/new` before the command so users run it in the correct order
|
|
33
33
|
5. **"Also available" not "Other options"** — sounds more app-like
|
|
34
34
|
6. **Visual separators** — `---` above and below to make it stand out
|
|
35
35
|
|
|
@@ -44,9 +44,9 @@ 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
|
+
`/new` then:
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
`/gsd-execute-phase 2`
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
@@ -69,9 +69,9 @@ 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
|
*Final plan in Phase 2*
|
|
71
71
|
|
|
72
|
-
`/
|
|
72
|
+
`/new` then:
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
`/gsd-execute-phase 2`
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
@@ -91,9 +91,9 @@ 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
|
+
`/new` then:
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
`/gsd-plan-phase 2`
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
@@ -120,9 +120,9 @@ Show completion status before next action:
|
|
|
120
120
|
|
|
121
121
|
**Phase 3: Core Features** — User dashboard, settings, and data export
|
|
122
122
|
|
|
123
|
-
`/
|
|
123
|
+
`/new` then:
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
`/gsd-plan-phase 3`
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
@@ -145,14 +145,14 @@ When there's no clear primary action:
|
|
|
145
145
|
|
|
146
146
|
**Phase 3: Core Features** — User dashboard, settings, and data export
|
|
147
147
|
|
|
148
|
+
`/new` then one of:
|
|
149
|
+
|
|
148
150
|
**To plan directly:** `/gsd-plan-phase 3`
|
|
149
151
|
|
|
150
152
|
**To discuss context first:** `/gsd-discuss-phase 3`
|
|
151
153
|
|
|
152
154
|
**To research unknowns:** `/gsd-research-phase 3`
|
|
153
155
|
|
|
154
|
-
*`/new` first → fresh context window*
|
|
155
|
-
|
|
156
156
|
---
|
|
157
157
|
```
|
|
158
158
|
|
|
@@ -169,9 +169,9 @@ All 4 phases shipped
|
|
|
169
169
|
|
|
170
170
|
**Start v1.1** — questioning → research → requirements → roadmap
|
|
171
171
|
|
|
172
|
-
`/
|
|
172
|
+
`/new` then:
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
`/gsd-new-milestone`
|
|
175
175
|
|
|
176
176
|
---
|
|
177
177
|
```
|
|
@@ -32,9 +32,8 @@ With existing decimals:
|
|
|
32
32
|
## Extract Values
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
BASE_PHASE=$(printf '%s\n' "$DECIMAL_INFO" | jq -r '.base_phase')
|
|
35
|
+
DECIMAL_PHASE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick next)
|
|
36
|
+
BASE_PHASE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick base_phase)
|
|
38
37
|
```
|
|
39
38
|
|
|
40
39
|
Or with --raw flag:
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Domain-Aware Probing Patterns
|
|
2
|
+
|
|
3
|
+
Shared reference for `/gsd-begin`, `/gsd-discuss-phase`, and domain exploration workflows.
|
|
4
|
+
|
|
5
|
+
When the user mentions a technology area, use these probes to ask insightful follow-up questions. Don't run through them as a checklist -- pick the 2-3 most relevant based on context. The goal is to surface hidden assumptions and trade-offs the user may not have considered yet.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Authentication
|
|
10
|
+
|
|
11
|
+
| User mentions | Agent probes with domain knowledge |
|
|
12
|
+
|---|---|
|
|
13
|
+
| "login" or "auth" | OAuth (which providers?), JWT, or session-based? Do you need social login or just email/password? |
|
|
14
|
+
| "users" or "accounts" | MFA required? Password reset flow? Email verification? |
|
|
15
|
+
| "sessions" | Session duration and refresh strategy? Server-side sessions or stateless tokens? |
|
|
16
|
+
| "roles" or "permissions" | RBAC, ABAC, or simple role checks? How many distinct roles? |
|
|
17
|
+
| "API keys" | Key rotation strategy? Scoped permissions per key? Rate limiting per key? |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Real-Time Updates
|
|
22
|
+
|
|
23
|
+
| User mentions | Agent probes with domain knowledge |
|
|
24
|
+
|---|---|
|
|
25
|
+
| "real-time" or "live updates" | WebSockets, SSE, or polling? What specifically needs to be real-time vs. eventual? |
|
|
26
|
+
| "notifications" | Push notifications (browser/mobile), in-app only, or both? Persistence and read receipts? |
|
|
27
|
+
| "collaboration" or "multiplayer" | Conflict resolution strategy? Operational transforms or CRDTs? Expected concurrent users? |
|
|
28
|
+
| "chat" or "messaging" | Message history and search? Typing indicators? read receipts? |
|
|
29
|
+
| "streaming" | Reconnection strategy? What happens when the connection drops -- queue or discard? |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Dashboard
|
|
34
|
+
|
|
35
|
+
| User mentions | Agent probes with domain knowledge |
|
|
36
|
+
|---|---|
|
|
37
|
+
| "dashboard" | What data sources feed it? How many distinct views? |
|
|
38
|
+
| "charts" or "graphs" | Interactive or static? Drill-down capability? Export to CSV/PDF? |
|
|
39
|
+
| "metrics" or "KPIs" | Refresh strategy -- real-time, periodic polling, or on-demand? Acceptable staleness? |
|
|
40
|
+
| "admin panel" | Role-based visibility? Which actions beyond viewing (edit, delete, approve)? |
|
|
41
|
+
| "mobile" or "responsive" | Simplified mobile view or full parity? Touch interactions for charts? |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## API Design
|
|
46
|
+
|
|
47
|
+
| User mentions | Agent probes with domain knowledge |
|
|
48
|
+
|---|---|
|
|
49
|
+
| "API" | REST, GraphQL, or RPC-style? Internal only or public-facing? |
|
|
50
|
+
| "endpoints" or "routes" | Versioning strategy (URL path, header, query param)? Breaking change policy? |
|
|
51
|
+
| "pagination" | Cursor-based or offset? Expected result set sizes? Stable ordering guarantee? |
|
|
52
|
+
| "rate limiting" | Per-user, per-IP, or per-API-key? Burst allowance? How to communicate limits to clients? |
|
|
53
|
+
| "errors" | Structured error format? Error codes vs. messages? How much detail in production errors? |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Database
|
|
58
|
+
|
|
59
|
+
| User mentions | Agent probes with domain knowledge |
|
|
60
|
+
|---|---|
|
|
61
|
+
| "database" or "storage" | SQL or NoSQL? What drives the choice -- relational integrity, flexibility, scale? |
|
|
62
|
+
| "ORM" or "queries" | ORM (which one?) or raw queries? Query builder as middle ground? |
|
|
63
|
+
| "migrations" | Migration tool? Rollback strategy? How do you handle data migrations vs. schema migrations? |
|
|
64
|
+
| "seeding" or "test data" | Seed data for development? Realistic fake data or minimal fixtures? |
|
|
65
|
+
| "scale" or "performance" | read/write ratio? read replicas? Connection pooling strategy? |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Search
|
|
70
|
+
|
|
71
|
+
| User mentions | Agent probes with domain knowledge |
|
|
72
|
+
|---|---|
|
|
73
|
+
| "search" | Full-text or exact match? Dedicated search engine (Elasticsearch, Meilisearch) or database-level? |
|
|
74
|
+
| "filtering" or "facets" | Faceted filtering? How many filter dimensions? Combined filters (AND/OR)? |
|
|
75
|
+
| "autocomplete" or "typeahead" | Debounce strategy? Minimum character threshold? Result ranking? |
|
|
76
|
+
| "indexing" | Index size and update frequency? Real-time indexing or batch? Acceptable index lag? |
|
|
77
|
+
| "fuzzy" or "typo tolerance" | Fuzzy matching? Synonym support? Language-specific stemming? |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## File Upload/Storage
|
|
82
|
+
|
|
83
|
+
| User mentions | Agent probes with domain knowledge |
|
|
84
|
+
|---|---|
|
|
85
|
+
| "upload" or "file upload" | Local filesystem or cloud (S3, GCS, Azure Blob)? Direct upload or through server? |
|
|
86
|
+
| "images" or "media" | Processing pipeline -- resize, compress, thumbnail generation? Format conversion? |
|
|
87
|
+
| "size limits" | Max file size? Max total storage per user? What happens when limits are hit? |
|
|
88
|
+
| "CDN" | CDN for delivery? Cache invalidation for updated files? Signed URLs for access control? |
|
|
89
|
+
| "documents" or "attachments" | Virus scanning? Preview generation? Versioning of uploaded files? |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Caching
|
|
94
|
+
|
|
95
|
+
| User mentions | Agent probes with domain knowledge |
|
|
96
|
+
|---|---|
|
|
97
|
+
| "caching" or "performance" | Where to cache -- browser, CDN, application layer, database query cache? |
|
|
98
|
+
| "invalidation" | Invalidation strategy -- TTL, event-driven, or manual? Cache-aside vs. write-through? |
|
|
99
|
+
| "stale data" | Acceptable staleness window? Stale-while-revalidate pattern? |
|
|
100
|
+
| "Redis" or "Memcached" | Cache topology -- single node or clustered? Persistence needed or pure cache? |
|
|
101
|
+
| "CDN" or "edge" | Edge caching for static assets? Dynamic content at the edge? Cache key strategy? |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Testing
|
|
106
|
+
|
|
107
|
+
| User mentions | Agent probes with domain knowledge |
|
|
108
|
+
|---|---|
|
|
109
|
+
| "testing" or "tests" | Unit, integration, and E2E balance? Where do you invest most testing effort? |
|
|
110
|
+
| "mocking" or "stubs" | Mock external services or use test containers? Database mocking strategy? |
|
|
111
|
+
| "CI" or "pipeline" | Tests in CI? Parallel test execution? Test-on-PR or test-on-push? |
|
|
112
|
+
| "coverage" | Coverage targets? Coverage as gate or advisory? Which metrics (line, branch, function)? |
|
|
113
|
+
| "E2E" or "browser testing" | Playwright, Cypress, or other? Headed vs. headless? Visual regression testing? |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Deployment
|
|
118
|
+
|
|
119
|
+
| User mentions | Agent probes with domain knowledge |
|
|
120
|
+
|---|---|
|
|
121
|
+
| "deploy" or "hosting" | Container, serverless, or traditional VM/VPS? Managed platform (Vercel, Railway) or self-hosted? |
|
|
122
|
+
| "CI/CD" or "pipeline" | GitHub Actions, GitLab CI, or other? Deploy on merge to main or manual trigger? |
|
|
123
|
+
| "environments" | How many environments (dev, staging, prod)? Environment parity strategy? |
|
|
124
|
+
| "rollback" | Rollback strategy? Blue-green, canary, or instant rollback? Database rollback considerations? |
|
|
125
|
+
| "secrets" or "config" | Secret management -- env vars, vault, or platform-native? Per-environment config strategy? |
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Gate Prompt Patterns
|
|
2
|
+
|
|
3
|
+
Reusable prompt patterns for structured gate checks in workflows and agents.
|
|
4
|
+
|
|
5
|
+
**For checkpoint box format details, see `references/ui-brand.md`** -- checkpoint boxes use double-line border drawing with 62-character inner width.
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
|
|
9
|
+
- `header` must be max 12 characters
|
|
10
|
+
- `multiSelect` is always `false` for gate checks
|
|
11
|
+
- Always handle the "Other" case (user typed a freeform response instead of selecting)
|
|
12
|
+
- Max 4 options per prompt -- if more are needed, use a 2-step flow
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Pattern: approve-revise-abort
|
|
17
|
+
3-option gate for plan approval, gap-closure approval.
|
|
18
|
+
- question: "Approve these {noun}?"
|
|
19
|
+
- header: "Approve?"
|
|
20
|
+
- options: Approve | Request changes | Abort
|
|
21
|
+
|
|
22
|
+
## Pattern: yes-no
|
|
23
|
+
Simple 2-option confirmation for re-planning, rebuild, replace plans, commit.
|
|
24
|
+
- question: "{Specific question about the action}"
|
|
25
|
+
- header: "Confirm"
|
|
26
|
+
- options: Yes | No
|
|
27
|
+
|
|
28
|
+
## Pattern: stale-continue
|
|
29
|
+
2-option refresh gate for staleness warnings, timestamp freshness.
|
|
30
|
+
- question: "{Artifact} may be outdated. Refresh or continue?"
|
|
31
|
+
- header: "Stale"
|
|
32
|
+
- options: Refresh | Continue anyway
|
|
33
|
+
|
|
34
|
+
## Pattern: yes-no-pick
|
|
35
|
+
3-option selection for seed selection, item inclusion.
|
|
36
|
+
- question: "Include {items} in planning?"
|
|
37
|
+
- header: "Include?"
|
|
38
|
+
- options: Yes, all | Let me pick | No
|
|
39
|
+
|
|
40
|
+
## Pattern: multi-option-failure
|
|
41
|
+
4-option failure handler for build failures.
|
|
42
|
+
- question: "Plan {id} failed. How should we proceed?"
|
|
43
|
+
- header: "Failed"
|
|
44
|
+
- options: Retry | Skip | Rollback | Abort
|
|
45
|
+
|
|
46
|
+
## Pattern: multi-option-escalation
|
|
47
|
+
4-option escalation for review escalation (max retries exceeded).
|
|
48
|
+
- question: "Phase {N} has failed verification {attempt} times. How should we proceed?"
|
|
49
|
+
- header: "Escalate"
|
|
50
|
+
- options: Accept gaps | Re-plan (via /gsd-plan-phase) | Debug (via /gsd-debug) | Retry
|
|
51
|
+
|
|
52
|
+
## Pattern: multi-option-gaps
|
|
53
|
+
4-option gap handler for review gaps-found.
|
|
54
|
+
- question: "{count} verification gaps need attention. How should we proceed?"
|
|
55
|
+
- header: "Gaps"
|
|
56
|
+
- options: Auto-fix | Override | Manual | Skip
|
|
57
|
+
|
|
58
|
+
## Pattern: multi-option-priority
|
|
59
|
+
4-option priority selection for milestone gap priority.
|
|
60
|
+
- question: "Which gaps should we address?"
|
|
61
|
+
- header: "Priority"
|
|
62
|
+
- options: Must-fix only | Must + should | Everything | Let me pick
|
|
63
|
+
|
|
64
|
+
## Pattern: toggle-confirm
|
|
65
|
+
2-option confirmation for enabling/disabling boolean features.
|
|
66
|
+
- question: "Enable {feature_name}?"
|
|
67
|
+
- header: "Toggle"
|
|
68
|
+
- options: Enable | Disable
|
|
69
|
+
|
|
70
|
+
## Pattern: action-routing
|
|
71
|
+
Up to 4 suggested next actions with selection (status, resume workflows).
|
|
72
|
+
- question: "What would you like to do next?"
|
|
73
|
+
- header: "Next Step"
|
|
74
|
+
- options: {primary action} | {alternative 1} | {alternative 2} | Something else
|
|
75
|
+
- Note: Dynamically generate options from workflow state. Always include "Something else" as last option.
|
|
76
|
+
|
|
77
|
+
## Pattern: scope-confirm
|
|
78
|
+
3-option confirmation for quick task scope validation.
|
|
79
|
+
- question: "This task looks complex. Proceed as quick task or use full planning?"
|
|
80
|
+
- header: "Scope"
|
|
81
|
+
- options: Quick task | Full plan (via /gsd-plan-phase) | Revise
|
|
82
|
+
|
|
83
|
+
## Pattern: depth-select
|
|
84
|
+
3-option depth selection for planning workflow preferences.
|
|
85
|
+
- question: "How thorough should planning be?"
|
|
86
|
+
- header: "Depth"
|
|
87
|
+
- options: Quick (3-5 phases, skip research) | Standard (5-8 phases, default) | Comprehensive (8-12 phases, deep research)
|
|
88
|
+
|
|
89
|
+
## Pattern: context-handling
|
|
90
|
+
3-option handler for existing CONTEXT.md in discuss workflow.
|
|
91
|
+
- question: "Phase {N} already has a CONTEXT.md. How should we handle it?"
|
|
92
|
+
- header: "Context"
|
|
93
|
+
- options: Overwrite | Append | Cancel
|
|
94
|
+
|
|
95
|
+
## Pattern: gray-area-option
|
|
96
|
+
Dynamic template for presenting gray area choices in discuss workflow.
|
|
97
|
+
- question: "{Gray area title}"
|
|
98
|
+
- header: "Decision"
|
|
99
|
+
- options: {Option 1} | {Option 2} | Let OpenCode decide
|
|
100
|
+
- Note: Options generated at runtime. Always include "Let OpenCode decide" as last option.
|
|
@@ -61,6 +61,10 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: init
|
|
|
61
61
|
|
|
62
62
|
Each task gets its own commit immediately after completion.
|
|
63
63
|
|
|
64
|
+
> **Parallel agents:** When running as a parallel executor (spawned by execute-phase),
|
|
65
|
+
> use `--no-verify` on all commits to avoid pre-commit hook lock contention.
|
|
66
|
+
> The orchestrator validates hooks once after all agents complete.
|
|
67
|
+
|
|
64
68
|
```
|
|
65
69
|
{type}({phase}-{plan}): {task-name}
|
|
66
70
|
|
|
@@ -246,3 +250,46 @@ Each plan produces 2-4 commits (tasks + metadata). Clear, granular, bisectable.
|
|
|
246
250
|
- "Commit noise" irrelevant when consumer is OpenCode, not humans
|
|
247
251
|
|
|
248
252
|
</commit_strategy_rationale>
|
|
253
|
+
|
|
254
|
+
<sub_repos_support>
|
|
255
|
+
|
|
256
|
+
## Multi-Repo Workspace Support (sub_repos)
|
|
257
|
+
|
|
258
|
+
For workspaces with separate git repos (e.g., `backend/`, `frontend/`, `shared/`), GSD routes commits to each repo independently.
|
|
259
|
+
|
|
260
|
+
### Configuration
|
|
261
|
+
|
|
262
|
+
In `.planning/config.json`, list sub-repo directories under `planning.sub_repos`:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"planning": {
|
|
267
|
+
"commit_docs": false,
|
|
268
|
+
"sub_repos": ["backend", "frontend", "shared"]
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Set `commit_docs: false` so planning docs stay local and are not committed to any sub-repo.
|
|
274
|
+
|
|
275
|
+
### How It Works
|
|
276
|
+
|
|
277
|
+
1. **Auto-detection:** During `/gsd-new-project`, directories with their own `.git` folder are detected and offered for selection as sub-repos. On subsequent runs, `loadConfig` auto-syncs the `sub_repos` list with the filesystem — adding newly created repos and removing deleted ones. This means `config.json` may be rewritten automatically when repos change on disk.
|
|
278
|
+
2. **File grouping:** Code files are grouped by their sub-repo prefix (e.g., `backend/src/api/users.ts` belongs to the `backend/` repo).
|
|
279
|
+
3. **Independent commits:** Each sub-repo receives its own atomic commit via `gsd-tools.cjs commit-to-subrepo`. File paths are made relative to the sub-repo root before staging.
|
|
280
|
+
4. **Planning stays local:** The `.planning/` directory is not committed; it acts as cross-repo coordination.
|
|
281
|
+
|
|
282
|
+
### Commit Routing
|
|
283
|
+
|
|
284
|
+
Instead of the standard `commit` command, use `commit-to-subrepo` when `sub_repos` is configured:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
node $HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit-to-subrepo "feat(02-01): add user API" \
|
|
288
|
+
--files backend/src/api/users.ts backend/src/types/user.ts frontend/src/components/UserForm.tsx
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
This stages `src/api/users.ts` and `src/types/user.ts` in the `backend/` repo, and `src/components/UserForm.tsx` in the `frontend/` repo, then commits each independently with the same message.
|
|
292
|
+
|
|
293
|
+
Files that don't match any configured sub-repo are reported as unmatched.
|
|
294
|
+
|
|
295
|
+
</sub_repos_support>
|
|
@@ -26,6 +26,8 @@ task(
|
|
|
26
26
|
|
|
27
27
|
**Note:** Opus-tier agents resolve to `"inherit"` (not `"opus"`). This causes the agent to use the parent session's model, avoiding conflicts with organization policies that may block specific opus versions.
|
|
28
28
|
|
|
29
|
+
If `model_profile` is `"inherit"`, all agents resolve to `"inherit"` (useful for OpenCode `/model`).
|
|
30
|
+
|
|
29
31
|
## Usage
|
|
30
32
|
|
|
31
33
|
1. Resolve once at orchestration start
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# Model Profiles
|
|
2
2
|
|
|
3
|
-
Model profiles control which OpenCode model each GSD agent uses. This allows balancing quality vs token spend.
|
|
3
|
+
Model profiles control which OpenCode model each GSD agent uses. This allows balancing quality vs token spend, or inheriting the currently selected session model.
|
|
4
4
|
|
|
5
5
|
## Profile Definitions
|
|
6
6
|
|
|
7
|
-
| Agent | `quality` | `balanced` | `budget` |
|
|
8
|
-
|
|
9
|
-
| gsd-planner | opus | opus | sonnet |
|
|
10
|
-
| gsd-roadmapper | opus | sonnet | sonnet |
|
|
11
|
-
| gsd-executor | opus | sonnet | sonnet |
|
|
12
|
-
| gsd-phase-researcher | opus | sonnet | haiku |
|
|
13
|
-
| gsd-project-researcher | opus | sonnet | haiku |
|
|
14
|
-
| gsd-research-synthesizer | sonnet | sonnet | haiku |
|
|
15
|
-
| gsd-debugger | opus | sonnet | sonnet |
|
|
16
|
-
| gsd-codebase-mapper | sonnet | haiku | haiku |
|
|
17
|
-
| gsd-verifier | sonnet | sonnet | haiku |
|
|
18
|
-
| gsd-plan-checker | sonnet | sonnet | haiku |
|
|
19
|
-
| gsd-integration-checker | sonnet | sonnet | haiku |
|
|
20
|
-
| gsd-nyquist-auditor | sonnet | sonnet | haiku |
|
|
7
|
+
| Agent | `quality` | `balanced` | `budget` | `inherit` |
|
|
8
|
+
|-------|-----------|------------|----------|-----------|
|
|
9
|
+
| gsd-planner | opus | opus | sonnet | inherit |
|
|
10
|
+
| gsd-roadmapper | opus | sonnet | sonnet | inherit |
|
|
11
|
+
| gsd-executor | opus | sonnet | sonnet | inherit |
|
|
12
|
+
| gsd-phase-researcher | opus | sonnet | haiku | inherit |
|
|
13
|
+
| gsd-project-researcher | opus | sonnet | haiku | inherit |
|
|
14
|
+
| gsd-research-synthesizer | sonnet | sonnet | haiku | inherit |
|
|
15
|
+
| gsd-debugger | opus | sonnet | sonnet | inherit |
|
|
16
|
+
| gsd-codebase-mapper | sonnet | haiku | haiku | inherit |
|
|
17
|
+
| gsd-verifier | sonnet | sonnet | haiku | inherit |
|
|
18
|
+
| gsd-plan-checker | sonnet | sonnet | haiku | inherit |
|
|
19
|
+
| gsd-integration-checker | sonnet | sonnet | haiku | inherit |
|
|
20
|
+
| gsd-nyquist-auditor | sonnet | sonnet | haiku | inherit |
|
|
21
21
|
|
|
22
22
|
## Profile Philosophy
|
|
23
23
|
|
|
@@ -37,6 +37,49 @@ Model profiles control which OpenCode model each GSD agent uses. This allows bal
|
|
|
37
37
|
- Haiku for research and verification
|
|
38
38
|
- Use when: conserving quota, high-volume work, less critical phases
|
|
39
39
|
|
|
40
|
+
**inherit** - Follow the current session model
|
|
41
|
+
- All agents resolve to `inherit`
|
|
42
|
+
- Best when you switch models interactively (for example OpenCode or Kilo `/model`)
|
|
43
|
+
- **Required when using non-Anthropic providers** (OpenRouter, local models, etc.) — otherwise GSD may call Anthropic models directly, incurring unexpected costs
|
|
44
|
+
- Use when: you want GSD to follow your currently selected runtime model
|
|
45
|
+
|
|
46
|
+
## Using Non-OpenCode Runtimes (Codex, OpenCode, Gemini CLI, Kilo)
|
|
47
|
+
|
|
48
|
+
When installed for a non-OpenCode runtime, the GSD installer sets `resolve_model_ids: "omit"` in `~/.gsd/defaults.json`. This returns an empty model parameter for all agents, so each agent uses the runtime's default model. No manual setup is needed.
|
|
49
|
+
|
|
50
|
+
To assign different models to different agents, add `model_overrides` with model IDs your runtime recognizes:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"resolve_model_ids": "omit",
|
|
55
|
+
"model_overrides": {
|
|
56
|
+
"gsd-planner": "o3",
|
|
57
|
+
"gsd-executor": "o4-mini",
|
|
58
|
+
"gsd-debugger": "o3",
|
|
59
|
+
"gsd-codebase-mapper": "o4-mini"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The same tiering logic applies: stronger models for planning and debugging, cheaper models for execution and mapping.
|
|
65
|
+
|
|
66
|
+
## Using OpenCode with Non-Anthropic Providers (OpenRouter, Local)
|
|
67
|
+
|
|
68
|
+
If you're using OpenCode with OpenRouter, a local model, or any non-Anthropic provider, set the `inherit` profile to prevent GSD from calling Anthropic models for subagents:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Via settings command
|
|
72
|
+
/gsd-settings
|
|
73
|
+
# → Select "Inherit" for model profile
|
|
74
|
+
|
|
75
|
+
# Or manually in .planning/config.json
|
|
76
|
+
{
|
|
77
|
+
"model_profile": "inherit"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Without `inherit`, GSD's default `balanced` profile spawns specific Anthropic models (`opus`, `sonnet`, `haiku`) for each agent type, which can result in additional API costs through your non-Anthropic provider.
|
|
82
|
+
|
|
40
83
|
## Resolution Logic
|
|
41
84
|
|
|
42
85
|
Orchestrators resolve model before spawning:
|
|
@@ -62,7 +105,7 @@ Override specific agents without changing the entire profile:
|
|
|
62
105
|
}
|
|
63
106
|
```
|
|
64
107
|
|
|
65
|
-
Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku
|
|
108
|
+
Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`, `inherit`, or any fully-qualified model ID (e.g., `"o3"`, `"openai/o3"`, `"google/gemini-2.5-pro"`).
|
|
66
109
|
|
|
67
110
|
## Switching Profiles
|
|
68
111
|
|
|
@@ -91,3 +134,6 @@ read-only exploration and pattern extraction. No reasoning required, just struct
|
|
|
91
134
|
|
|
92
135
|
**Why `inherit` instead of passing `opus` directly?**
|
|
93
136
|
OpenCode's `"opus"` alias maps to a specific model version. Organizations may block older opus versions while allowing newer ones. GSD returns `"inherit"` for opus-tier agents, causing them to use whatever opus version the user has configured in their session. This avoids version conflicts and silent fallbacks to Sonnet.
|
|
137
|
+
|
|
138
|
+
**Why `inherit` profile?**
|
|
139
|
+
Some runtimes (including OpenCode) let users switch models at runtime (`/model`). The `inherit` profile keeps all GSD subagents aligned to that live selection.
|
|
@@ -45,8 +45,8 @@ fi
|
|
|
45
45
|
Use `roadmap get-phase` to validate phase exists:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
PHASE_CHECK=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}")
|
|
49
|
-
if [ "$
|
|
48
|
+
PHASE_CHECK=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}" --pick found)
|
|
49
|
+
if [ "$PHASE_CHECK" = "false" ]; then
|
|
50
50
|
echo "ERROR: Phase ${PHASE} not found in roadmap"
|
|
51
51
|
exit 1
|
|
52
52
|
fi
|