Skill Invocation Reachable
A skill must stay invocable by someone. Two SKILL.md frontmatter gates control who can invoke it: disable-model-invocation: true stops the model from auto-invoking (only the user can, via /name), and user-invocable: false hides it from the / menu (only the model can invoke it). Setting both makes the skill unreachable — the model cannot invoke it and neither can the user, so the skill is dead config that loads for no path. Set at most one of the two gates so at least one invoker remains.
Antipatterns
- Both gates closed. Declaring
disable-model-invocation: trueanduser-invocable: falsetogether, on the assumption each independently narrows access — together they remove every invoker and the skill can never run.
Pass / Fail
Pass
---
description: Deploy the service to production.
disable-model-invocation: true
---
Fail
---
description: Deploy the service to production.
disable-model-invocation: true
user-invocable: false
---
Limitations
Forward-guards a specific dead-config contradiction: both invocation gates set to their access-removing values in one SKILL.md. The combination is rare in practice — the check is a cheap structural guard, not a high-frequency finding. It does not evaluate skillOverrides from settings, which can change invocability out-of-band.
