Versioned capability modules that extend Claude Code with domain procedures, loaded on demand rather than held in the base prompt.
How it works
Each skill is a self-contained module with frontmatter metadata describing what it does and when it applies. The default leaves both invocation surfaces open: the model can auto-route to a skill on a description-match for a task whose phrasing fits, and the user can invoke the same skill directly by typing its slash name. Two opt-out flags split the postures: one hides a skill from the slash menu so only the model can load it; the other removes the skill from the model-routing surface so only the user can invoke it. The default of both-on is what makes a skill discoverable from two directions; the opt-outs commit the skill author to one direction when the other does not fit the use case.
Why it matters
A two-axed integration surface means a skill is discoverable through both an articulated request and a natural-language one; either path resolves the same module without the skill author choosing between user-facing and agentic flows. The trade-off shifts with posture: a model-only skill requires a description sharp enough for the model to find it, with no fallback if the description misses; a user-only skill requires the user to remember the slash name, with no model assistance when they forget. Description tuning is a write-time surface for the model-routing axis; slash-name discovery is a write-time surface for the user-invocation axis. Both are real costs, in different directions.
In practice
A skill named summarize-changes with a description matching "review uncommitted changes" loads automatically when the user asks "what did I change?" and is also invokable directly as /summarize-changes. The same skill answers to both surfaces without configuration change. A user-only /deploy skill (configured to disable model invocation) is invokable only by typing the slash name; the model cannot route to it even if the user says "deploy this" instead.
Practical considerations
Three invocation postures are configurable from frontmatter metadata. The default (no override) leaves a skill discoverable through both the model's description-match routing and the user's direct slash-name invocation. Setting user-invocable to false removes the skill from the slash menu, so only the model can load it (the slot for background-knowledge modules that should not surface as user-facing commands). Setting disable-model-invocation to true removes the skill from the model's description-match routing, so only the user can invoke it (the slot for workflows with side effects or precise timing). An optional argument-hint field renders autocomplete metadata when the user types the slash name; it is decoration, not gating.
Related standards and prior art
- Claude Code: skills ยท continuously updated capability modules loaded on demand via frontmatter metadata; user-invocable defaults true; disable-model-invocation defaults false
Defined by Ready Solutions AI