What is a SKILL.md file? The Anthropic Skill format, explained.

A Skill is a Markdown file with YAML frontmatter that changes how Claude behaves on a specific task. The frontmatter declares metadata — name, description, allowed tools — and the body holds the instructions Claude reads as part of its system prompt. The same SKILL.md works across Claude Code, Claude.ai, and the broader Anthropic ecosystem, which is why the format matters: one file, many surfaces. You can write one in a text editor, or you can build one in your browser with Skillbench and skip the YAML entirely.

Anatomy of a SKILL.md file

Every SKILL.md has two parts: a YAML frontmatter block fenced by --- on the first and last lines, followed by Markdown instructions. Four frontmatter fields carry weight:

The body below the frontmatter is plain Markdown. No special escaping. Headings, lists, code fences — anything Claude can read in a normal message. Most Skills are 5–50 lines of body content; longer Skills tend to drift and become harder to A/B test against a baseline.

A minimal SKILL.md example

The shortest viable SKILL.md is about ten lines. This one writes haikus:

---
name: haiku-writer
description: Use when the user asks for a haiku. Returns exactly 5-7-5 syllables.
allowed-tools: []
tags: [poetry]
---

Write a haiku in exactly 5-7-5 syllables. Output the haiku and nothing else.
No preamble. No explanation.

The four frontmatter fields are present, the body is two sentences, and the constraints (5-7-5, no preamble) are stated as imperatives. That's the entire Skill. Claude will load this as part of its system prompt and, when the user says "give me a haiku about debugging," produce three lines with the right syllable counts and nothing else.

A realistic example: a code reviewer

Most production Skills sit between 20 and 40 body lines. Here's a trimmed version of the code-reviewer Skill in the Skillbench gallery:

---
name: code-reviewer
description: Use when reviewing a pull request diff. Returns line-cited findings and a ship/no-ship verdict.
allowed-tools: [read_file, grep]
tags: [engineering, security, review]
---

You are a senior engineer reviewing a diff. Be specific. Cite line numbers.

For each issue, output one line in this format:
  L. <line> — <one-sentence problem>, **<category>**.

Categories: bug, security, perf, style, test-gap.

After the line-by-line review, output:
  **Verdict:** ship | no-ship.

Rules:
- Do not restate the diff back to the user.
- Do not say "looks good overall." Either ship or no-ship.
- If you find a security issue, the verdict must be no-ship.
- If there are no tests for new behavior, flag a test-gap.
- Be terse. The reviewer is busy.

Each piece earns its place. The description tells Claude this Skill is for diff review specifically — not architecture critique, not refactor suggestions. allowed-tools: [read_file, grep] lets the Skill open referenced files and grep for usages without granting broader access. The body locks the output format ("L. line — problem, category") so two runs on the same diff produce structurally identical reviews, which is the property that makes Skills worth measuring.

How to build a SKILL.md without writing YAML

Two paths exist. The first is Anthropic's official skill-creator plugin, installable into Claude Code via claude plugin install skill-creator. It runs as a CLI, prompts you for the same fields, and writes a SKILL.md to disk. Good if you're already in a terminal and want zero browser dependency.

The second is Skillbench: a browser form for the same fields, plus a live preview of the generated Markdown and a sandbox that runs the Skill against the real Anthropic API the moment you save. You bring your own API key, nothing is stored on a server, and the resulting SKILL.md downloads as a file you can commit to your repo. Open the builder and the first Skill takes about two minutes to author.

Where do SKILL.md files live?

Placement depends on the runtime:

The file extension is always .md (lowercase). The filename inside the Skill directory is always SKILL.md (uppercase). The folder name should match the name field. Skillbench writes files with all three conventions baked in so you don't have to remember.

Build one in your browser → Browse 6 starter Skills