Skills you
installed but
never trigger.
skill-router groups skills under a well-described router — fixing trigger reliability and recovering context headroom at the same time.
description needs
modified
Installed.
Never used.
Vague Descriptions
Most third-party skills ship with descriptions like "A tool for animating UI components." No trigger conditions. No guidance on when to prefer it over alternatives. The agent sees it and doesn't know when it applies.
Missing Trigger Conditions
Without explicit WHEN conditions, the agent guesses — and guesses wrong. Skills that should fire on "make this feel alive" never trigger. Skills that shouldn't fire on unrelated requests do. The skill isn't broken; the description is.
No NOT-WHEN Boundaries
Without negative trigger conditions, the agent can't distinguish between adjacent skills. A UI review skill and a UI polish skill look identical from the description alone. One crowds out the other.
Context Window Bloat
It's common to have 100+ skills installed — and that number only grows. Without grouping, skills compound: each new install quietly burns more context at startup, leaving less room for your actual work. The problem gets worse with every install.
Wrap. Describe.
Trigger reliably.
animate/SKILL.md description: > A tool for animating UI components. ↑ no trigger conditions agent ignores it
.claude/skills/ animate/ ← untouched polish/ ← untouched ui-design/ ← router SKILL.md _manifest.json description: Use when the user wants to add motion, improve visual feel, or polish UI before shipping. Do NOT use for writing new components.
The router synthesizes a WHAT + WHEN + NOT-WHEN description from the sub-skills' actual content. When triggered, it dispatches to the right original skill. Originals are never modified.
N skills.
One entry.
Skills compound. Every new install quietly adds more tokens to your startup overhead — and without grouping, it only gets worse. skill-router suppresses sub-skill descriptions automatically, so only the router's single entry loads into context. Same capabilities. A fraction of the overhead.
polish disable-model-invocation: true
critique disable-model-invocation: true
arrange disable-model-invocation: true
· · · 17 more suppressed · · ·
Sub-skills remain fully accessible — the router dispatches to them on demand. They just don't occupy context until they're needed.
Six steps.
Done.
Detect
Scans the project for known agent directories — with smart markers to avoid false positives.
Determine
Identifies which skills to group — user-specified or auto-suggested by collection.
Synthesize
Reads sub-skill descriptions and writes a unified router description (WHAT + WHEN + NOT-WHEN).
Preview
Dry-run generates the full SKILL.md for review before any files are written.
Create
Writes the router skill directory with SKILL.md and _manifest.json. Originals untouched.
Explain
Tells you how to invoke the router (/router-name) and sub-skills directly (/skill-name).
Works with
40+ agents.
¹ OpenClaw uses a generic skills/ directory name. Detection requires a .openclaw/ marker in the project root to avoid false positives.
Install in
one command.
# Then tell your agent:
/skill-router