Skip to content
livery

What Is an Agent Skill? SKILL.md Explained

By · Updated · 7 min read

The short answer

An agent skill is a folder with a SKILL.md file: YAML front matter with a name and a description, then Markdown instructions, plus any scripts, references or assets the task needs. Agents load only the name and description at startup and read the rest when a task matches, so you can keep many skills installed for little context. The format started at Anthropic and is now an open standard read by Claude Code, Codex, Cursor, GitHub Copilot and others.

What is an agent skill?

A skill is a packaged piece of know-how an agent can pick up when it needs it. The open specification calls Agent Skills "a lightweight, open format for extending AI agent capabilities with specialized knowledge and workflows".

At minimum a skill is one folder with one file, SKILL.md. Everything else is optional:

A skill folder
my-skill/
├── SKILL.md      # required: front matter + instructions
├── scripts/      # optional: code the agent can run
├── references/   # optional: documents it reads when needed
└── assets/       # optional: templates, images, data

The difference from a prompt is when it's used. Anthropic's docs put it this way: "Unlike prompts (conversation-level instructions for one-off tasks), Skills load on demand, so you don't have to repeat the same guidance across conversations." You write the instructions once, and the agent reaches for them whenever a request matches.

What goes in the SKILL.md front matter?

Two fields are required: name and description. The description does most of the work, because it's what the agent matches your request against to decide whether to load the skill.

SKILL.md front matter fields in the open Agent Skills specification.
FieldRequiredRules (Agent Skills specification)
nameYes1–64 characters; lowercase letters, numbers and hyphens; no leading, trailing or double hyphens; must match the folder name
descriptionYes1–1,024 characters; says what the skill does and when to use it
licenseNoA licence name or a bundled licence file
compatibilityNoUp to 500 characters on environment needs (product, packages, network)
metadataNoA map of extra string keys and values
allowed-toolsNoSpace-separated tools the skill may use without asking (experimental)

Anthropic adds two limits for Claude: the name can't contain XML tags or the reserved words "anthropic" or "claude". Claude Code also accepts its own extra fields, such as disable-model-invocation (only you can start the skill), user-invocable (hide it from the / menu) and context: fork (run it in a subagent). Outside Claude Code, in claude.ai uploads and the Skills API, only the six standard fields are accepted.

Write the description as two halves: what the skill does, then when to use it. The specification's good example: "Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction." Its poor example is "Helps with PDFs."

How does progressive disclosure work?

Agents load a skill in stages, so an installed skill costs almost nothing until it's used. Only the front matter is read up front; the instructions and files follow when a task calls for them.

The three loading stages, from Anthropic's Agent Skills overview and the open specification.
StageWhen it loadsTypical costWhat's read
MetadataAt startup, for every installed skillAbout 100 tokens per skillname and description
InstructionsWhen a request matches the descriptionUnder 5,000 tokens recommendedThe SKILL.md body
ResourcesOnly when the instructions call for themNothing until read; scripts add only their outputReference files, assets, scripts

This is why the specification says to "keep your main SKILL.md under 500 lines" and move detail into separate files, linked one level deep. A skill can carry a long reference document, and the agent opens it only when the step it's on needs it. Scripts are cheaper still: Anthropic's docs note that when Claude runs a bundled script, "the script code itself never enters context", only its output.

Where do skills live in Claude Code?

Claude Code reads skills from the file system: ~/.claude/skills for every project on your machine, or .claude/skills inside a project. Each skill is a folder with a SKILL.md at its root.

  • Personal: ~/.claude/skills/<skill-name>/SKILL.md loads in all your projects.
  • Project: .claude/skills/<skill-name>/SKILL.md loads in that repository. Commit it and your team gets it too.
  • Plugin: <plugin>/skills/<skill-name>/SKILL.md, run as /plugin-name:skill-name wherever the plugin is enabled.

Claude uses a skill when it's relevant, or you can start one yourself by typing /skill-name. In the skill list, the description (with the optional when_to_use text) is cut at 1,536 characters, so put the main use case first.

Skills don't sync between Claude's products. On claude.ai you upload a skill as a zip in Settings > Features (Pro, Max, Team and Enterprise plans, with code execution on); on the Claude API you upload it through the Skills API; Claude Code reads its folders. Each copy is managed separately.

Which other tools support Agent Skills?

Many. Anthropic developed the format and released it as an open standard, and other agents now read the same SKILL.md folders. Each tool's own documentation confirms the folders below.

Where each agent looks for SKILL.md folders, from each tool's documentation (October 2026).
AgentProject folderPersonal folder
Claude Code.claude/skills~/.claude/skills
OpenAI Codex.agents/skills (in the working folder and each parent up to the repo root)~/.agents/skills
Cursor.agents/skills, .cursor/skills (also reads .claude/skills and .codex/skills)~/.agents/skills, ~/.cursor/skills (also ~/.claude/skills and ~/.codex/skills)
VS Code and GitHub Copilot.github/skills, .claude/skills, .agents/skills~/.copilot/skills, ~/.claude/skills, ~/.agents/skills

Two folders do most of the sharing. A skill in .claude/skills is found by Claude Code, Cursor and VS Code; one in .agents/skills is found by Codex, Cursor and VS Code. The agentskills.io site keeps a showcase of further clients.

Codex's docs say its skills "build on the open agent skills standard"; Cursor's say "Agent Skills is an open standard for extending AI agents"; VS Code's call it "an open standard" that works across Copilot's agents.

What does a minimal skill look like?

A working skill can be a dozen lines: front matter, then plain instructions. This one keeps release notes consistent:

.claude/skills/release-notes/SKILL.md
---
name: release-notes
description: Write release notes from the commits since the last tag. Use when the user asks for release notes, a changelog entry or a summary of what shipped.
---

# Release notes

1. List commits since the last tag with `git log $(git describe --tags --abbrev=0)..HEAD --oneline`.
2. Group them under Added, Changed and Fixed. Skip merge commits and chores.
3. Write one plain sentence per change, from the user's point of view.
4. Show the draft and ask before writing it to CHANGELOG.md.
  1. 1Make a folder whose name matches the name field, here release-notes.
  2. 2Write the description as what it does plus when to use it.
  3. 3Keep the body to the steps; move long reference material into separate files and link them.
  4. 4Check it with the specification's validator: skills-ref validate ./release-notes.
  5. 5Ask for release notes and confirm the agent picks the skill up.

Only install skills you trust. Anthropic's docs warn that a skill can direct the agent to run code or call tools, so read every file in a skill from an unknown source before using it, the same way you'd treat installing software.

How is a design kit a skill?

A design kit is a skill whose job is to apply one design to your project. A Livery kit has the standard shape: a SKILL.md with a name such as livery-linear-app and a description that names the site and says to use the kit only when you ask to copy that site or apply its design, so the agent doesn't restyle your app unasked.

The SKILL.md body is the process: audit the project, report the gap for each area, ask which areas to apply, then commit one area at a time. The design itself sits in files the agent reads only when its step needs them: tokens.json (colours by role, type scale, spacing, radii), rules.md, components.md, layout.md and motion.md, all measured from the live site rather than written by a model. That is progressive disclosure applied to a design system.

Because it's the standard format, the same kit works beyond Claude Code: one paste installs it under .claude/skills, and for Codex, Cursor or Windsurf you unzip it into the project and point the agent at SKILL.md.

Questions

Do installed skills slow the agent down or cost tokens?
Barely. Until a skill is used, only its name and description sit in context, about 100 tokens per skill.
What's the difference between a skill and CLAUDE.md?
CLAUDE.md is read in full at the start of every session; a skill is read only when a task matches its description. Put always-true project rules in CLAUDE.md and task-specific know-how in skills.
Can a skill run code?
Yes. A skill can bundle scripts; the agent runs them and only the output enters its context. On the Claude API, skills run in a sandbox with no network access.
Do skills I upload to claude.ai work in Claude Code?
No. Custom skills don't sync across surfaces: claude.ai, the Claude API and Claude Code each need their own copy.
Can I invoke a skill myself?
In Claude Code, yes: type /skill-name. Set disable-model-invocation: true if you want a skill to run only when you ask for it.

Sources

  1. Agent Skills overview (Claude docs)
  2. Agent Skills specification
  3. Skills (Claude Code docs)
  4. Skills (OpenAI Codex docs)
  5. Agent Skills (Cursor docs)
  6. Agent Skills (VS Code docs)

Try it on a site you love

Paste a link and get an installable design kit in about a minute. Free.

More guides