model-selection

A set of rules for choosing which language model to use when a Squad agent starts a task. Squad is a system that coordinates multiple software agents.

In plain words
What is it for?
Use it to configure default and per-agent models, apply session choices, and determine the final model from project settings and agent instructions.
Why use it?
It resolves competing model preferences in a predictable order, so each agent receives an explicit model choice.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/alonf/specrew/model-selection
Any agent
npx skills add alonf/specrew --skill model-selection
Clone the repo
git clone --depth 1 https://github.com/alonf/specrew

Made for: Claude Code, Codex.

Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,300 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 95% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01300
Opus 5 $0.00000 $0.00650
Sonnet 5 $0.00000 $0.00260
Haiku 4.5 $0.00000 $0.00130

Measured 2d ago against content hash c2fa36d3343f, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

model-selection scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

95% identical to model-selection — 8 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.copilot/skills/model-selection/SKILL.md · 118 lines

How it starts

The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Model Selection

Determines which LLM model to use for each agent spawn.

SCOPE

✅ THIS SKILL PRODUCES:

  • A resolved model parameter for every task tool call
  • Persistent model preferences in .squad/config.json
  • Spawn acknowledgments that include the resolved model

❌ THIS SKILL DOES NOT PRODUCE:

  • Code, tests, or documentation
  • Model performance benchmarks
  • Cost reports or billing artifacts

Context

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.

5-Layer Model Resolution Hierarchy

Resolution is first-match-wins — the highest layer with a value wins.

Layer Name Source Persistence
0a Per-Agent Config .squad/config.jsonagentModelOverrides.{name} Persistent (survives sessions)
0b Global Config .squad/config.jsondefaultModel 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.

AGENT WORKFLOW

On Session Start

  1. READ .squad/config.json
  2. CHECK for defaultModel field — if present, this is the Layer 0 override for all spawns
  3. CHECK for agentModelOverrides field — if present, these are per-agent Layer 0a overrides
  4. STORE both values in session context for the duration

On Every Agent Spawn

  1. CHECK Layer 0a: Is there an agentModelOverrides.{agentName} in config.json? → Use it.
  2. CHECK Layer 0b: Is there a defaultModel in config.json? → Use it.
  3. CHECK Layer 1: Did the user give a session directive? → Use it.
  4. CHECK Layer 2: Does the agent's charter have a ## Model section? → Use it.
  5. CHECK Layer 3: Determine task type:
    • Code (implementation, tests, refactoring, bug fixes) → claude-sonnet-4.6
    • Prompts, agent designs → claude-sonnet-4.6
    • Visual/design with image analysis → claude-opus-4.6
    • Non-code (docs, planning, triage, changelogs) → claude-haiku-4.5
  6. FALLBACK Layer 4: claude-haiku-4.5
  7. INCLUDE model in spawn acknowledgment: 🔧 {Name} ({resolved_model}) — {task}

Read the full file on GitHub · 118 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 118 lines · 0 tokens per session scan A c2fa36d3343f

Subscribe to this mod's changes

model-selection is a skill published in the GitHub repository alonf/specrew (54 stars, last pushed 3d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,300 tokens. A static security scan graded it A with 0 findings. It is 95% identical to model-selection, differing in 8 lines, and is treated as a copy.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

babysit-pr

Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…

openai/codex · 114 tokens

imagegen

Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output…

openai/codex · 113 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens