Cost routing
Skill The-Artificer-of-Ciphers-LLC/skills-from-the-artificer/cost-routing
Top-level dispatcher that classifies every incoming request into scout / coder / architect tiers BEFORE any tool call. Routes Read, Grep, Glob, file-search, symbol-lookup, "where is X", and "list files matching Y" to haiku-scout. Routes known-location Edit, Write, multi-file refactor, test authoring, and bounded code changes to sonnet-coder. Reserves the main opus context for ambiguous design questions, ADRs, and tradeoff analysis. Use whenever a request lands in the main context and might involve file IO, code search, code edits, or design reasoning — which is almost every turn.From its SKILL.md
npx -y skills add The-Artificer-of-Ciphers-LLC/skills-from-the-artificer --skill cost-routingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Cost-Tier Routing
The main context runs on opus. Every Read, Grep, Glob, and Edit invoked at this tier bills at opus rates. Most operations don't need opus reasoning — they need a model that can run a command and report a result. This skill is the dispatch gate that stops opus from doing work haiku or sonnet would complete just as correctly for a fraction of the cost.
The three tiers
| Tier | Model | Owns | Example requests |
|---|---|---|---|
| scout | haiku | Read-only lookup, search, location | "Where is Foo defined?", "List files matching *.test.ts", "Count LOC in src/", "Read X and report Y" |
| coder | sonnet | Bounded code changes at known locations | "Add a test for parseDate", "Refactor auth.ts to use the new client", "Rename A → B repo-wide" |
| architect | opus | Ambiguous spec, tradeoff analysis, design | "Should we use Redux or Zustand?", "Draft an ADR for the auth rewrite", "Why is this architecture failing?" |
The dispatch decision (run this first, every turn)
Before reaching for any tool, run this classifier against the incoming request:
- Is the work entirely read / search / location? → scout. Dispatch
haiku-scout. Never call Read / Grep / Glob in the main context. - Is the change scope AND the design already decided? → coder. Dispatch
sonnet-coderwith a precise brief. - Is the user asking "should we", "why", "what are the tradeoffs", "design X"? → architect. Stay in-context (you ARE opus) or dispatch with
model: "opus". - Mixed? → split. Scout first to gather facts, then re-classify the next step. Never bundle scout work into an architect dispatch.
If the answer to #1 is yes and you find yourself reaching for Read / Grep / Glob in the main context anyway — STOP. That is the violation this skill exists to prevent.
Dispatch templates
See PROMPTS.md for the canonical brief for each tier. Use them verbatim — every field is load-bearing.
Worked examples
See EXAMPLES.md for ~15 classifications across the boundary cases (multi-file search, bug fixes with unknown root cause, "small" edits that hide design questions).
Enforcement
The companion PreToolUse hook (hooks/pre-tool-use-cost-check.sh) warns when Read / Grep / Glob fires in the main context. Register it in ~/.claude/settings.json (see EXAMPLES.md § Installing the hook).
- Default mode: warn (writes to stderr, the call proceeds).
COST_ROUTING_BLOCK=1upgrades the warning to a harddeny— useful for sessions where you want zero tolerance.COST_ROUTING_BYPASS=1silences the hook for legitimate one-shot inspection (a single Read of a file the user pasted a path to).
The hook cannot perfectly distinguish "top level opus" from "inside a subagent" — Claude Code does not currently expose that bit to hooks. It warns on every Read / Grep / Glob; you teach yourself to recognize the warning as "I'm probably in opus, should I have dispatched?"
When NOT to dispatch
- The entire task is one unattended CLI command (
gh pr view,docker ps). UseBashdirectly — wrapping a one-shot command in an agent is pure overhead. - The user pasted a single file path and asked for a single fact. Read it directly; dispatch overhead exceeds the saved tokens.
- The work is genuinely ambiguous design that needs opus reasoning. Don't dispatch yourself to yourself.
Common failure modes
- Tier creep — classifying a multi-file search as "design work" because it touches many files. Multi-file search is still scout.
- Dispatch without
model:— callingAgentwithsubagent_type: "general-purpose"and nomodel:parameter inherits the parent tier (opus → opus). Always pin the model. - Skipping the classifier — jumping to Read on instinct. The classifier IS the skill; running it costs two seconds and saves the budget every time.
- Bundling tiers — handing scout work to a coder dispatch ("find the file, then edit it"). The coder agent will burn sonnet tokens doing scout work. Split: scout reports the path; coder edits at that path.
What ships with it: 5 files
16.6 KB alongside SKILL.md, 1 of them executable
evals/
- evals.json2.7 KB
hooks/
- pre-tool-use-cost-check.shruns1.2 KB
- EXAMPLES.md5.0 KB
- PROMPTS.md3.3 KB
- README.md4.5 KB