athena-research — capability router
Most of the 1450 local skills are hidden from your skill listing
(/.claude/skills//SKILL.md` and work fully — you just have to
find and Read the right one on demand. That is this skill's only job.skillOverrides: user-invocable-only) so the session starts lean. Their bodies
still live in `
Input — one of
- A task ("scrape this site to markdown", "review this Go diff", "harvest a YouTube transcript into the vault"): you don't know the skill name. → find then load.
- An explicit skill id ("run
firecrawl-scrape"): you already know it. → load directly.
Protocol
Task → find then load
- Run the local router (pure node, ~0 model tokens):
node ~/.agents/registry/scripts/route-skills.mjs "<task text>" --limit 5 --json - Look at the 5 results (each has
name,route_score,path). Pick the best fit. If the top score is weak or nothing fits the actual task, say so and proceed WITHOUT a skill — do not force a bad match. - Read only that one
SKILL.md(itspath) and follow it. Do not load the other four. - If the chosen skill is heavy (large body, many reads, multi-step) or the work is parallelizable, spawn a subagent with the task + the skill path instead of running it inline — keep this context lean.
Explicit id → load directly
- Read
~/.claude/skills/<id>/SKILL.md. Some skills are nested (e.g.~/.claude/skills/ecc/<id>/SKILL.md); if the direct path is missing, run the router with the id as the query to resolve the realpath, then Read it. - Follow it (or hand it to a subagent, same heavy/parallel rule as above).
Notes
- The
UserPromptSubmithook (~/.claude/hooks/skill-router.mjs) already runs this router on every substantive prompt and injects the top 5 — so usually the candidates are already in front of you. Invoke this skill explicitly mainly for a named skill, or to re-search mid-task with a sharper query. - Reading a
SKILL.mdworks regardless ofskillOverrides(the Read tool ignores skill visibility). You never need to re-enable a skill to use its body this way. /namestill works for the user on everyuser-invocable-onlyskill. Onlyoffskills need re-enabling first.- The allowlist kept visible (model-auto-invocable) is small and lives in
~/.claude/settings.local.jsonunderskillOverrides. Everything not listed there is reached through this router.