How a skill gets used once it is installed: by the model on its own or by you, and what it brings with it. How skills are found and listed is on the Skill discovery page.
| Question | Codex CLIchecked at 0.162.1 | Claude Codechecked at 2.1.299 | Cursor Agentchecked at 2026.10.12-d47ca18 | OpenCodechecked at 2.0.29 | pichecked at 1.2.0 |
|---|---|---|---|---|---|
| The model choosing a skill | Yes. The model sees the skill list and is told to use a skill whenever the task clearly matches its | Yes. Claude reads the listed | Yes. Skills are applied automatically by default: the agent sees each skill's | Yes. The model chooses a skill by matching the task against the listed | |
| Invoke a skill yourself | Type Common environment variable names such as There is no CLI flag to preload a skill. | Type Non-interactive runs work the same way: | Type There is no CLI flag to preload a skill; put | Mention | Type
|
| Pass arguments | Partly There is no argument syntax and no placeholder such as | Yes. Text after the skill name replaces Since 2.1.301, named-argument substitution fills at most 64 declared names and limits each name to 64 characters. This is an invocation limit, not a skill-description or body limit. | Partly Anything you type after | Partly There are no argument placeholders such as | |
| What loads when a skill is used | When you invoke a skill with The listing budget doesn't apply to the loaded | On invocation the rendered SKILL.md body enters the conversation as one message and stays there for later turns. Before that, After auto-compaction, Claude Code re-attaches each invoked skill's most recent content, keeping its first 5,000 tokens within a 25,000-token total.
| Using a skill puts its | OpenCode adds the Markdown body without frontmatter, wrapped in | With |
| Tools, permissions and model | Not supported No. Codex reads only The bundled skill-creator validator accepts | Yes.
Workspace trust doesn't gate Since 2.1.304, plugin-only hook policy also withholds allowed-tools from a main-conversation skill whose hooks are excluded. | Not supported No. Cursor's | ||
| Run in its own subagent | Not supported No. A skill always runs in the current conversation; there is no frontmatter option to fork it into a subagent. The model is told to read skill instructions itself rather than hand them to a subagent, though subagents can still do task work if the skill says to. | Yes. Set With Background forks run with the narrower background-subagent tool set, and their edits aren't covered by | Not supported No. A skill runs in the current conversation, either for one message or as a sticky Custom Mode; there is no frontmatter option to run it in a forked context or subagent. For isolated work, define a subagent (the built-in | Not supported No. A skill always runs in the current conversation, either as instructions the model reads or as text added to your message. There is no frontmatter field for running it in a subagent or a forked context. |
Notes and sources
Codex CLI, 10 sources
- Codex does not implement Claude's disable-model-invocation SKILL.md field; the analogous policy lives in agents/openai.yaml with inverted polarity.
- No cited first-party contract establishes a separate per-skill switch for explicit user invocation.
- Source-observed in Codex 0.160.1 (d27764b82f7118f674371e6d6e76271d9d606edb): policy.allow_implicit_invocation: false excludes the entire skill row before initial listing budget allocation. Explicit invocation still consumes conversation context when instructions load.
- Plugin submission identity is plugin-name:skill-name (combined length <=64; names unique within plugin). This does not establish exact typed plugin invocation syntax.
- Local equal-name skills are not merged and both can appear in selectors; ambiguous bare-name resolution is unverified. See docs/research/plugin-skill-namespaces.md.
Invoke a skill yourself, 4
What loads when a skill is used, 4
Tools, permissions and model, 4
Run in its own subagent, 2
Claude Code, 4 sources
- The two controls are independent: a skill may be model-only, user-only, available through both channels, or unavailable through both invocation channels.
- Plugin skills use /plugin-name:skill-name; this namespace is supplied by plugin loading, not by copying standalone skill folders. See docs/research/plugin-skill-namespaces.md.
- 2.1.304 resends the catalog after compaction; /reload-skills sends only new or changed skills. Plugin reloads in resumed/cloud sessions no longer resend the entire list repeatedly.
- 2.1.304 limits skill hooks per source to 1,024 hooks and 16,384 matcher characters; under plugin-only hook policy, a main-conversation skill with excluded hooks no longer receives allowed-tools.
- 2.1.304 fixes Directory-plugin skills picked from Cowork cloud’s slash menu not running as commands. This hosted fix does not establish local filesystem discovery behavior.
The model choosing a skill, 1
Invoke a skill yourself, 1
What loads when a skill is used, 1
Run in its own subagent, 2
Cursor Agent, 4 sources
- The reviewed Cursor contract does not establish a user-invocable equivalent for independently disabling explicit slash invocation.
The model choosing a skill, 1
Invoke a skill yourself, 4
Pass arguments, 2
What loads when a skill is used, 1
Tools, permissions and model, 2
Run in its own subagent, 1
OpenCode, 8 sources
pi, 5 sources
- Pi advertises discovered skills to the model and loads them with read.
- --no-skills and enableSkillCommands are global controls; the cited contract does not establish a per-skill automatic-only policy analogous to disable-model-invocation.