model-mix — Claude Code skill: what it does, how to install
Breaks down Claude Code token usage and spend across Opus, Sonnet, and Haiku via Agent Monitor to spot expensive models doing low-complexity tasks.
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a claude-codeWhat model-mix does
The skill connects to the Agent Monitor dashboard to ingest metrics from /api/pricing/cost, /api/pricing, /api/analytics, and /api/sessions. It calculates the exact token share alongside the actual cost share for the Opus, Sonnet, and Haiku families.
It calculates the cost-vs-token gap and inspects sessions from /api/sessions?limit=200. Sessions showing low turn_count, short total_turn_duration_ms, or minimal thinking blocks get flagged. The skill recalculates their cost at lower family rates to project concrete savings.
If the Agent Monitor service is not running with its pricing and analytics endpoints reachable, the skill will fail to generate metrics.
What it helps with
- Spot low-complexity sessions running unnecessarily on expensive Opus tiers
- Calculate the gap between token usage and dollar spend per model family
- Estimate cost savings when downshifting routine workloads to Sonnet or Haiku
- Formulate model routing policies based on empirical session telemetry
Example prompts for the agent
- Analyze model mix for this week and check for Opus overuse
- Show where expensive models are doing cheap work across sessions
- Review model mix data and recommend routing policies
How to install model-mix
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a claude-code2Manually: put the files in place
~/.claude/skills/model-mix/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/model-mix/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a codex2Manually: put the files in place
.agents/skills/model-mix/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a cursor2Manually: put the files in place
.cursor/skills/model-mix/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install hoangsonww/Claude-Code-Agent-Monitor model-mix2Manually: put the files in place
.github/skills/model-mix/SKILL.md1Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a gemini-cli2Platform CLI
gemini skills install https://github.com/hoangsonww/Claude-Code-Agent-Monitor --path plugins/ccam-analytics/skills/model-mixManually: put the files in place
.devin/skills/model-mix/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about model-mix
How to install model-mix in Claude Code?
Run npx skills add hoangsonww/Claude-Code-Agent-Monitor --skill model-mix -a claude-code.
What does model-mix do?
It evaluates token and cost breakdowns across Claude model tiers in Agent Monitor, flagging sessions where simpler models could perform the work for less money.
Which data endpoints does model-mix require?
It queries /api/pricing/cost, /api/pricing, /api/analytics, and /api/sessions?limit=200 to retrieve token aggregates, rates per million tokens, and session metadata.
Source text
SKILL.md · MIT
---
name: model-mix
description: >
Break down Claude Code usage by model family (Opus / Sonnet / Haiku) from the
Agent Monitor dashboard — each family's share of tokens, share of cost, and
the spots where an expensive model is doing cheap work. Pulls per-model token
and cost splits from /api/pricing/cost, current rates from /api/pricing, fleet
token totals from /api/analytics, and per-session model assignment from
/api/sessions. Use when deciding model routing or whether to downshift work to
a cheaper tier.
---
# Model Mix
See where your tokens and dollars go by model family, and where to re-route work.
## Input
The user provides: **$ARGUMENTS**
This may be: empty (analyze the whole fleet), "today" / "this week" / a date range, or a focus like "where is Opus overused?". When empty, analyze all data from `/api/pricing/cost` and `/api/sessions`.
## Data Sources
| Endpoint | Returns |
|----------|---------|
| `GET /api/pricing/cost` | `{ total_cost, breakdown: [{ model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, cost, matched_rule }] }` — per-model token and cost split |
| `GET /api/pricing` | `{ pricing: [{ model_pattern, display_name, input_per_mtok, output_per_mtok, cache_read_per_mtok, cache_write_per_mtok }] }` — rates per family |
| `GET /api/analytics` | `tokens` totals (total_input, total_output, total_cache_read, total_cache_write — baselines pre-summed), `agent_types` for delegation context |
| `GET /api/sessions?limit=200` | Session list — model, cwd, started_at, ended_at, inline `cost`, metadata (JSON: thinking_blocks, turn_count, total_turn_duration_ms, usage_extras) |
### How families and rates work
Map each `model` in the cost breakdown to a family from its `matched_rule` / `display_name`:
| Family | Input $/Mtok | Output $/Mtok | Cache Read $/Mtok | Cache Write $/Mtok |
|--------|-------------|--------------|-------------------|-------------------|
| Opus 4.5/4.6 | $5 | $25 | $0.50 | $6.25 |
| Sonnet 4/4.5/4.6 | $3 | $15 | $0.30 | $3.75 |
| Haiku 4.5 | $1 | $5 | $0.10 | $1.25 |
`cost = (tokens / 1M) × rate_per_mtok` summed over the 4 token types; longest `model_pattern` wins. Opus output costs ~5× Sonnet and ~5× Haiku per token, so a family's **cost share routinely exceeds its token share** — that gap is the routing signal.
## Report Sections
### 1. Token Share by Family
Aggregate `input + output + cache_read + cache_write` tokens per family from `/api/pricing/cost`. Show each family's tokens and percent of total. Cross-check the grand total against `/api/analytics` token totals.
### 2. Cost Share by Family
Sum `cost` per family. Show each family's dollar total and percent of `total_cost`. Place the cost-share % next to the token-share % so the premium gap is visible.
### 3. Cost-vs-Token Gap
For each family compute `cost_share − token_share`. A large positive gap on Opus/Sonnet signals premium spend concentration. Rank families by gap.
### 4. Expensive Model on Cheap Work
From `/api/sessions?limit=200`, find Opus/Sonnet sessions with signals of low complexity: low `turn_count`, short `total_turn_duration_ms`, few thinking_blocks, or small token footprints. List candidates that could plausibly run on a cheaper tier, with current cost and estimated cost if downshifted.
### 5. Routing Recommendations
- Quantify the savings of moving each candidate workload to the next-cheaper family (recompute cost at that family's rates).
- Note work that genuinely needs Opus (deep reasoning, long context) and should stay.
- Summarize a suggested routing policy (e.g. Haiku for mechanical edits, Sonnet for default dev, Opus for hard reasoning).
## Output
Structured Markdown with tables. Currency as USD to 4 decimal places; rates as $/Mtok; token shares and cost shares as percentages; use ▲/▼ for the cost-vs-token gap and any trend. Token counts with thousands separators.
© hoangsonww · MIT · hoangsonww/Claude-Code-Agent-Monitor