disable-model-invocation: true does not suppress skill descriptions from context
Summary
Skills with disable-model-invocation: true in their YAML frontmatter still have their descriptions loaded into the system-reminder skill list in every conversation. The flag correctly prevents auto-invocation by the model, but the descriptions still consume context tokens unnecessarily.
Expected behavior
Skills with disable-model-invocation: true should NOT appear in the skill description list injected into the system-reminder. These are user-only skills (invoked via slash commands) — the model never needs to see their descriptions since it can't invoke them.
Actual behavior
All skill descriptions are loaded into context regardless of the disable-model-invocation flag. For a plugin with 23 skills where 6 are process skills marked disable-model-invocation: true, this adds ~200-300 unnecessary tokens per conversation.
Reproduction
- Create a plugin skill with this frontmatter:
---
name: my-process-skill
description: This description should not appear in context
disable-model-invocation: true
---
- Start a conversation with the plugin loaded
- Observe the system-reminder skill list — the skill's description is present
Environment
- Claude Code v2.1.71
- macOS (Darwin 25.2.0)
Additional context
The disable-model-invocation flag was added specifically for process skills that are only meaningful when invoked by the user via slash commands (e.g., /work, /plan). The model has no reason to see these descriptions since it cannot auto-invoke them. Suppressing them from the description list would reduce context overhead for plugins with many skills.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗