[Feature Request] Add ability to disable individual Claude plugin skills
Status Open
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 19 comments · opened Dec 20, 2025
Bug Description
I want to be able to disable claude plugin skills individually - for example, I don't find commit-commands:commit-push-pr or commit-commands:clean_gone useful, I just want :commit
Environment Info
- Platform: darwin
- Terminal: iTerm.app
- Version: 2.0.75
- Feedback ID: b9c26774-de01-49c2-98ff-767d9bcb65bf
19 Comments
+1000
I strongly support this feature request! 👍
I'm using the
commit-commandsplugin and have the exact same issue. Here's my specific use case:Current Problem:
/commitcommand for creating atomic commits/commit-push-prcommand appears as the first suggestion when I type/commit/commitcommandWhy I don't want
/commit-push-pr:Proposed Solution:
Allow users to disable individual commands within a plugin, perhaps through configuration like:
This would give users fine-grained control while keeping the useful parts of plugins active.
The autocomplete ordering issue makes this particularly urgent - having unwanted commands appear first in the suggestion list creates constant friction in the development workflow.
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
Still occurring, so ping to keep alive. Anthropic don't ever appear to look at any of these issues though so whether there's any point in keeping it alive is debatable :-)
Anthropic, take a look pls
++
Strong +1 here as well. A good example is the superpowers set of skills. I don't always want to go through the full-fledged framework it imposes. And it is really cumbersome to always explicitly have to instruct Claude Code to explicitly not use those.
+1
Would also be useful to be able to selectively disable individual LSP from a plugin - could be a separate issue though.
I hade this problem so that's why I built this Mycelium
One of the features is exactly this. creates a symlink of the plugin and it enables or disable enabled different skills, agents and hooks individually.
Hope it helps.
!Image
https://github.com/bytemines/mycelium
+1 for me.
We rarely use all skills so loading all doesn't help.
Until per-skill disable is supported:
Workaround 1 — CLAUDE.md blocklist:
This prevents Claude from invoking the skills you don't want, though they still appear in
/skills.Workaround 2 — PreToolUse hook to block specific skills:
This blocks specific skills at the tool level. Claude will see them in the list but can't invoke them.
Workaround 3 — Fork the plugin:
If you want full control, fork the plugin and remove the unwanted skill directories:
Then update
extraKnownMarketplacesin settings.json to your fork.Adding a plugin-author data point: this gap bites the people shipping skills, not only the consumers.
I maintain a plugin (workflow-secretary-suite) that ships ~20 skills as one coherent suite. Every consumer session loads all of those descriptions (~2k tokens) at startup, and there is nothing I can ship — and nothing a consumer can set — that trims it per skill:
skillOverrides(name-only/user-invocable-only/off) is ignored for plugin skills, under both bare and plugin-namespaced keys. Confirmed by measurement on real installs, and now documented ("Plugin skills are not affected byskillOverrides", skills.md). #76156 traces it to the resolver hard-codingsource === "plugin"to"on".claude plugin disableis all-or-nothing per plugin.disable-model-invocation: truefrontmatter does travel with the plugin, but it is the wrong tool for most skills: it removes the skill from model invocation entirely — including dispatch from other skills via the Skill tool — so a suite whose skills invoke each other cannot use it on those, and there is no shipped equivalent ofname-only.plugin.jsonsilently ignores unknown fields, so nothing can be declared there either (claude plugin validatenamesskillOverridesandpermissionsas ignored).Either direction would resolve it:
skillOverridesfor plugin skills under namespaced keys (plugin:skill), orplugin.jsonkey), e.g.load: name-only.The workaround available to authors today is splitting one suite into several plugins purely so consumers get coarse on/off granularity — packaging noise standing in for a settings key.
Still reproducible on 2.1.224.
Please consider adding this feature. Currently, I added a
permissionsentry inside~/.claude/settings.json:This is the exact use case I have. I like some of the superpowers skills, but others I don't want to use and they end up hijacking my workflow.
100%. On the personal front I just gave up on plugins since I really keep most of them internal, and instead I have deploy and enroll wrappers so that I can deploy my stuff to a local directory on the machine, then symlink or inject to cmdline args what I need into the relevant repos' sessions. This applies to MCPs, SKILLS, env vars, everything.
I feel like a lot of folks either work in a differing mode, or the devs build around it themselves, in that they work the same way with the same toolsets and approaches system-wide or run each in completely isolated environments (same thing really). I personally have a "dev box" that is LLM owned and managed and break out a huge number of projects into work trees, sharing a lot of backbone between them such as hypervisor, networking, storage, etc etc, but the projects are literally on every side of the spectrum as far as code, approach, language, and anything else you can imagine go. When I stopped loading "everything" at once I saw a notable improvement in context savings not dragging all of the tools around into unrelated sessions and allows me to avoid tailoring things heavily per-project yet still allowing me to have a customized cherry-picked configuration that is automatically detected/used. Aside from context savings on the tool load side it also stops sessions from getting curious and lets me replace that bloat with useful things instead - I use a custom launch wrapper with logics such as "if this condition is true, or this is loaded and this isnt, if repo starts with the term Donkey, use these extra MCP launch args, re-stage vars, drop symlinks, whatever" which literally replaces negative value crud with high value context and still saves me.
Might be a rant or just my weird ADHD way of working, but sharing in case it helps anyone else or helps improve the harness itself!
Numbers from one real setup, in case they help prioritise this (Claude Code 2.1.280, measured 2026-09-23).
compound-engineering alone puts 27 model-visible skills into every session's skill listing (the listing attachment is about 8.0k characters smaller without it, table below). Over the last 30 days of our sessions, 4 of those 27 were never invoked and 9 more were invoked five times or fewer; the rest carry nearly all the use. We would keep the plugin and hide the tail.
Four headless sessions in scratch projects, comparing the
skill_listingattachment each one recorded:| Project
.claude/settings.json| compound-engineering entries | Listing vs control ||---|---|---|
| none (control) | all present | - |
|
{"enabledPlugins": {"compound-engineering@every-marketplace": false}}| none | about 8.0k chars smaller ||
{"skillOverrides": {"compound-engineering:ce-bakeoff": "user-invocable-only"}}| all present | byte-identical ||
{"permissions": {"deny": ["Skill(compound-engineering:ce-bakeoff)"]}}| all present | byte-identical |So the only lever today is the whole plugin, per project. The smallest change that would cover our case: accept
<plugin>:<skill>keys inskillOverrides, with the same four values it already takes for user, claude.ai-synced and bundled skills, at user and project scope.Any updates about this feature?