Frontmatter Schema Reference

May 9, 2026 · View on GitHub

Canonical source of truth for YAML frontmatter fields in Ring skills, agents, and commands. Aligned with the Anthropic-canonical loader: anything outside the fields documented here is silently ignored at load time.

The validator (default/hooks/validate-frontmatter.py) enforces this schema. The session-start hook (default/hooks/generate-skills-ref.py) parses skill name and description to build the skills quick reference.


Skills (SKILL.md)

Skills live in {plugin}/skills/{name}/SKILL.md.

Required Fields

FieldTypeDescription
namestringSkill identifier. MUST use ring: prefix (e.g., ring:codereview). Lerian convention is mandatory per CLAUDE.md.
descriptionstringWHAT the skill does + WHEN to invoke + WHEN to skip, condensed. Anthropic loader caps description at 1,536 characters. Target ≤500 chars to leave headroom.

Optional Fields

Include only if the skill actually uses them.

FieldTypeDescription
argument-hintstringShort syntax hint shown in the skill picker
allowed-toolslistRestricts tool access for the skill invocation
disable-model-invocationboolIf true, skill must be explicitly invoked (not auto-selected)
user-invocableboolMarks skills the user can invoke directly via slash command
pathslistPath globs scoping the skill to specific files
modelstringOverride model for the skill

Removed Fields

Stripped during the 2026-05 Anthropic-canonical refactor. The loader silently ignores them; the validator no longer warns about their absence.

FieldMigrated To
trigger## When to use body section
skip_when## Skip when body section
NOT_skip_when## Skip when body section (as exception bullets)
prerequisites## Prerequisites body section
verificationBody content (typically inside ## Skip when or step-level checks)
sequence## Sequence body section
related## Related body section
typeRemoved entirely (was skill-irrelevant)
tagsRemoved entirely
when_to_useFolded into description
output_schema / input_schemaRemoved (skill-level schemas were unused by the loader)

Agents (agents/*.md)

Agents live in {plugin}/agents/{name}.md.

Required Fields

FieldTypeDescription
namestringAgent identifier. MUST use ring: prefix (e.g., ring:code-reviewer)
descriptionstringWhat the agent does — role and scope

Optional Fields

FieldTypeDescription
modelstringOverride model for this agent
toolslistRestricts tool access for the agent invocation
colorstringDisplay color in the agent picker

Removed Fields

FieldNotes
typeWas used to label specialist/reviewer/orchestrator. Silently ignored by the loader; removed in the 2026-05 refactor. Express role in description instead.

Commands (commands/*.md)

Required Fields

FieldTypeDescription
namestringCommand identifier. MUST use ring: prefix (e.g., ring:my-command)
descriptionstringWhat the command does

Optional Fields

FieldTypeDescription
argument-hintstringShort syntax hint
allowed-toolslistRestricts tool access
modelstringOverride model

Validator

default/hooks/validate-frontmatter.py checks:

ConditionBehavior
Missing required field (name, description)Error
Skill name missing ring: prefixError
Unknown fieldWarning

The validator was simplified in the 2026-05 refactor to align with Anthropic-canonical fields only — it no longer warns about missing trigger/skip_when.


Generator

default/hooks/generate-skills-ref.py parses skill frontmatter (name + description only post-refactor) to build the SessionStart skills quick reference. It groups skills into categories from directory name patterns.


Body Section Convention

Trigger-style content that used to live in frontmatter now lives in body markdown sections, immediately after the H1, in this canonical order (omit any section without source content):

## When to use
- {bullets describing trigger conditions}

## Skip when
- {bullets describing exclusions}

## Sequence
**Runs before:** ring:foo, ring:bar
**Runs after:** ring:baz

## Related
**Complementary:** ring:x
**Similar:** ring:y
**Skills orchestrated:**
- ring:z

## Prerequisites
{content}

If you want to express WHEN/WHEN-NOT/SEQUENCE/RELATED/PREREQUISITE semantics in a skill, put them here — not in frontmatter.