Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Determines which LLM model to use for each agent spawn
.claude/skills/github-model-selection/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 16 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 117% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 491% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 45% | 0% |
> Determines which LLM model to use for each agent spawn.
✅ THIS SKILL PRODUCES:
model parameter for every task tool call.squad/config.json❌ THIS SKILL DOES NOT PRODUCE:
Squad supports 18+ models across three tiers (premium, standard, fast). The coordinator must select the right model for each agent spawn. Users can set persistent preferences that survive across sessions.
Resolution is first-match-wins — the highest layer with a value wins.
| Layer | Name | Source | Persistence | |-------|------|--------|-------------| | 0a | Per-Agent Config | .squad/config.json → agentModelOverrides.{name} | Persistent (survives sessions) | | 0b | Global Config | .squad/config.json → defaultModel | Persistent (survives sessions) | | 1 | Session Directive | User said "use X" in current session | Session-only | | 2 | Charter Preference | Agent's charter.md → ## Model section | Persistent (in charter) | | 3 | Task-Aware Auto | Code → sonnet, docs → haiku, visual → opus | Computed per-spawn | | 4 | Default | claude-haiku-4.5 | Hardcoded fallback |
Key principle: Layer 0 (persistent config) beats everything. If the user said "always use opus" and it was saved to config.json, every agent gets opus regardless of role or task type. This is intentional — the user explicitly chose quality over cost.
.squad/config.jsondefaultModel field — if present, this is the Layer 0 override for all spawnsagentModelOverrides field — if present, these are per-agent Layer 0a overridesagentModelOverrides.{agentName} in config.json? → Use it.defaultModel in config.json? → Use it.## Model section? → Use it.claude-sonnet-4.6claude-sonnet-4.6claude-opus-4.8claude-haiku-4.5claude-haiku-4.5🔧 {Name} ({resolved_model}) — {task}Trigger phrases: "always use X", "use X for everything", "switch to X", "default to X"
defaultModel to .squad/config.json (merge, don't overwrite)✅ Model preference saved: {model} — all future sessions will use this until changed.Per-agent trigger: "use X for {agent}"
agentModelOverrides.{agent} in .squad/config.json✅ {Agent} will always use {model} — saved to config.Trigger phrases: "switch back to automatic", "clear model preference", "use default models"
defaultModel from .squad/config.json✅ Model preference cleared — returning to automatic selection.After resolving the model and including it in the spawn template, this skill is done. Do NOT:
.squad/config.json).squad/config.json model-related fields:
json{ "version": 1, "defaultModel": "claude-opus-4.6", "agentModelOverrides": { "fenster": "claude-sonnet-4.6", "mcmanus": "claude-haiku-4.5" } }
defaultModel — applies to ALL agents unless overridden by agentModelOverridesagentModelOverrides — per-agent overrides that take priority over defaultModelIf a model is unavailable (rate limit, plan restriction), retry within the same tier:
Premium: claude-opus-4.8 → claude-opus-4.7 → claude-opus-4.6 → claude-sonnet-4.6 → (omit model param)
Standard: claude-sonnet-5 → claude-sonnet-4.6 → gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.4 → gpt-5.3-codex → claude-sonnet-4.5 → gemini-2.5-pro → (omit model param)
Fast: claude-haiku-4.5 → gpt-5.4-mini → gpt-5-mini → (omit model param)Never fall UP in tier. A fast task won't land on a premium model via fallback.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 13,039 | 11,657 | -11% | 1 | 1 | 0% | 1,002 | 2,175 | +117% | 0 | 0 | — |
case-02 | fail→fail | 10,892 | 20,615 | +89% | 1 | 1 | 0% | 863 | 2,072 | +140% | 0 | 0 | — |
case-03 | fail→fail | 4,132 | 7,968 | +93% | 1 | 1 | 0% | 410 | 2,520 | +515% | 0 | 0 | — |
case-04 | pass→pass | 12,409 | 10,824 | -13% | 1 | 1 | 0% | 1,049 | 2,285 | +118% | 0 | 0 | — |
case-05 | fail→pass | 8,708 | 12,074 | +39% | 1 | 1 | 0% | 436 | 2,577 | +491% | 0 | 0 | — |
case-06 | pass→pass | 4,416 | 8,928 | +102% | 1 | 1 | 0% | 662 | 2,125 | +221% | 0 | 0 | — |
case-07 | pass→pass | 8,702 | 9,879 | +14% | 1 | 1 | 0% | 566 | 2,187 | +286% | 0 | 0 | — |
case-08 | fail→pass | 18,094 | 8,828 | -51% | 1 | 1 | 0% | 1,740 | 1,974 | +13% | 0 | 0 | — |
case-09 | fail→pass | 16,755 | 9,552 | -43% | 1 | 1 | 0% | 1,831 | 2,065 | +13% | 0 | 0 | — |
case-10 | fail→pass | 10,268 | 9,735 | -5% | 1 | 1 | 0% | 1,491 | 2,159 | +45% | 0 | 0 | — |
case-11 | fail→pass | 15,798 | 5,874 | -63% | 1 | 1 | 0% | 1,338 | 2,168 | +62% | 0 | 0 | — |
case-12 | fail→pass | 17,074 | 8,814 | -48% | 1 | 1 | 0% | 1,771 | 1,929 | +9% | 0 | 0 | — |
case-13 | fail→pass | 11,396 | 8,613 | -24% | 1 | 1 | 0% | 1,776 | 1,868 | +5% | 0 | 0 | — |
case-14 | fail→pass | 16,310 | 7,693 | -53% | 1 | 1 | 0% | 1,817 | 1,778 | -2% | 0 | 0 | — |
case-15 | pass→pass | 11,090 | 6,811 | -39% | 1 | 1 | 0% | 1,680 | 2,303 | +37% | 0 | 0 | — |
case-16 | pass→pass | 6,101 | 8,660 | +42% | 1 | 1 | 0% | 955 | 1,818 | +90% | 0 | 0 | — |
case-17 | fail→fail | 17,257 | 12,710 | -26% | 1 | 1 | 0% | 1,003 | 1,753 | +75% | 0 | 0 | — |
case-18 | fail→pass | 14,451 | 8,904 | -38% | 1 | 1 | 0% | 1,381 | 1,861 | +35% | 0 | 0 | — |
case-19 | pass→pass | 19,074 | 10,601 | -44% | 1 | 1 | 0% | 2,416 | 2,249 | -7% | 0 | 0 | — |
case-20 | fail→pass | 23,403 | 12,573 | -46% | 1 | 1 | 0% | 3,368 | 2,616 | -22% | 0 | 0 | — |
case-21 | fail→pass | 25,588 | 7,614 | -70% | 1 | 1 | 0% | 4,803 | 2,509 | -48% | 0 | 0 | — |
case-22 | fail→pass | 6,501 | 8,106 | +25% | 1 | 1 | 0% | 775 | 1,903 | +146% | 0 | 0 | — |
case-23 | fail→pass | 16,831 | 8,127 | -52% | 1 | 1 | 0% | 1,754 | 1,812 | +3% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +61 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.