Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Frontmatter Compatibility

SKILL.md files use YAML frontmatter to declare metadata. The base standard comes from the Agent Skills spec, but each platform extends it with its own fields. This page documents the current state of compatibility across tools.

Base Standard (agentskills.io)

FieldRequiredConstraints
nameYesMax 64 chars. Lowercase letters, numbers, hyphens only. Must match directory name.
descriptionYesMax 1024 chars. Non-empty.
licenseNoLicense name or reference.
compatibilityNoMax 500 chars. Environment requirements.
metadataNoArbitrary key-value map.
allowed-toolsNoSpace-delimited tool list. (Experimental)

Platform Extensions

These fields are valid on their respective platforms but will be silently ignored (or warned about) elsewhere.

FieldPlatformPurpose
disable-model-invocationClaude CodeUser-only invocation (no auto-trigger)
user-invocableClaude Codefalse = model-only background knowledge
argument-hintClaude CodeHint for argument parsing
contextClaude Codefork = run in isolated subagent
agentClaude CodeSpecify subagent type (e.g., Explore)
hooksClaude CodeLifecycle hooks scoped to the skill
excludeAgentVS Code CopilotTarget coding-agent vs code-review

Codex uses a separate agents/openai.yaml file instead of extending SKILL.md frontmatter.

Non-Standard Fields Found in the Wild

These appear in community skills but are not part of any spec. They will be silently ignored by standard-compliant tools.

FieldIssueRecommendation
versionNot in any specMove to metadata.version
categoryNot in any specMove to metadata.category
tagsNot in any specMove to metadata.tags
last-updatedNot in any specMove to metadata.last-updated
modelAgent frontmatter field, not SKILL.mdRemove or move to agent config

Known Bugs & Gotchas

VSCode validator flags valid fields

The VS Code Copilot extension’s skill validator has an outdated schema that flags allowed-tools as unsupported, even though it’s part of the base spec. This is a known issue.

Multiline YAML descriptions break on Claude Code

Claude Code’s SKILL.md parser does not handle implicit YAML folding (Prettier-style wrapped lines). Descriptions that span multiple lines without an explicit block scalar will be silently truncated.

Breaks:

---
description: This is a long description that has been
  wrapped by Prettier across multiple lines
---

Works:

---
description: This is a long description on a single line
---

Also works (explicit block scalar):

---
description: |
  This is a long description that uses
  an explicit block scalar indicator
---

Unknown fields are silently ignored

All standard-compliant tools silently ignore unknown frontmatter fields. The VS Code extension is an exception — it shows warnings for unrecognized fields. This means non-standard fields won’t cause errors but also won’t do anything.

Case sensitivity

  • All field names must be lowercase
  • The filename must be exactly SKILL.md (uppercase)

Platform Limits

ConstraintLimitPlatform
name length64 charsAll (base spec)
description length1024 charsAll (base spec)
description length500 charsVS Code Copilot (stricter)
compatibility length500 charsAll (base spec)
Skill body size~6000 charsWindsurf
Skill body size~5000 tokensGeneral recommendation

How tome Uses This

tome currently symlinks skill directories as-is without parsing frontmatter. The v0.3.x release will add:

  • Frontmatter parsing during discovery
  • tome lint command with tiered validation (errors, warnings, info)
  • tome doctor frontmatter health checks
  • tome status metadata summary per skill

See the Roadmap for details.