# What is SKILL.md

> A skill is a directory, not a file. The required fields, the real constraints, the loading model, and the line that decides if it is ever read.

Source: https://umairalikhatri.com/work/what-is-skill-md/
Author: Umair Ali Khatri
Updated: 2026-08-29

---

[&larr; Back to work](https://umairalikhatri.com/work/)
Agent Skills

# What is SKILL.md

29 August 2026 · 5 min read

SKILL.md is a markdown file that tells an AI agent how to do one specific job. It lives inside a directory, and that directory is the skill. The file opens with YAML frontmatter carrying two required fields, name and description, followed by instructions in plain markdown. An agent loads only the description at startup and reads the rest when a task matches.

That is the whole format. The rest of this page is the detail behind it.

## The directory

A skill is a folder. The only file it must contain is SKILL.md.

Three sibling directories are conventional. scripts/ holds executable code. references/ holds documentation the agent reads on demand. assets/ holds templates, images, and data files.

acme-design-system/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
└── assets/ # Optional: templates, resources

None of the three are required. A skill that is one file is a valid skill.

## The frontmatter

Two fields are required. Four are optional.

Field
Required
Constraint

name
Yes
1 to 64 characters. Lowercase a-z , 0-9 , and hyphens. No leading or trailing hyphen, no -- . Must match the parent directory name.

description
Yes
1 to 1024 characters. Says what the skill does and when to use it.

license
No
A license name, or a reference to a bundled license file.

compatibility
No
Max 500 characters. Environment requirements.

metadata
No
A map of string keys to string values.

allowed-tools
No
Space-separated list of pre-approved tools. Experimental.

The gotcha is in the name row. It must match the parent directory name. A folder called Acme-Design-System cannot hold a skill named acme-design-system. Validation fails, and the folder name is not fixable from inside the file.

## The description

This is the field that matters. Everything else is plumbing.

At startup an agent loads the name and description of every installed skill. Nothing else. The description is the only evidence it has when it decides whether to open your file. Write it badly and the skill is installed, valid, and never read.

The spec makes the point with two versions of the same skill.

Poor:

description: Helps with PDFs.

Good:

description: 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.

The second one does three things. It names the actions. It names the trigger condition. It includes the words a user is likely to type.

The same failure in a design system reads like this.

Poor:

description: Our design system.

Good:

description: Component rules, tokens, and layout patterns for the Acme design system. Use when building or reviewing Acme UI, choosing colours or spacing, or when the user mentions Acme components, tokens, or brand.

You have 1024 characters. Most people use forty. Spend them on the words a person types when they need this skill.

## The loading model

Agents load skills progressively, in three stages. The spec gives its own numbers for the first two.

Discovery, around 100 tokens. The name and description fields, loaded at startup for every installed skill.

Activation, under 5000 tokens recommended. The full SKILL.md body, loaded only once the agent decides the skill is relevant.

Execution, as needed. Files under scripts/, references/, and assets/, loaded only when the instructions call for them.

This is why a hundred installed skills cost so little to keep around. A hundred descriptions is a few thousand tokens. The bodies stay on disk until something needs them.

It is also why the description carries the whole load. It is the only part of your skill that competes for attention.

## The example

A real one, short enough to copy.

---
name: acme-design-system
description: Component rules, tokens, and layout patterns for the Acme design system. Use when building or reviewing Acme UI, choosing colours or spacing, or when the user mentions Acme components, tokens, or brand.
license: MIT
---

# Acme design system

## Tokens

Colour, spacing, and radius values live in `references/tokens.md`. Read that
file before writing any style.

## Components

Use an existing component from `references/components.md` if one covers the
case. Do not build a new button, input, or card.

## Rules

1. Spacing comes from the 4px scale. No arbitrary pixel values.
2. Body text is 16px minimum. Never below.
3. Every interactive element carries a visible focus state.

## Checking your work

Run `scripts/lint-tokens.sh` against any file you changed.

Note what the body does not do. It does not paste the token table into the instructions. It points at a file and says when to read it.

## The limits

Three pieces of practical guidance sit in the spec, and all three exist to protect context.

Keep SKILL.md under 500 lines. Past that, move detail into references/.

Keep file references one level deep. A file that points at a file that points at a file makes the agent burn context walking the chain.

Validate before you ship:

skills-ref validate ./my-skill

That checks the frontmatter and the naming conventions. It will not tell you whether the description is any good.

## The origin

The format was originally developed by Anthropic and released as an open standard. Support is now broad, including Claude Code, Cursor, VS Code, GitHub Copilot, Gemini CLI, Codex, OpenCode, and Goose.

The specification page does not carry a publication date. I am not going to invent one.

## Design systems

Nothing in the format is design-specific. It is a general packaging standard for procedural knowledge, and PDF processing is the spec's own worked example.

It happens to fit design systems well. A design system is already rules plus references plus assets, written down. The work is deciding which rules survive the translation, not converting the file.

I used this format for [skill-kit](https://umairalikhatri.com/work/how-i-built-a-577-file-design-knowledge-graph/), 577 files across 9 categories. The formatting was the fast part. The curation was not.

If you want the fuller picture of how this fits with DESIGN.md and the rest, start at [agent-ready design systems](https://umairalikhatri.com/work/agent-ready-design-systems/). If you want to see [what I do](https://umairalikhatri.com/work/) with it, that is there too.

A skill is a folder with a good description on top. Most of the work is in that one line.

Every constraint on this page comes from the Agent Skills specification at agentskills.io, fetched 29 August 2026.
[Back to work](https://umairalikhatri.com/work/)
