Installs a small local page, served by Bun on 127.0.0.1:4477, plus a Skill Manager.app the user can open from the Dock or Spotlight. Each toggle writes skillOverrides in ~/.claude/settings.json. New Claude Code sessions pick it up.
The setting it writes
{ "skillOverrides": { "<skill name>": "off" } }
| Value | Effect |
|---|---|
absent (on) |
Name and description listed; Claude can pick it on its own |
name-only |
Listed by name without the description. Cheaper, picked less reliably |
user-invocable-only |
Hidden from Claude; runs only when the user types /name |
off |
Not loaded |
The key is the name: in the skill's SKILL.md frontmatter, not always the folder name. The page drops a key when it is set back to on, so the file stays clean. If skillOverrides is not recognised, the user's Claude Code is too old: have them update. In an interactive claude terminal, /skills toggles the same setting.
Install
Requirements: macOS and Bun.
- Ask whether to pin the app to the Dock. Pinning restarts the Dock, so the icons flicker once.
- Run
sh <this skill's folder>/scripts/install.sh, adding--dockif they said yes. The script:- copies
assets/to~/.claude/skill-manager/ - backs up
~/.claude/settings.jsononce, tosettings.json.bak-skill-manager - builds
/Applications/Skill Manager.app, or~/Applicationswhen/Applicationsis not writable - stops a running server so the next open serves the new files
- copies
- Open it with
open "/Applications/Skill Manager.app". The app starts the server if it is down, waits for it, and opens the page in the default browser. The server keeps running in the background after that and starts again on the first open after a reboot.
Verify
Do not report success without these:
curl -s localhost:4477/api/skills | jq lengthmatches the number of skill folders with a SKILL.md.- Toggle one skill to
off(in the page or withcurl -XPOST localhost:4477/api/skills -d '{"<name>":"off"}'), checkjq .skillOverrides ~/.claude/settings.json, then set it back toonanddiffthe settings file against the backup. Other keys must be unchanged. - Cold start: kill the server (
lsof -t -iTCP:4477 -sTCP:LISTEN | xargs kill), open the app, and confirm the API answers again. - If a browser pane is available, look at the page in light, dark and at 375px wide.
Tell the user
- Where the app is. Apps in
~/Applicationsare not in the/Applicationslist people usually check in Finder. - That changes apply to new sessions, not the current one.
- That
offhides a skill from Claude Code but leaves it installed. Skills installed with theskillsCLI are symlinks into~/.agents/skills; remove those with that CLI. - Files:
~/.claude/skill-manager/(server.ts,index.html,open.sh,server.log).
Uninstall
lsof -t -iTCP:4477 -sTCP:LISTEN | xargs kill; rm -rf "/Applications/Skill Manager.app" ~/.claude/skill-manager
Then drag the icon off the Dock. The skillOverrides entries stay until removed from ~/.claude/settings.json.