disable-model-invocation: true hides skill from session entirely instead of just preventing auto-invocation

Resolved 💬 3 comments Opened Apr 5, 2026 by peanut-butter-tucker Closed Apr 9, 2026

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

  1. 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.
  1. Start a new session. The skill will NOT appear in the available skills list.
  1. Change disable-model-invocation: true to disable-model-invocation: false (or remove the field entirely).
  1. 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 | truefalse | ❌ → ✅ |
| retro | truefalsetrue | ❌ → ✅ → ❌ |
| triage | truefalse | ❌ → ✅ |
| tune | truefalsetrue | ❌ → ✅ → ❌ |
| portfolio-analysis | truefalse | ❌ → ✅ |

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:

  1. disable-model-invocation: true — skill is hidden entirely (broken)
  2. disable-model-invocation: false or 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)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗