Agent Skills: know-how, loaded only when needed
AGENTS.md is for what every session needs. But your team also has procedures: how to add a migration, run a release, write tests the house way. Skills package each procedure as a folder the agent opens only when the task calls for it, so you can have dozens without filling the desk.
1. The idea
A skill is a folder with a SKILL.md file: a short header (YAML frontmatter) with a name and a description, then instructions in Markdown. It can also carry scripts, reference docs and templates. Agent Skills is an open standard: Anthropic introduced it in October 2025 and published it in December 2025, and it's now read by dozens of tools, including all five in this track.
The key mechanism is progressive disclosure, loading only what's needed, in three levels:
- Metadata, always: only each skill's name and description (around 100 tokens) are loaded at the start. That's the title tab on the card.
- Instructions, when relevant: when a task matches the description, the agent reads the full SKILL.md. The spec recommends keeping it under 5,000 tokens and 500 lines.
- Resources, if needed: scripts, reference files and templates are read or run only when the instructions call for them. A script's code doesn't even need to enter the context, only its output.
2. How it works
Step through a session with 30 skills installed, and watch the context window.
3. Try it yourself: the SKILL.md checker
Edit the frontmatter and see whether it meets the Agent Skills specification: the exact rules for name and description.
4. Why it matters at work
The description is the trigger
The agent decides to open a skill from its description alone. A good one says what it does and when to use it, in the words people actually type.
| Weak | Strong |
|---|---|
| "Angular helper" | "Creates or changes an Angular component following our conventions. Use when adding a screen, dialog, card, form or widget under web/app." |
| "DB stuff" | "Writes a Flyway migration. Use whenever a table, column or index changes. Never edits an applied migration." |
Which tasks deserve a skill
Good candidates are repeated, multi-step, full of conventions people forget, and checkable at the end: adding a component, endpoint or migration; writing tests the house way; the release checklist; a report in a fixed format. Not a skill: one-off tasks, facts every session needs (those go in AGENTS.md), or anything a plain script does better (write the script, and let the skill call it).
Writing rules
- Numbered, imperative steps. Agents follow procedures better than prose.
- End with the check: the command that proves it was done right.
- Scripts for anything exact (validation, formatting, generation). Text instructions drift; scripts don't.
- Keep SKILL.md lean; move long references into
references/files it points to. - Test triggering: five requests that should use it and five that shouldn't. Fix the description until both pass, in two tools.
5. In your five tools
The same SKILL.md works everywhere; only the folder differs. Checked October 2026.
| Tool | Project skills | Personal skills | Use one |
|---|---|---|---|
| Claude Code | .claude/skills/NAME/SKILL.md (only this folder) | ~/.claude/skills/ | Automatic, or /NAME. Custom commands are now skills too. |
| Antigravity CLI | .agents/skills/ | ~/.gemini/antigravity-cli/skills/ | Automatic; browse with /skills |
| GitHub Copilot (VS Code) | .github/skills/, .agents/skills/ or .claude/skills/ | ~/.copilot/skills/ (also ~/.agents/skills/) | Automatic by description |
| Cursor | .agents/skills/ or .cursor/skills/ (also reads Claude and Codex folders) | ~/.cursor/skills/, ~/.agents/skills/ | Automatic by description |
| Codex CLI | .agents/skills/ in each folder up to the repo root | ~/.agents/skills/ | Automatic, or $NAME; /skills to browse |
.agents/skills/ is read by Antigravity, Copilot, Cursor and Codex. Claude Code reads only .claude/skills/, so keep the skills in one place and point the other at it (for example a symlink), or package them as a plugin (Module 12).6. Remember it
How this hook works: what “Recipe cards in a drawer” means
What the slogan means, phrase by phrase
- “Recipe cards”
- Each skill is a precise, step-by-step procedure for one kind of task, with ingredients (scripts, templates) clipped to it.
- “in a drawer”
- Out of the way until needed: progressive disclosure. Thirty skills cost only their titles until one is used.
- Implied: the title tab
- The description. If it doesn't say what the recipe is for, the cook never pulls the card out.
- Implied: the taste test
- A good recipe ends with how to check the result: the command that proves the skill was followed.
Why this picture fits: it explains the two things people get wrong: putting everything in AGENTS.md (the counter gets cluttered) and writing vague descriptions (the right card is never found).
The story → the concept
| Kitchen | Agent Skills |
|---|---|
| The title tab | name and description (always loaded, about 100 tokens) |
| The recipe on the card | SKILL.md body (loaded when the task matches) |
| Ingredients clipped to the card | scripts/, references/, assets/ (used only if needed) |
| The note on the counter | AGENTS.md: always in view, so keep it short |
| The taste test | The final check command |
| A shared family recipe box | Skills committed to the repo, or shipped in a plugin |
Watch it on an example
- Your team keeps forgetting migration rules, so you write
db-migration/SKILL.md: "Writes a Flyway migration. Use whenever a table, column or index changes." - Most sessions never touch the database; the skill costs about 30 tokens there.
- Someone asks "add a
discount_codecolumn to orders". The description matches, so the agent opens the card: newV{N}file, never edit applied ones, then runscripts/check_migrations.py. - The script's output proves it's right. Same result in Claude Code, Cursor and Codex, from the same folder.
The trap it saves you from
Stuffing procedures into AGENTS.md until it's 2,000 lines, or writing a skill titled "helpers" that never gets picked up.
It still works when…
You package skills with subagents and hooks into a plugin (Module 12): a whole recipe box installed in one step, for every teammate.
7. Common mistakes
name to match the folder name, in lowercase letters, digits and single hyphens.8. Hands-on lab (roadmap week 11)
- Pick two tasks you repeat and often get wrong (a migration, a component, a release step).
- Write each skill: frontmatter (check it above), numbered steps, a final check command; add a script if part of it is exact.
- Test triggering with five should-use and five shouldn't-use requests, in two tools. Fix the description until both pass.
- Test the outcome on a real task and review the result against the skill's own checklist.
- Commit it to the repository's skills folder, so every session (and anyone else on the project) gets it.
9. Self-check quiz
With 30 skills installed, what's in the context before any of them is used?
What must a good description say?
"Run tests with BAZEL_TEST=1": skill or AGENTS.md?
Which project folder is read by Antigravity, Copilot, Cursor and Codex?
.agents/skills/ is the shared location; Claude Code uses .claude/skills/.10. Go deeper
| Resource | Time | Why |
|---|---|---|
| Agent Skills specification | 15 min | The exact format, field rules and progressive-disclosure guidance. |
| anthropics/skills | 30 min | Real, well-written example skills to learn from. |
| Skills in Claude Code and Agent Skills in VS Code | 20 min | Locations, invocation and options in two tools. |
| Agent Skills (Cursor) | 10 min | How Cursor discovers skills, including other tools' folders. |