| name | skill-valet |
| description | Use when the session feels bloated or slow, the user mentions "too many skills", "context bloat", "skill list is huge", asks why a skill disappeared or isn't available, or wants to manually park/unpark skill groups mid-session. skill-valet automatically moves unused user-skill directories out of ~/.claude/skills so the per-turn skill list stays lean, and brings them back the moment a prompt needs them. |
skill-valet
skill-valet is a UserPromptSubmit hook that keeps the per-turn skill list
lean. It keyword-classifies each prompt into skill groups (defined in
~/.claude/skill-valet.json), moves a group's skill directories back into
~/.claude/skills/ when the prompt needs them, and parks groups that have
been idle for park_after turns (default 20) into ~/.claude/skills-off/.
When invoked, do this
- Run
python3 <path-to>/skill_valet.py status to show the user which
groups are ON / PARKED / PARTIAL, the turn counter, and idle times.
- If the user asks why a skill is missing: check whether it belongs to a
parked group (status output) or sits in
~/.claude/skills-off/.
- Manual overrides on request:
on <group> / off <group> — force a group in or out now
all-on — restore every managed skill
pause / resume — kill switch: while paused the hook does nothing
- To change what is managed: edit
~/.claude/skill-valet.json — move a
skill name between always_on (never touched) and a group's skills
list, or tune the group's keywords.
Honest boundaries — state these when relevant
- Next-turn effect, not same-turn. A skill un-parked by this prompt
appears in the skill list from the NEXT turn onward. If the user needs a
parked skill right now, run
on <group> and ask them to re-send the
request.
- User skills only. Plugins, plugin skills, and MCP servers are bound
to session start — skill-valet cannot switch those mid-session; a restart
(or profile switcher) is required.
- Hooks are NEVER touched — by design. Hooks are the user's
deterministic safety layer; skill-valet has no code path that reads or
modifies them.
- Multi-session caveat. Directory moves are global: parking a group
affects every concurrently running Claude Code session on this machine.
- Fail-open. If the hook errors it silently does nothing (exit 0) — it
will never block a prompt. If behavior seems off, check
~/.claude/skill-valet-state.json and the config for JSON validity.