route — Claude Code skill: classify work and pick the right reviewer
A skill that sorts a task or diff into a work domain and hands it to the matching specialist reviewer instead of a generic pass.
npx skills add dshakes/compass --skill route -a claude-codeWhat route does
Five domains cover the routing. Frontend styling and components go to code-reviewer with a design and accessibility pass. Public APIs, SDKs, contracts and schemas get contract and back-compat attention. CI, deploy, IaC and migrations go to k8s-operator, with blast radius in mind. Markdown and docs alone go to docs-writer. Library and business logic stay with code-reviewer; when signals mix, the skill falls back to core.
A correctness review runs every time, whichever domain wins. Anything touching auth, user input, tenant isolation or secrets also goes to security-auditor. Routing adds a targeted pass on top; it drops nothing. Findings come back sorted as Blocking, Should-fix and Nit.
The skill relies on Read, Grep, Glob and Bash. Faced with an unclear diff, it leans toward more review, since under-classifying costs more than the extra pass. Nothing is gated: a human still reads and merges. The same repo ships a separate model tiering command, compass route "<task>", which picks a model by cost and checks itself against scripts/route-evalset.tsv; domain routing is a different job.
What it helps with
- classify which domain a diff belongs to
- send a task to the right reviewer rather than one broad pass
- add an accessibility check to UI changes
- catch breaking changes in a public API
- audit auth and input changes for security
Example prompts for the agent
- Look at the current diff and tell me which domain it belongs to
- Route this diff to review with a back-compat check on the contract
- Security-check the changes to auth and user input
How to install route
1Skills CLI (Vercel)
npx skills add dshakes/compass --skill route -a claude-code2Manually: put the files in place
~/.claude/skills/route/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/route/
1Skills CLI (Vercel)
npx skills add dshakes/compass --skill route -a codex2Manually: put the files in place
.agents/skills/route/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dshakes/compass --skill route -a cursor2Manually: put the files in place
.cursor/skills/route/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dshakes/compass route2Manually: put the files in place
.github/skills/route/SKILL.md1Skills CLI (Vercel)
npx skills add dshakes/compass --skill route -a gemini-cli2Platform CLI
gemini skills install https://github.com/dshakes/compass --path claude/skills/routeManually: put the files in place
.devin/skills/route/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dshakes/compass --skill route -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 route
How do I install route in Claude Code?
Run npx skills add dshakes/compass --skill route -a claude-code; the skill file lands at ~/.claude/skills/route/SKILL.md.
What does route do?
It classifies a task or diff into one work domain and dispatches it to the matching subagent: code-reviewer, docs-writer, k8s-operator or security-auditor.
Does routing replace a normal review?
No. A correctness review always runs, and security-auditor joins whenever auth, inputs, tenancy or secrets are involved. Routing only adds a domain-specific pass.
Source text
SKILL.md · MIT
--- name: route description: Detect the work type of a task or diff and dispatch the right specialist review/agent. Use when you're about to review or implement and want the correct domain reviewer (UI/design, API/devex, infra, docs, core) instead of a generic pass. The local mirror of the SDLC Classifier + domain-routed reviewers. argument-hint: "[task description or 'review the current diff']" allowed-tools: Read, Grep, Glob, Bash --- # Route work to the right specialist The cloud SDLC classifies each PR (`sdlc-classify.yml`) and runs domain-specific reviewers. This skill does the same locally: classify, then dispatch. ## Steps 1. **Classify** the task/diff into ONE primary domain (default `core` if mixed): | Domain | Signals | Route to | |---|---|---| | `ui` | frontend, styling, components, UX | `code-reviewer` + a design/a11y pass | | `api` | public API/SDK, contracts, schemas | `code-reviewer` + contract/back-compat focus | | `infra` | CI, deploy, IaC, migrations | `k8s-operator` / careful review of blast radius | | `docs` | docs/markdown only | `docs-writer` | | `core` | library / business logic | `code-reviewer` (+ `security-auditor` if it touches authz/inputs) | 2. **Always** run, regardless of domain: a correctness review (`code-reviewer`) and, for anything touching auth/inputs/tenancy/secrets, `security-auditor`. Routing only *adds* a targeted pass — it never removes the safety-critical ones. 3. **Dispatch**: hand the diff to the chosen subagent(s) in a fresh context; collect and summarize findings grouped Blocking / Should-fix / Nit. ## Notes - Bias to *more* review when uncertain — misclassifying down is the only costly error. - This is advisory routing; it does not gate anything. The human still reviews and merges. - **Model tiering** (separate from domain routing): `compass route "<task>"` picks the cheapest-correct model (haiku/sonnet/opus). It's **measured** — `compass route --eval` scores it against `scripts/route-evalset.tsv` and CI gates on an accuracy floor, so the heuristic can't silently regress. Add real mis-routes to the set as they surface.
© dshakes · MIT · dshakes/compass