disable-model-invocation: true hides skill from session entirely instead of just preventing auto-invocation
Bug
Setting disable-model-invocation: true in a skill's SKILL.md frontmatter prevents the skill from appearing in the session's available skills list entirely. The skill cannot be invoked via slash command or by the model.
Expected behavior: The skill appears in the session and can be invoked via /skill-name, but the model never auto-invokes it based on conversation context.
Actual behavior: The skill is completely hidden from the session — it does not appear in the system-reminder skills list, and neither the user nor the model can invoke it.
Reproduction
- Create a skill at
~/.claude/skills/test-skill/SKILL.md:
---
name: test-skill
description: A test skill.
disable-model-invocation: true
---
# Test Skill
Do something.
- Start a new session. The skill will NOT appear in the available skills list.
- Change
disable-model-invocation: truetodisable-model-invocation: false(or remove the field entirely).
- The skill immediately appears in the available skills list (no restart needed).
Evidence
Tested with 5 skills that had disable-model-invocation: true — none appeared. Flipping them to false made them appear immediately mid-session. One skill (uam-analysis) had disable-model-invocation: false explicitly and always loaded correctly.
| Skill | disable-model-invocation | Appears in session? |
|-------|---------------------------|-------------------|
| napkin | not set | ✅ |
| guides-and-pricing-history | not set | ✅ |
| cowork-pm | no frontmatter | ✅ |
| uam-analysis | false | ✅ |
| ship | true → false | ❌ → ✅ |
| retro | true → false → true | ❌ → ✅ → ❌ |
| triage | true → false | ❌ → ✅ |
| tune | true → false → true | ❌ → ✅ → ❌ |
| portfolio-analysis | true → false | ❌ → ✅ |
Impact
Users who want slash-command-only skills (expensive operations like retrospectives, or dangerous operations that shouldn't auto-trigger) have no way to achieve this. The only options are:
disable-model-invocation: true— skill is hidden entirely (broken)disable-model-invocation: falseor unset — skill loads but model can auto-invoke it
Environment
- Claude Code CLI (macOS, Darwin 24.6.0)
- 9 custom skills in
~/.claude/skills/ - Multiple MCP servers connected (Notion, Slack, Granola, custom)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗