jev-skill-routerlisted
Install: claude install-skill shimo4228/claude-harness
# jev-skill-router
Claude Code lists every installed skill's description and leaves the choice to the model. With
dozens of skills the model reads past the one that fits, or loads one when none does. This hook
makes that choice a separate, typed judgment: the prompt and the skill roster go to TypeSafe's
Jev model, which returns probabilities, and code decides from them. The roster in the model's
context never changes — at most one line is added to the turn.
Python 3.10+, standard library only. The runtime is `scripts/`; nothing else is needed.
## Install
As a plugin (wires the hook for you):
```
/plugin marketplace add shimo4228/jev-skill-router
/plugin install jev-skill-router@jev-skill-router
```
Claude Code asks for the options when it enables the plugin: a TypeSafe API key
(https://console.typesafe.ai/keys — stored in the system keychain, optional if you pass the key
another way), the mode (`shadow` by default; the picker needs Claude Code 2.1.271+), and an
optional log path.
By hand: put this directory anywhere and add one hook to `~/.claude/settings.json`:
```json
{
"env": { "JEV_ROUTER": "shadow" },
"hooks": {
"UserPromptSubmit": [
{ "hooks": [ { "type": "command",
"command": "python3 /path/to/jev-skill-router/scripts/route.py",
"timeout": 5 } ] }
]
}
}
```
Where each setting comes from, first match wins:
| Setting | Sources |
|---|---|
| mode | env `JEV_ROUTER` → plugin option `mode` → `shadow`. T