AgentSkills.site

Rule reference

Every rule the validator checks.

Grouped by class, in the order the checker runs them. Each traces to the specification, a runtime’s own documentation, or a verified GitHub issue — check a real skill against them instead of reading the list cold.

Frontmatter structure

  1. The file must open with a line containing only `---`, followed by YAML, followed by a closing `---`.

  2. An opening `---` was found with no matching closing `---` line after it.

  3. The block between the `---` delimiters is not valid YAML.

  4. The frontmatter must be a YAML mapping (`key: value` pairs) at the top level, not a list or a scalar.

  5. WarningSKM-F05: Duplicate top-level key in frontmatter

    The same key appears twice at the top level — YAML keeps only the last value, silently.

  6. WarningSKM-F06: Non-standard whitespace or characters in frontmatter

    Tabs, a byte-order mark, or smart-quote characters were found in the frontmatter block.

The name field

  1. `name` is one of the two required fields.

  2. The specification caps `name` at 64 characters.

  3. `name` may contain only lowercase letters, digits, and hyphens.

  4. The specification forbids leading, trailing, and consecutive hyphens in `name`.

  5. The spec requires `name` to match the folder the SKILL.md lives in — a mismatch is a silent failure.

The description field

  1. `description` is the other required field, and the sole basis an agent uses to decide whether to load the skill.

  2. The specification caps `description` at 1024 characters.

  3. An empty description can't do the job of triggering the skill in any runtime.

The body

  1. The specification recommends keeping SKILL.md under 500 lines and moving detail into `references/`.

  2. The specification recommends keeping the activated body under roughly 5,000 tokens.

The rest of the field set

  1. WarningSKM-K01: Unknown top-level frontmatter field

    This field isn't in the documented portable field set (name, description, license, compatibility, metadata, allowed-tools) or a known runtime extension.

  2. WarningSKM-K02: `metadata` is not a map of strings to strings

    The specification defines `metadata` as a map of string keys to string values.

  3. The specification caps `compatibility` at 500 characters.

Portability across runtimes

  1. `paths` scopes a skill to files matching glob patterns — it works only in Cursor, and it doesn't just get ignored elsewhere.

  2. The specification marks `allowed-tools` experimental, with support that 'may vary between agent implementations.' Don't treat it as a security control.

  3. Runs the skill as a forked subagent — a Claude Code mechanism with no equivalent elsewhere.

  4. Dependency gating, tool-dispatch, and invocation controls specific to OpenClaw.

  5. Conditional activation against available toolsets — a Hermes Agent mechanism.

  6. 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.

  7. 1,024 characters is the spec ceiling, but OpenClaw's own authoring guidance asks for under 160 and practical Claude Code reports suggest under 200 — a description written for the tightest constraint is safe everywhere.

Filename and directory

  1. `SKILL.md` is case-sensitive on the filesystems that enforce it — `skill.md` is a documented cause of a skill silently never appearing.