sorting-hat
Skill9 starsChanged 3 months agoMITView on GitHub
Audit and assign model tiers to every agent in the repo — classify each as planner, builder, or judge, and pin an explicit model per role so expensive models plan and judge while cheaper models execute. Use for "which agents should run on which model", "cut my token spend", "set up model tiers", "Opus is doing grunt work", or as part of /opus-pocus. Reports the classification table and the frontmatter edits; prescribes a lint so future agents must declare a tier. NOT for choosing the user's interactive session model — agents only.
In this repository20 other files it gives its agents.
- accio-rulebookSkill
- alohomoraSkill
- avada-verbosaSkill
- clarificus-maximaSkill
- configureSkill
- contradicto-revelioSkill
- descriptio-reducioSkill
- finite-recursumSkill
- legilimens-anthropicaSkill
- muffliato-hookusSkill
- nihil-revelioSkill
- obliviate-fossiliumSkill
- opus-pocusSkill
- priori-incantatoSkill
- protegoSkill
- quietus-capslockiusSkill
- tempus-mutaturSkill
- the-pensieveSkill
- the-remembrallSkill
- the-room-of-requirementSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Every agent definition (.claude/agents/*.md and plugin agents), each one's model: frontmatter (or its absence), its tool set, and what its …
- Distinctive: line 22
Read the agent's *task shape*, not its name:
- Distinctive: line 35
Read-only auditors whose findings block a merge are judges even when cheap to run wrong — a plausible-but-wrong finding costs more than the …
- Distinctive: line 37
When genuinely torn, tier UP for verdict-producers, DOWN for artifact-producers.
- Very specific: line 75
On a roster of about five or more: add the lint — a wiring or CI check that every agent definition declares model:.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
✨ The Sorting Hat
"Not every task deserves the expensive wizard. Opus plans, Sonnet toils, Haiku fetches — Opus returns to judge."
The thesis: use the top model as a planner and judge, not an executor. Architecture, decomposition, and final review reward the strongest model; mechanical execution mostly doesn't. An agent roster with no declared tiers runs everything on the session default — usually the most expensive model doing the least discriminating work.
What to scan
Every agent definition (.claude/agents/*.md and plugin agents), each one's model:
frontmatter (or its absence), its tool set, and what its body actually asks it to do.
Classification
Read the agent's task shape, not its name:
| Role | Task shape | Tier |
| Judge | Reviews, audits, refutes, grades; output is a verdict someone acts on; being wrong is expensive | Top model (Opus-class) |
| Planner | Decomposes, architects, writes briefs others execute | Top model |
| Builder | Writes code/content against a settled spec; correctness is checkable downstream (compiles, tests, lints) | Mid model (Sonnet-class) |
| Mechanical | Renames, format fixes, lookups, file moves; a wrong answer is obvious and cheap | Small model (Haiku-class) |
Edge rules:
- An agent that both builds and self-reviews is a builder — the judging belongs in a separate judge pass, which is the whole point of the split.
- Read-only auditors whose findings block a merge are judges even when cheap to run wrong — a plausible-but-wrong finding costs more than the model saved.
- When genuinely torn, tier UP for verdict-producers, DOWN for artifact-producers.
When this spell has no subject
Fewer than about five agents: report the classification table and stop. Do not prescribe a decision record, do not prescribe a lint. Both are drift-control for a roster large enough to drift; on three agents the frontmatter is the policy, and a human reading three files is the enforcement. Prescribing governance for two lines of YAML is the scale inversion this book grades elsewhere.
A missing model: is not automatically a finding. Inheriting the session model is the right
call when the agent's cost is negligible, or when the user's plan may not grant the tier you would
pin — a hard pin to a model the account cannot reach fails at dispatch, which is worse than an
untiered agent. Flag a missing model: only when the agent is frequently dispatched and its
role tier differs from the session default, and say which of the two you observed.
Anti-patterns to find
- No
model:on a frequently-dispatched agent whose tier differs from the session default — it silently inherits whatever the session runs, which is the wrong tier by the roster's own classification. (On a small roster, or where the inherited tier is already correct, this is not a finding — see above.) - Judge on a builder tier (a reviewer pinned to a small model to save cost).
- Mechanical work on the top tier (a rename bot inheriting Opus).
- Tier decided at dispatch time per call — callers guess differently; the definition is the single source.
- No enforcement — nothing makes the NEXT agent declare a tier, so the roster drifts back.
Fix prescriptions
- Emit the full classification table: agent · current model · role · prescribed model · one-line rationale. The user approves before edits.
- Apply as
model:frontmatter edits — one per agent definition. Use the alias (opus/sonnet/haiku/inherit), never a dated model ID: IDs age out and a stale one fails at dispatch. Where the account may not hold the top tier, preferinheritfor judges and pin only the down-tiers. - On a roster of about five or more: record the policy as a decision doc (ADR or equivalent) so the tiers are argued once, not re-litigated per agent.
- On a roster of about five or more: add the lint — a wiring or CI check that every agent
definition declares
model:. The check, not the doc, is what keeps the roster sorted. Below that size the lint governs less than it costs. - Derived, never typed: if the repo documents the roster (a README table), generate the tier column from the frontmatter — a hand-typed copy drifts.
Bounds
- Scope: agent definitions and their frontmatter. Nothing else, and never the user's interactive session model.
- Cap: the full classification table is the deliverable, so no cap applies — but findings (mis-tiered agents) rank at 15.
- Done when every agent has been classified once. A repo with no agents gets
SCANNED NOTHINGand gradesN/A, neverO. - Quote once, at read time; mark anything you cannot re-confirm
UNVERIFIEDrather than re-reading to check yourself. - See
skills/opus-pocus/references/casting-safety.mdfor the full rules.
Report format
The classification table, the count of agents changed per direction (up-tiered / down-tiered /
newly declared), the estimated spend impact (which frequent agents moved down), and the lint
status (exists / prescribed). SCANNED NOTHING if the repo has no agents.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

