SKM-P06 · Portability
`disable-model-invocation` isn't recognised everywhere the same way
Turns off automatic selection in Cursor, OpenClaw, and Claude Code. Codex uses a different mechanism entirely (`policy.allow_implicit_invocation` in `agents/openai.yaml`); Hermes documents nothing.
What the rule is
`disable-model-invocation: true` keeps a skill reachable by explicit command while removing it from automatic, model-initiated selection. It's recognised in Cursor, OpenClaw, and Claude Code — and in OpenClaw it additionally hides the skill from the `$` picker.
Codex expresses the same intent a different way entirely: `policy.allow_implicit_invocation: false` in a separate `agents/openai.yaml` file, not this frontmatter field. That tells us what Codex's own control for this IS — it doesn't by itself tell us what Codex's frontmatter parser does with an unrecognised `disable-model-invocation` key. We don't have a citation confirming Codex silently ignores it rather than warning on it or rejecting the file; the honest answer is that Codex's handling of this specific field isn't documented. Hermes Agent documents nothing on this either way.
`disable-model-invocation` sits at the top level of the frontmatter, and the official reference validator hard-fails on any top-level field outside its documented set — this one included. That's a genuine strict-conformance issue independent of what any live runtime does with it.
Where it comes from
- Claude Code — official skills documentationRuntime documentation
- Cursor — official skills documentationRuntime documentation
- OpenClaw — official skills documentationRuntime documentation
- Codex — official skills documentationRuntime documentation
- Agent Skills compatibilityAgentSkills.site
- Agent skills not workingAgentSkills.site
Strict spec conformance
Non-conformant. The official reference validator (skills-ref) rejects this — tested directly, not inferred from severity.
This is a separate question from the severity above and from which runtimes enforce it below — a rule can be a real, working extension in its home runtime while the reference validator still rejects the file outright, or vice versa. Both facts are reported, never one inferred from the other.
Which runtimes enforce it
| Runtime | Effect | Note |
|---|---|---|
| Claude Code | Enforced (home runtime) | Recognised — keeps the skill reachable by command while removing it from automatic selection. |
| Codex | Not documented | Codex's own documented mechanism for the same intent is a separate field — `policy.allow_implicit_invocation` in `agents/openai.yaml` — but that only establishes what Codex DOES read, not how its frontmatter parser handles an unrecognised `disable-model-invocation` key specifically. Not documented either way. |
| Cursor | Enforced (home runtime) | Recognised — same effect as in Claude Code. |
| OpenClaw | Enforced (home runtime) | Recognised, and also hides the skill from the `$` picker. |
| Hermes Agent | Not documented | Not documented for Hermes Agent. |
How to fix it
- For Codex specifically, use `policy.allow_implicit_invocation: false` in `agents/openai.yaml` instead of (or in addition to) this field — that's the mechanism Codex's own documentation actually describes.
- Know that migration tooling sets this field automatically — Cursor's `/migrate-to-skills` and OpenClaw's Claude-import both write `disable-model-invocation: true` on converted commands, which is often the reason a migrated skill never fires on its own.
Elsewhere
- SKILL.md, the formatThe full frontmatter field table this rule is drawn from.
- Agent Skills Not WorkingThe diagnostic reference this rule’s portability and failure evidence comes from.
- All rulesEvery check the validator runs, grouped by class.