skill-router
CLI for Claude Code that ranks installed skills against a session's goal with Jev and says which to load, or to search skills.sh.
Overview
skill-router addresses three problems once you have many Claude Code skills: forgetting which you have, Claude not reliably noticing a skill applies, and not knowing a good skill exists on skills.sh. At the start of a session Claude determines the goal (asking one question if needed) and runs skill-router intent set with it. The tool lists every installed skill and asks Jev to rank them against the goal, returning a probability per skill plus a confidence in typically under a second.
The answer is one of three: load a specific skill (for example /cold-email with probability 1.00), nothing installed fits so Claude should search skills.sh with the find-skills skill, or no skill is needed. The example also shows Jev classifying the task kind and a needs-a-skill probability. Nothing runs again until you set a new intent. A mock keyword mode works without a key and is used by tests. An eval harness runs cases against Jev on a machine with about 130 skills, keeps misses in the report, and an independent review found two bugs since fixed. All questions and thresholds live in one file.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which installed skill best fits this session's goal? | — |
| Yes / no | Does this task need a skill? | — |
| Choice | What kind of task is this (e.g. marketing_growth)? | — |
How it works
- Claude captures the session goal
- skill-router lists installed skills and asks Jev to rank them
- Return: load skill X, search skills.sh, or no skill needed
- Stay quiet until the user sets a new intent
Strengths
- Under a second per decision in the author's runs
- Mock mode for trying without a key
- Misses documented rather than tuned away
Caveats
- Requires Python 3.12, uv and a TypeSafe key for real routing
- Latency varied by location in an independent run
Getting started
git clone the repo, cp .env.example .env and paste a TypeSafe key, then start a new Claude Code session in a project with skill-router set up.At a glance
- Type
- Agent skill
- Status
- beta
- Language
- Python
- Runtime
- CLI used by Claude Code
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Tell Claude Code which installed skill a session needs, using Jev (TypeSafe AI) for the decision and skills.sh for discovery.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Which installed skill fits the session goal, whether any skill is needed, and the task kind.
What if no skill fits?
Claude is told to search skills.sh using the find-skills skill.
Can I try it without a key?
Yes, a labelled mock mode matches keywords instead.
Related projects
MIT plugin and local MCP server that hands an agent's closed questions to Jev or local Laya, with policy gates and receipts.
Agent skillproductionPythonClaude Code and Codex skill that routes a task to one of 27 specialist roles, with an optional Jev engine for catalog selection.
ProjectbetaPythonClaude Code hook that decides which agent or skill should handle a request using YAML rulebooks plus one Jev Choice with confidence bands.
HookbetaPythonOrchestrator that probes which coding agents are installed and logged in, then has Jev pick the best one for a task.
Agent skillbetaPythonHooks for Claude Code, Codex and pi that use Jev to suggest a skill each turn, plus a rule gate for subagent model routing.
HookbetaJavaScriptClaude Code plugin that asks Jev before each turn for reasoning effort, subagent model, strategy and skill, with a decision log.
Agent skillbetaTypeScript