Reference for your agent. The precise shape of things — signatures, fields,
rules — written so an agent can read it and act. You do not need to: ask your
agent for what you want in words, and if it needs this page, hand it the URL or
use Copy page. What to ask for, and how to check it, is in Ask;
how to see what changed is in Look inside.
SKILL.md at its root. Everything an agent needs to do
one kind of work well goes in that folder: instructions in the file, anything long
or executable in files beside it.
Giving an agent a skill
system:<name> is one of the platform’s skills. A bare name is one of your own.
The two are separate namespaces, and the prefix is what keeps a published harness
meaning one thing everywhere: somebody who writes their own memory skill takes
that name from the platform’s, whose copy is then called platform-memory in
their library — so a bare "memory" is theirs, and "system:memory" is the
platform’s on every account.
Every skill is listed by name; there is no wildcard, so what an agent gets is what
the line says.
An agent is told about the skills it lists and no others, and one that lists none
is told about none. The files of the whole library are in the sandbox either way —
skills are knowledge, not permissions, and a sandbox is shared by everything
running in it.
skills= decides what an agent knows it has, which is what its
attention and its context are spent on.What the agent actually sees
The library is on the machine at~/skills/, one folder per skill, with an
INDEX.md listing them. What reaches the prompt is narrower: the platform
resolves the agent’s own list against that library and puts it on the hook
snapshot as t.skills, each entry a name and a description. Rendering it is
hooks/context.py’s job:
skills= says.
Frontmatter
name and description are required; everything else is optional.
The description is the whole selection mechanism
An agent chooses a skill by matching the request against the description, and nothing else — the body is not visible until after the choice is made. So a description must carry both halves: what the skill does, and when to reach for it.The body
Write it for someone competent who has not done this specific job before: the sequence, the decisions, the traps. Keep it under about 500 lines.- Procedure over prose. Numbered steps beat paragraphs.
- Show the exact command, with the flags that matter, not a description of it.
- Say what goes wrong. The failure you already debugged is the most valuable paragraph in the file.
- State what not to do when a plausible wrong path exists.
- One level of indirection. Reference
references/api.mdfromSKILL.md; do not build a chain of files that reference each other.
SKILL.md and into a bundled file when it is long, when it
is only needed in one branch of the work, or when it is executable. Prefer a
script over instructions whenever the work is deterministic: ten lines of Python
that always produce the right answer beat a paragraph asking the model to be
careful.
Validate before you save
Checklist
- Folder name =
name= something a person would say out loud. - Description says what it does and when to use it, in the user’s words.
- Body is steps, commands and traps, not an essay.
- Long or executable material is a bundled file, not a paragraph.
- Validator passes.
- The agent that should have it names it in
skills=.

