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.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add SDeenAdmin/skill-valet --skill skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Skill?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sdeenadmin-skill)More formats (shields.io, HTML) on the badges page.
---
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
1. Run `python3 <path-to>/skill_valet.py status` to show the user which
groups are ON / PARKED / PARTIAL, the turn counter, and idle times.
2. 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/`.
3. 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
4. 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.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!