Manage AI CLI skills across Claude Code, Gemini CLI, Codex CLI, Aider, Amp, and Factory Droid — profiles, disable/enable, catalog generation.
Running 100+ Claude Code skills? Your context window is leaking. Claude Code injects every installed skill name into every session. With 450 skills, that's thousands of tokens burned before your first message.
skillswitch fixes this — and works across every major AI CLI.
Skillswitch is a command-line skill manager for AI coding CLIs — Claude Code, Gemini CLI, Codex CLI, Aider, Amp, and Factory Droid. It disables the skills you're not using so they stop consuming your context window, and lets you snapshot enable/disable sets as named profiles you switch between per project.
Claude Code injects the name and description of every installed skill into every session. Install 100+ skills and you burn thousands of tokens before you type a word. Skillswitch turns skills off without deleting them (they move to a .disabled/ folder — fully reversible), so a lean profile can run 40 skills instead of 400.
- vs. deleting skills manually — deleting is destructive and you lose the skill. Skillswitch moves skills to
.disabled/and restores them onenable. Nothing is lost. - vs. editing config by hand — hand-editing
blocklist.jsonor moving files works until you want a different set per project. Skillswitch stores profiles and switches the whole set in one command with a--dry-runpreview. - vs. one-CLI tools — most helpers target Claude Code only. Skillswitch uses the same commands across six CLIs via
--for <cli>.
- You have 50+ skills or plugins installed and your context feels bloated.
- You want different active skill sets for different projects (a "dev" profile vs a "writing" profile).
- You use more than one AI CLI and want one tool to manage them.
- You want to see, in one command, exactly how many skills are active vs disabled.
Does Skillswitch delete my skills? No. Standalone skills move to a .disabled/ subfolder; plugin skills are turned off via Claude Code's own blocklist.json. Everything is reversible with enable.
Does it send my data anywhere? No telemetry, no auth, no network. It only reads and moves local files.
Which CLIs does it support? Claude Code, Gemini CLI, Codex CLI, Aider, Amp (Sourcegraph), and Factory Droid. Default target is Claude Code; use --for <cli> for the rest.
How do profiles work? skillswitch profile create dev snapshots your current enabled set. skillswitch profile use dev activates it. profile diff and --dry-run show what changes before it happens.
Will it help my context window? It removes disabled skills' names and descriptions from what the CLI injects each session. Fewer active skills = fewer tokens spent on skill listings before your first message.
npm install -g skillswitch
# or run without installing:
npx skillswitch <command>| CLI | Flag | Skill location |
|---|---|---|
| Claude Code | --for claude (default) |
~/.claude/skills/ + plugins |
| Gemini CLI | --for gemini |
~/.gemini/skills/ + ~/.agents/skills/ |
| Codex CLI | --for codex |
~/.agents/skills/ |
| Aider | --for aider |
~/.aider/skills/ (managed externally) |
| Amp (Sourcegraph) | --for amp |
~/.config/amp/skills/ + ~/.agents/skills/ |
| Factory Droid | --for droid |
~/.factory/droids/ + ~/.factory/commands/ |
skillswitch detect # show which CLIs are installed
# Claude Code (default)
skillswitch status # how many skills are active vs disabled
skillswitch list # all skills by source
skillswitch list --disabled # only disabled skills
skillswitch search <query> # find skills by name or description
skillswitch disable <name> # disable standalone skill (substring match)
skillswitch disable --plugin <id> # disable entire plugin
skillswitch enable <name> # re-enable standalone skill
skillswitch enable --plugin <id> # re-enable entire plugin
skillswitch profile create <name> # snapshot current enabled set
skillswitch profile use <name> # activate a profile
skillswitch profile use <name> --dry-run # preview what would change
skillswitch profile list # list saved profiles
skillswitch profile show <name> # see what's in a profile
skillswitch profile delete <name> # remove a profile
skillswitch profile rename <old> <new> # rename a profile
skillswitch profile copy <src> <dst> # duplicate a profile
skillswitch profile diff <name> # what changes on activate
skillswitch profile export <name> # export profile to JSON
skillswitch profile import <file> # import profile from JSON
skillswitch profile validate <name> # detect ghost skills
skillswitch catalog # generate ~/.claude/SKILLS.md
skillswitch audit # find duplicates and stale disabled skills
# Other CLIs — use --for <cli>
skillswitch --for gemini list
skillswitch --for codex disable tdd
skillswitch --for amp search coding
skillswitch --for droid status
skillswitch --for aider list
skillswitch aider-config # print the read: block for ~/.aider.conf.yml
# See what's installed
skillswitch detect
# Start with everything enabled (your current state)
skillswitch profile create full # save the 450-skill state
# Trim down for dev work
skillswitch disable --plugin aso-skills@aso-skills
skillswitch disable ads # disables all skills with "ads" in the name
skillswitch profile create dev # save the lean set
# Switch contexts
skillswitch profile use dev # 48 skills active
skillswitch profile use full # back to 450
# Manage skills for other CLIs
skillswitch --for gemini list
skillswitch --for gemini disable research
skillswitch --for codex disable tdd
# Discover what you have
skillswitch catalog # generates ~/.claude/SKILLS.md
# Then in Claude: @~/.claude/SKILLS.md- Standalone skills (
~/.claude/skills/*.md): disabled by moving to.disabled/subdirectory — always reversible, nothing deleted - Plugin skills (
~/.claude/plugins/): disabled by writing to Claude Code's nativeblocklist.json - Other CLIs: skill files moved to
.disabled/subdirectory inside their skills directory - Profiles stored in
~/.claude/skillctl/profiles.json
No telemetry, no auth, no network — pure local filesystem tool.
MIT