Agent Skills · Learn · The open SKILL.md standard
Reference

SKILL.md frontmatter

Every SKILL.md opens with a small YAML block between --- fences. It tells the agent what the skill is called and — crucially — when to load it. Here's every field that matters.

A minimal SKILL.md

---
name: pdf-form-filler
description: Fill, flatten, and extract fields from PDF forms. Use when the
  user needs to populate a fillable PDF or pull data out of one.
license: MIT
---

# PDF form filler

When the user asks to fill a PDF form…

The fields

How different agents read the frontmatter

SKILL.md is an open format, so support varies by agent:

Because of this, write the body so it stands on its own — don't rely on the frontmatter being parsed everywhere.

Write a description that triggers

Good: "Generate Conventional Commits messages from a staged git diff. Use when the user is committing code or asks for a commit message." — it names the output and the trigger. Bad: "Helps with git." — too vague to match a task reliably. See how to write a skill for the full guide.

SKILL.md frontmatter — answered

What fields are required in SKILL.md frontmatter?
Only two: name (a short kebab-case identifier) and description (what the skill does + when to use it). Everything else — license, allowed-tools, metadata — is optional.
Why does the description field matter so much?
Agents match the user's current task against the description to decide whether to load the skill. A precise description triggers reliably; a vague one means the skill is never loaded or loads at the wrong time.
Do all agents read SKILL.md frontmatter?
No. Native loaders parse it; rules-based agents (Cline, Roo Code, Windsurf, Zed, Goose) read the markdown body and treat the frontmatter as text. Write the body to stand on its own.