Skill Frontmatter¶
A skill is .ai-rulez/skills/<id>/SKILL.md: YAML frontmatter followed by the instructions. generate carries the
frontmatter into each preset's skill directory with its original types. A nested metadata: map stays a map,
disable-model-invocation: true stays a boolean, and last_verified: 2026-10-01 stays a date.
---
name: release-notes
description: Use when writing release notes for a tag.
license: MIT
compatibility: Needs git and gh
allowed-tools: Bash(git:*) Read
disable-model-invocation: true
paths:
- "CHANGELOG.md"
metadata:
owner: team-a
reviewed: { by: alice, date: 2026-10-01 }
tags: [docs, release]
---
The parsed YAML of license, compatibility, allowed-tools, metadata, disable-model-invocation and any other
key is equal in source and output. Collections are written in block style, aliases are resolved, comments are dropped,
and keys are sorted, so output is deterministic.
What each preset writes¶
| Key | Claude Code (.claude/skills) |
Cursor (.agents/skills) |
Every other preset's skill tree |
|---|---|---|---|
name, description |
yes | yes | yes |
delivery (an ai-rulez key, see below) |
no: removed before writing | no | no |
license, compatibility, metadata, allowed-tools |
yes | yes | yes (the Agent Skills specification fields) |
paths (or globs) |
yes, gates the skill to matching files | yes | no: no other tool documents a skill paths key |
disable-model-invocation |
yes | yes | Codex: agents/openai.yaml, see below |
user-invocable |
yes | no | no |
any other key (model, context, hooks, argument-hint, ...) |
yes | no | no |
"Every other preset" means Codex, Copilot, OpenCode, Gemini, Devin, Cline, Antigravity, Xum, Baz and the shared
.agents/skills tree of agents_md. Keys a tool does not document are not written to its tree: some consumers reject
unknown keys (Claude.ai uploads and the Skills API accept only name, description, license, compatibility,
metadata and allowed-tools). Claude Code receives every key, like the generate --plugin bundle, which copies
SKILL.md verbatim.
Vendor facts behind the table (verified 2026-10-04): Claude Code documents paths, disable-model-invocation,
user-invocable, allowed-tools, license, compatibility (up to 500 characters) and metadata as skill frontmatter
and ignores unknown fields; the Agent Skills specification defines name
(64 characters), description (1024 characters), license, compatibility, metadata (string keys and values) and
allowed-tools (space-separated string); Cursor documents paths (with globs as a legacy fallback),
disable-model-invocation and metadata.
Invocation keys¶
user-invocable and disable-model-invocation are decided by the author. ai-rulez never overwrites a value you set;
yes, no, on, off, 1 and 0 are accepted and written as a boolean.
- Default: a skill is user-invocable (Claude Code's default), so the key is not written and the skill appears in
the
/menu. - Hide all skills from the menu:
[claude.skills] hide_from_menu = truewritesuser-invocable: falseon skills that do not set the key. A skill with its ownuser-invocable: truestays visible. - Commands are rendered as skills and keep
user-invocable: trueunless the command sets the key. argument-hintis passed through on skills again (it is a documented skill field and skills are user-invocable). The warning that called it inert was removed.- Codex has no
SKILL.mdkey for this.disable-model-invocation: truewrites.agents/skills/<id>/agents/openai.yamlwithpolicy: { allow_implicit_invocation: false }, so Codex runs the skill only when it is named with$skill.
Path-gated skills¶
paths (or globs) on a skill makes Claude Code and Cursor load it only when matching files are in play. Patterns use
the same syntax as rule paths. The other tools ignore the key.
Dynamic loading (delivery)¶
delivery decides how a skill reaches the agent: static (default) writes it into every harness skill tree, served
leaves it out of the trees and serves it over MCP on demand, and both does both. It is an ai-rulez key: it is removed
from the generated frontmatter and never carried into a skill tree.
---
name: db-migrations
description: Plan and run database schema changes safely. Use when changing a table.
delivery: served
triggers: [schema change, alembic migration, add a column]
---
The skill's own delivery wins. A role's delivery, [domains.<name>] delivery and [skills] delivery set the
default otherwise, so a project can serve a whole domain or every skill and mark the few core skills static. A
harness that cannot call MCP tools keeps served skills as static files (warning AR992), and served skills need an
[[mcp_servers]] entry running ai-rulez mcp --serve-skills (warning AR993). See
Dynamic skill loading.
Size limits¶
generate and tokens warn when a root instruction file exceeds a limit the tool documents. See
Rules: size limits.