skill-toggle — disable / enable skills
Tip
One command silences a skill permanently. State is stored separately from the plugin cache — claude plugin update never resets it. For agents, see /brewtools:agent-toggle.
Quick reference
| Command | Action |
|---|---|
/brewtools:skill-toggle disable brewui:image-gen | Hide a skill (renames SKILL.md → _SKILL.md) |
/brewtools:skill-toggle enable brewui:image-gen | Restore a hidden skill |
/brewtools:skill-toggle status | Show all disabled skills (merged global + project) |
/brewtools:skill-toggle list | List every installed skill with enabled/disabled state |
/brewtools:skill-toggle reapply | Re-apply state after manual plugin cache changes |
/brewtools:skill-toggle prune | Remove state entries for uninstalled plugins |
Target format: plugin:name — e.g., brewui:image-gen, brewcode:convention. Name without a plugin prefix triggers a clarifying question before any mutation.
When to use
- Clutter reduction — hide skills you never invoke to shrink Claude’s active context
- Quieter auto-triggers — disable skills whose trigger phrases collide with your normal workflow
- Project-specific overrides — scope a disable to the current repo without touching global state
- Keep plugins installed — the plugin stays updated; only the individual skill is silenced
Examples
# Disable a skill globally (default scope)
/brewtools:skill-toggle disable brewui:image-gen
# Natural language also works
"disable brewui:image-gen"
"hide the image-gen skill"
# Disable for current project only
/brewtools:skill-toggle disable brewcode:convention --scope=project
# Enable a previously disabled skill
/brewtools:skill-toggle enable brewui:image-gen
# Check what's currently disabled
/brewtools:skill-toggle status
# See everything — enabled and disabled
/brewtools:skill-toggle list
# After a plugin update, re-apply all stored disables
/brewtools:skill-toggle reapply
Interactive mode
Tip
Run with no args — /brewtools:skill-toggle — and a guided flow walks you through it. Explicit commands still skip the flow.
Four phases:
- Pick an op
One question, four options:
status,disable,enable, orlist. Pre-selected:disable. - Scan the catalog
All targets printed as one space-separated line of
plugin:nametokens. Use Ctrl+F / Cmd+F to search your terminal scrollback — no pagination, no multi-line clutter. - Resolve the target
Exact
plugin:nameor unique shortname runs immediately — no confirmation. Fuzzy phrase (“the noisy image one”) or ambiguous name triggers a single confirmation. - See the result
Every run ends with a status table: what’s disabled right now, plus a count of enabled skills. No guessing what state you’re in.
Note
Explicit commands skip the flow. disable brewui:image-gen runs directly — no questions asked. The interactive path only triggers when your intent is ambiguous.
How it works
- Parse intent
Extracts operation, scope, and target from your command or natural language. No plugin prefix? Asks which plugin owns the skill before touching anything.
- Validate target
Checks the plugin cache for both
SKILL.md(enabled) and_SKILL.md(disabled). Unknown plugin or missing skill — stops with an error, no state written. - Mutate state
Writes (disable) or removes (enable) the entry in the appropriate JSON state file — global or project scope. Atomic write via tmp + rename, no partial updates.
- Rename file
disable: renamesSKILL.md→_SKILL.mdin the plugin cache.enable: renames back. Claude Code ignores files that don’t matchSKILL.md. - Notify
Prints a result table: plugin, name, scope, action, result. Reminds you to run
/reload-plugins.
State files
| Scope | Path |
|---|---|
| Global (default) | ~/.claude/plugins/data/brewtools-claude-brewcode/toggle-state.json |
| Project | <cwd>/.claude/brewtools/toggle-state.json |
Project scope overrides global per key — a project-level enable wins over a global disable for the same skill.
State schema
{
"disabled": {
"brewui:image-gen": {
"kind": "skill",
"plugin": "brewui",
"name": "image-gen",
"disabled_at": "2026-04-16T10:30:00.000Z",
"last_applied_version": "3.5.2"
}
}
}
Surviving plugin updates
Note
The reapply-disables hook fires on every SessionStart. It detects when the plugin cache has a new version directory and re-applies all entries from the state file automatically. If a plugin was uninstalled or a skill file is missing, the hook reports the drift (plugin_not_installed, file_missing) in additionalContext — visible at the top of the new session.
Reload required
Warning
Run /reload-plugins or restart the session after any disable or enable. Claude Code reads skill definitions once at startup — in-flight changes take effect only after a reload.
Agent Toggle
Same disable/enable mechanic for agents instead of skills.
Brewtools overview
All brewtools skills in one place.
GitHub source
Source code and shared toggle helpers.
Updating plugins
/brewtools:plugin-update to check and update the brewcode plugin suite in one command.
See the FAQ for details.