Writing Skills
A skill exists to pull consistent behavior out of a probabilistic model. Every rule below serves
that: say only what changes behavior, make it easy to find, keep it easy to read.
This is the shared craft — a lightweight, always-on reference to write a SKILL.md well. For an
interactive workshop that scaffolds, runs evals/benchmarks, and optimizes a description, install
Anthropic's skill-creator;
these principles still apply to what it produces.
For environment specifics, pair this with the matching surface skill:
claude-md-and-folder-standards for Claude Code, or
authoring-app-skills for the Claude app/Cowork.
Frontmatter
- Required:
name (lowercase, hyphens, ≤64 chars, no "claude"/"anthropic") and description.
- The description is the whole discovery mechanism. It's the only part preloaded every session;
the model picks this skill from it alone. Write it in third person, and state both what the
skill does and when to use it (the triggering conditions). Front-load the distinctive trigger word.
Say only what changes behavior
- Assume the model is already smart. Add only what it would get wrong or can't know.
- No-op test, per sentence: if a line doesn't change behavior versus the default, delete it —
don't reword it. "Write clean code" fails. Real conventions, gotchas, and exact steps pass.
- One idea, one home. Duplication across sections (or skills) drifts and rots — link instead.
Progressive disclosure
- The SKILL.md body is the map, not the whole territory. Keep occasional/heavy detail in sibling
files and link to them; they cost nothing until read.
- Keep links one level deep from SKILL.md. Nested pointers get partially read and missed.
- Inline what every path needs; push behind a link what only some paths need.
Scope & size
- One workflow or domain per skill. If two distinct triggers want independent firing, that's two skills.
- Keep the body tight — say only what earns its place. Anthropic's ceiling is 500 lines; split to
sibling files well before that. Fewer lines that all pass the no-op test beats padding to a limit.
Style that reads reliably
- Match specificity to fragility. Fragile, one-right-way tasks get exact steps; open tasks get
direction and trust. Over-specifying an open task is as harmful as under-specifying a fragile one.
- Use one term per concept throughout — consistency helps the model parse.
- Show input→output examples where quality depends on shape; they teach faster than description.
- Steer toward the target behavior, not away from the wrong one. Prohibitions make the banned
behavior more salient — prefer stating what to do; reserve "don't" for true guardrails, paired
with the positive alternative.
- No time-sensitive phrasing ("after August"). Put superseded guidance in an "old patterns" aside.
Before done
- Does the description alone tell a cold model what this is and when to fire it?
- Every remaining sentence passes the no-op test?
- One domain, links one level deep, no duplication with sibling skills?
1---2name: writing-skills3description: Writing Skills4---56# Writing Skills78A skill exists to pull consistent behavior out of a probabilistic model. Every rule below serves9that: say only what changes behavior, make it easy to find, keep it easy to read.1011This is the shared craft — a lightweight, always-on reference to write a SKILL.md well. For an12interactive workshop that scaffolds, runs evals/benchmarks, and optimizes a description, install13Anthropic's [`skill-creator`](https://github.com/anthropics/skills/tree/main/skills/skill-creator);14these principles still apply to what it produces.1516For environment specifics, pair this with the matching surface skill:17[`claude-md-and-folder-standards`](../claude-md-and-folder-standards/SKILL.md) for Claude Code, or18[`authoring-app-skills`](../authoring-app-skills/SKILL.md) for the Claude app/Cowork.1920## Frontmatter2122- Required: `name` (lowercase, hyphens, ≤64 chars, no "claude"/"anthropic") and `description`.23- **The description is the whole discovery mechanism.** It's the only part preloaded every session;24 the model picks this skill from it alone. Write it in **third person**, and state both **what** the25 skill does and **when** to use it (the triggering conditions). Front-load the distinctive trigger word.2627## Say only what changes behavior2829- Assume the model is already smart. Add only what it would get wrong or can't know.30- **No-op test, per sentence:** if a line doesn't change behavior versus the default, delete it —31 don't reword it. "Write clean code" fails. Real conventions, gotchas, and exact steps pass.32- One idea, one home. Duplication across sections (or skills) drifts and rots — link instead.3334## Progressive disclosure3536- The SKILL.md body is the map, not the whole territory. Keep occasional/heavy detail in sibling37 files and link to them; they cost nothing until read.38- **Keep links one level deep from SKILL.md.** Nested pointers get partially read and missed.39- Inline what *every* path needs; push behind a link what only *some* paths need.4041## Scope & size4243- One workflow or domain per skill. If two distinct triggers want independent firing, that's two skills.44- Keep the body tight — say only what earns its place. Anthropic's ceiling is 500 lines; split to45 sibling files well before that. Fewer lines that all pass the no-op test beats padding to a limit.4647## Style that reads reliably4849- **Match specificity to fragility.** Fragile, one-right-way tasks get exact steps; open tasks get50 direction and trust. Over-specifying an open task is as harmful as under-specifying a fragile one.51- Use one term per concept throughout — consistency helps the model parse.52- Show input→output examples where quality depends on shape; they teach faster than description.53- **Steer toward the target behavior, not away from the wrong one.** Prohibitions make the banned54 behavior more salient — prefer stating what to do; reserve "don't" for true guardrails, paired55 with the positive alternative.56- No time-sensitive phrasing ("after August"). Put superseded guidance in an "old patterns" aside.5758## Before done59601. Does the description alone tell a cold model what this is and when to fire it?612. Every remaining sentence passes the no-op test?623. One domain, links one level deep, no duplication with sibling skills?