* fix: replace /gsd: command format with /gsd- skill format in all suggestions All next-step suggestions shown to users were still using the old colon format (/gsd:xxx) which cannot be copy-pasted as skills. Migrated all occurrences across agents/, commands/, get-shit-done/, docs/, README files, bin/install.js (hardcoded defaults for claude runtime), and get-shit-done/bin/lib/*.cjs (generate-claude-md templates and error messages). Updated tests to assert new hyphen format instead of old colon format. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: migrate remaining /gsd: format to /gsd- in hooks, workflows, and sdk Addresses remaining user-facing occurrences missed in the initial migration: - hooks/: fix 4 user-facing messages (pause-work, update, fast, quick) and 2 comments in gsd-workflow-guard.js - get-shit-done/workflows/: fix 21 Skill() literal calls that Claude executes directly (installer does not transform workflow content) - sdk/prompt-sanitizer.ts: update regex to strip /gsd- format in addition to legacy /gsd: format; update JSDoc comment - tests/: update autonomous-ui-steps, prompt-sanitizer to assert new format Note: commands/gsd/*.md frontmatter (name: gsd:xxx) intentionally unchanged — installer derives skillName from directory path, not the name field. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(plan-phase): preserve --chain flag in auto-advance sync and handle ui-phase gate in chain mode Bug 1: step 15 sync-flag check only guarded against --auto, causing _auto_chain_active to be cleared when plan-phase is invoked without --auto in ARGUMENTS even though a --chain pipeline was active. Added --chain to the guard condition, matching discuss-phase behaviour. Bug 2: UI Design Contract gate (step 5.6) always exited the workflow when UI-SPEC was missing, breaking the discuss --chain pipeline silently. When _auto_chain_active is true, the gate now auto-invokes gsd-ui-phase --auto via Skill() and continues to step 6 without prompting. Manual invocations retain the existing AskUserQuestion flow. * fix: remove <sub>/clear</sub> pattern and duplicate old-format command in discuss-phase.md --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
140 lines
5.4 KiB
Markdown
140 lines
5.4 KiB
Markdown
# Model Profiles
|
|
|
|
Model profiles control which Claude model each GSD agent uses. This allows balancing quality vs token spend, or inheriting the currently selected session model.
|
|
|
|
## Profile Definitions
|
|
|
|
| Agent | `quality` | `balanced` | `budget` | `inherit` |
|
|
|-------|-----------|------------|----------|-----------|
|
|
| gsd-planner | opus | opus | sonnet | inherit |
|
|
| gsd-roadmapper | opus | sonnet | sonnet | inherit |
|
|
| gsd-executor | opus | sonnet | sonnet | inherit |
|
|
| gsd-phase-researcher | opus | sonnet | haiku | inherit |
|
|
| gsd-project-researcher | opus | sonnet | haiku | inherit |
|
|
| gsd-research-synthesizer | sonnet | sonnet | haiku | inherit |
|
|
| gsd-debugger | opus | sonnet | sonnet | inherit |
|
|
| gsd-codebase-mapper | sonnet | haiku | haiku | inherit |
|
|
| gsd-verifier | sonnet | sonnet | haiku | inherit |
|
|
| gsd-plan-checker | sonnet | sonnet | haiku | inherit |
|
|
| gsd-integration-checker | sonnet | sonnet | haiku | inherit |
|
|
| gsd-nyquist-auditor | sonnet | sonnet | haiku | inherit |
|
|
|
|
## Profile Philosophy
|
|
|
|
**quality** - Maximum reasoning power
|
|
- Opus for all decision-making agents
|
|
- Sonnet for read-only verification
|
|
- Use when: quota available, critical architecture work
|
|
|
|
**balanced** (default) - Smart allocation
|
|
- Opus only for planning (where architecture decisions happen)
|
|
- Sonnet for execution and research (follows explicit instructions)
|
|
- Sonnet for verification (needs reasoning, not just pattern matching)
|
|
- Use when: normal development, good balance of quality and cost
|
|
|
|
**budget** - Minimal Opus usage
|
|
- Sonnet for anything that writes code
|
|
- Haiku for research and verification
|
|
- Use when: conserving quota, high-volume work, less critical phases
|
|
|
|
**inherit** - Follow the current session model
|
|
- All agents resolve to `inherit`
|
|
- Best when you switch models interactively (for example OpenCode or Kilo `/model`)
|
|
- **Required when using non-Anthropic providers** (OpenRouter, local models, etc.) — otherwise GSD may call Anthropic models directly, incurring unexpected costs
|
|
- Use when: you want GSD to follow your currently selected runtime model
|
|
|
|
## Using Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo)
|
|
|
|
When installed for a non-Claude 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.
|
|
|
|
To assign different models to different agents, add `model_overrides` with model IDs your runtime recognizes:
|
|
|
|
```json
|
|
{
|
|
"resolve_model_ids": "omit",
|
|
"model_overrides": {
|
|
"gsd-planner": "o3",
|
|
"gsd-executor": "o4-mini",
|
|
"gsd-debugger": "o3",
|
|
"gsd-codebase-mapper": "o4-mini"
|
|
}
|
|
}
|
|
```
|
|
|
|
The same tiering logic applies: stronger models for planning and debugging, cheaper models for execution and mapping.
|
|
|
|
## Using Claude Code with Non-Anthropic Providers (OpenRouter, Local)
|
|
|
|
If you're using Claude Code with OpenRouter, a local model, or any non-Anthropic provider, set the `inherit` profile to prevent GSD from calling Anthropic models for subagents:
|
|
|
|
```bash
|
|
# Via settings command
|
|
/gsd-settings
|
|
# → Select "Inherit" for model profile
|
|
|
|
# Or manually in .planning/config.json
|
|
{
|
|
"model_profile": "inherit"
|
|
}
|
|
```
|
|
|
|
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.
|
|
|
|
## Resolution Logic
|
|
|
|
Orchestrators resolve model before spawning:
|
|
|
|
```
|
|
1. Read .planning/config.json
|
|
2. Check model_overrides for agent-specific override
|
|
3. If no override, look up agent in profile table
|
|
4. Pass model parameter to Task call
|
|
```
|
|
|
|
## Per-Agent Overrides
|
|
|
|
Override specific agents without changing the entire profile:
|
|
|
|
```json
|
|
{
|
|
"model_profile": "balanced",
|
|
"model_overrides": {
|
|
"gsd-executor": "opus",
|
|
"gsd-planner": "haiku"
|
|
}
|
|
}
|
|
```
|
|
|
|
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"`).
|
|
|
|
## Switching Profiles
|
|
|
|
Runtime: `/gsd-set-profile <profile>`
|
|
|
|
Per-project default: Set in `.planning/config.json`:
|
|
```json
|
|
{
|
|
"model_profile": "balanced"
|
|
}
|
|
```
|
|
|
|
## Design Rationale
|
|
|
|
**Why Opus for gsd-planner?**
|
|
Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.
|
|
|
|
**Why Sonnet for gsd-executor?**
|
|
Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.
|
|
|
|
**Why Sonnet (not Haiku) for verifiers in balanced?**
|
|
Verification requires goal-backward reasoning - checking if code *delivers* what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.
|
|
|
|
**Why Haiku for gsd-codebase-mapper?**
|
|
Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.
|
|
|
|
**Why `inherit` instead of passing `opus` directly?**
|
|
Claude Code'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.
|
|
|
|
**Why `inherit` profile?**
|
|
Some runtimes (including OpenCode) let users switch models at runtime (`/model`). The `inherit` profile keeps all GSD subagents aligned to that live selection.
|