Skill writing guide
A skill is a folder. The trigger is the description.
Decide the job. Draft SKILL.md. Run a few prompts with and without the skill. Rewrite from the misses. That is the whole loop.
Anatomy
skill-name/ ├── SKILL.md required — metadata + instructions ├── scripts/ optional — deterministic work ├── references/ optional — docs loaded on demand └── assets/ optional — templates, fonts, icons
A skill set
Insert a pack, attach skills, export one folder.
agent-name/
├── AGENT.md who sits at the desk
└── skills/
├── brand-voice/
│ ├── SKILL.md
│ └── references/voice.md
└── research-brief/
└── SKILL.mdInsert agent and skill setProgressive disclosure
01
Metadata
name and description. Always in context, for every installed skill. About a hundred words. This is the trigger. Put every when-to-use here, not in the body.
02
Instructions
The SKILL.md body, loaded when the skill fires. Keep it under 500 lines; prefer under 200. Procedure, examples, never-do.
03
Resources
scripts/, references/, assets/. Unlimited, loaded only when needed. Scripts can run without being stuffed into the prompt.
Spec
name
1–64 characters. Lowercase letters, numbers, hyphens. No leading, trailing, or consecutive hyphens. Must match the folder name.
description
1–1024 characters. What it does and when to use it. Agents under-trigger — make it a little pushy. Name the tasks, file types, and phrases.
compatibility
Optional, 500 characters. Only if the skill needs a specific runtime.
Body
A procedure the agent can follow. Two examples. Move rare depth to references/ so the main file stays lean.
The loop
- Capture intent — job, when, never, resources.
- Write the draft. Put triggering context in the description.
- Build a small eval: five fires, three skips.
- Read the misses. Push the description. Split fat body into references.
- Repeat until the trigger is boringly correct.