curiosity

Article · Agent skills

What are agent skills?

An agent skill is a folder of instructions an AI agent reads when a task calls for it. Its SKILL.md file starts with a name and a description, which the agent sees up front. The rest, and any scripts or reference files beside it, loads only when the agent decides the skill applies.

Topic Agent skills Reading time 7 min References 7 Updated October 2026

In short

An agent skill is a folder of instructions, with a SKILL.md file, that an AI agent loads only when a task needs it. Each skill teaches one kind of task. The file starts with a name and a description. The agent sees those at the start of every session, and reads the rest when a task matches.

A skill is not a tool. A tool is a function the model calls to do something: search, read, write. A skill is instructions the model reads to know how something is done. Nor is it a system prompt, which is loaded in full on every turn whether it is needed or not. How tools and agents differ is in MCP, AI tools and agents.

What is in a skill

The format is open. The Agent Skills specification defines a skill as a directory with a SKILL.md file at its root: YAML front matter, then Markdown. Two fields are required:

  • name: up to 64 characters of lowercase letters, numbers and hyphens, the same as the folder’s name.
  • description: up to 1,024 characters, saying what the skill does and when to use it.

Four more are optional: license, compatibility, metadata, and an experimental allowed-tools. The body has no required shape. Beside it, a skill may carry scripts/ the agent can run, references/ it can read, and assets/ such as templates.

Anthropic introduced Agent Skills in October 2025, and in December 2025 published the format as an open standard, now at agentskills.io. Its engineers put the idea in one line: “Building a skill for an agent is like putting together an onboarding guide for a new hire.”

How progressive disclosure works

A skill loads in three levels. The specification says it plainly: “Agents load skills progressively, pulling in more detail only as a task calls for it.”

  • Metadata. The name and description of every installed skill, about 100 tokens each, loaded at startup.
  • Instructions. The body of SKILL.md, read when the agent decides the skill applies. The specification recommends under 5,000 tokens and under 500 lines.
  • Resources. Reference files, read only when the instructions point to them. A script runs, and only its output enters the context, not its code.

The first level still costs something, so agents budget it. OpenAI’s documentation says Codex keeps the initial list to at most 2% of the model’s context window by default. With many skills installed, it shortens their descriptions first.

That is why the description carries the weight. It is the only part the agent sees before it decides. A description that names an area but not when to use it is the specification’s example of a poor one.

Progressive disclosure

Read when needed, not before

Four skills are installed. A request matches one, and the agent reads its instructions, one reference file and the output of one script. Pick a step to stop the drawing and read it.

Progressive disclosure of an agent skill On the left, a skills folder with four skills; supplier-review holds SKILL.md, references/scoring.md and scripts/open_notices.py. On the right, the context window. At startup it holds the system prompt and one line per skill. A request to review a supplier arrives, the supplier-review description matches, and the agent reads its instructions, then its scoring reference, then runs its script, of which only the output enters the window. ON DISK · SKILLS FOLDERCONTEXT WINDOWrelease-notes/supplier-review/SKILL.mdreferences/scoring.mdscripts/open_notices.pypdf-forms/test-reports/System promptrelease-notes · write a changelog entrysupplier-review · score a supplierpdf-forms · fill in PDF formstest-reports · read a test reportReview supplier S-114 before Fridaysupplier-review · instructionsscoring.md · how to scoreOutput · 3 open supplier notices
Progressive disclosure of an agent skill The context window holds the system prompt and one line for each of four skills. A request to review a supplier arrives, the supplier-review description matches, and the agent reads its instructions, then its scoring reference, then runs its script, of which only the output enters the window. Below, the three files of the supplier-review folder. CONTEXT WINDOWSystem promptrelease-notes · write a changelog entrysupplier-review · score a supplierpdf-forms · fill in PDF formstest-reports · read a test reportReview supplier S-114 before Fridaysupplier-review · instructionsscoring.md · how to scoreOutput · 3 open supplier noticesON DISK · SUPPLIER-REVIEW/SKILL.mdreferences/scoring.mdscripts/open_notices.py
  1. 01

    At startup, names only

    Four skills are installed. The window holds the system prompt and one line per skill: its name and description.

  2. 02

    A request arrives

    Someone asks the agent to review supplier S-114 before Friday’s order.

  3. 03

    One description matches

    The agent reads supplier-review’s SKILL.md. The other three stay one line each.

  4. 04

    It reads one reference

    The instructions point to a scoring guide, so the agent reads that file. Nothing else in the folder loads.

  5. 05

    It runs a script

    The script runs outside the window. Only its output comes in: three open supplier notices.

Skills, tools and system prompts

All three shape what a model does. They differ in what they are, and in when they take up the context window:

  • A system prompt is text loaded on every turn. It suits what has to hold for the whole conversation, and it costs its whole length each time.
  • A tool is a function with a name, a description and parameters. Its definition is sent while the tool is enabled, and the model calls it to act or to fetch something.
  • A skill is instructions, and sometimes scripts and reference files. It costs a line until a task needs it, then its body.

Use a skill for how a task is done here, such as how a supplier is scored or the steps of a release. Use a tool for what the model has to do. Keep in the system prompt only what must hold on every turn.

A rule with no exceptions belongs in neither a prompt nor a skill. Put it in the permissions or the platform, where the model cannot decide it does not apply.

Turn by turn

What each one costs

Four turns of one conversation. The system prompt is paid on every turn, the tool’s definition too, and the skill is one line until turn 3. Pick a step to stop the drawing and read it.

What a system prompt, a tool and a skill cost, turn by turn Four turns of one conversation. The system prompt is loaded in full on every turn. The tool is there as its definition on every turn, and its result comes in on turn 2 when it is called. The skill is one line until turn 3, when the model reads its body, which then stays for turn 4. TURN 1TURN 2TURN 3TURN 4System promptEvery turn, in fullToolIts definition, every turnSkillOne line, until neededINSTRUCTIONSTOOL DEFINITIONTOOL RESULTSKILL, ITS LINE OR BODY
What a system prompt, a tool and a skill cost, turn by turn Four turns. The system prompt is loaded in full each turn, the tool as its definition, with its result on turn 2. The skill is one line until turn 3, when its body is read, and it stays for turn 4. TURN 1TURN 2TURN 3TURN 4System promptToolSkillINSTRUCTIONSTOOL DEFINITIONTOOL RESULTSKILL, ITS LINE OR BODY
  1. 01

    Turn 1

    The system prompt goes in whole, the tool goes in as its definition, and the skill as one line.

  2. 02

    Turn 2

    The model calls the tool. Its result comes in, and the system prompt is paid again.

  3. 03

    Turn 3

    The task now needs the skill. The model reads its body, and only now does it cost its length.

  4. 04

    Turn 4

    The body stays in the transcript from then on. The system prompt is still paid in full.

Where agents look for skills

The folder format is shared, so one skill works in several agents. Where each one looks differs:

  • Claude Code reads .claude/skills in a project and ~/.claude/skills for a user, per Anthropic’s documentation.
  • OpenAI Codex scans .agents/skills in every folder from where it starts up to the repository root, per its documentation.
  • GitHub Copilot reads .github/skills, and .claude/skills and .agents/skills too. Google Antigravity, Mistral Vibe and Devin read .agents/skills, as curio’s guide to coding agents lists them.

Some agents add fields of their own on top of the standard ones. A team that commits its skills to a repository gives every agent that works there the same instructions, reviewed like code.

How skills go wrong

  • A vague description. The agent never loads the skill, or loads it for everything.
  • A body that tries to hold everything. It costs its full length on every use. Move the detail into reference files, one level down.
  • A skill that describes last year’s system. The agent follows it with confidence. A skill needs an owner and a review, like code.
  • A rule that must always hold. A skill loads when the agent decides it applies, so it guides and does not enforce.
  • A skill from someone you do not know. A skill can carry scripts and instructions to call tools. Anthropic warns that “a malicious Skill can direct Claude to call tools or run code in ways that don’t match the Skill’s stated purpose.” Read every file before you install one, as you would with software.
  • Instructions fetched at run time. A skill that pulls text from an outside address can pull in instructions an attacker wrote. That is prompt injection by another route.

How to evaluate a skill

  • Does the description say what the skill does and when to use it, in the words a request would use?
  • Is the body short enough to read whole, with the detail in reference files?
  • Who owns it, and when was it last checked against the system it describes?
  • What can its scripts reach: files, the network, credentials?
  • Does it come from a source you trust, and did someone read all of it?
  • Is anything in it a rule that should be enforced somewhere else?

How Curiosity uses skills

In Curiosity Studio a skill is a Markdown document stored in the graph: a name, a one line description, a category and a body. It is one document rather than a folder, with no scripts of its own, and any assistant can carry skills.

The documentation describes what a chat sees. An Available skills section lists each skill’s name and description, sorted by name, so the prompt stays the same from turn to turn. The bodies stay out until the model reads one with read-skill. A skill a chat has used stays in that conversation.

Sudo, the admin assistant, reads a built-in skill such as add-code-endpoint or create-ai-tool before he writes anything. Editing a skill is how you teach him a house convention, and your skills export with the rest of your configuration. The paper Working with Sudo has a chapter on it.

Coding agents get the same skills through curio. curio skills install writes one skill into the agent’s skills folder. It explains how to work on the workspace through curio, and lists Sudo’s skills, which stay on the workspace. The agent reads each one with curio skills show, so it follows the version your workspace runs.

FAQ

Questions people ask

What is the difference between a skill and a system prompt?

A system prompt is loaded in full on every turn. A skill costs a name and a one line description until a task needs it, and its body is read only then. Put what must hold for the whole conversation in the system prompt, and how a task is done in a skill.

Do agent skills work across different AI agents?

The format does. A skill is a folder with a SKILL.md file, defined by the open Agent Skills specification. Claude Code, OpenAI Codex, GitHub Copilot and others read it. What differs is the folder each agent looks in, and the extra fields some agents add.

Is it safe to install an agent skill from the internet?

Only after reading all of it. A skill can carry scripts and instructions to call tools. A malicious one can make an agent run code or send data where it should not. Treat it like software: install from sources you trust, and check what its scripts can reach.

How do I give an assistant in Curiosity Studio its own skills?

Write the skill under Manage, AI, Skills, then pick it in the Skills list of the assistant editor. Every chat started from that assistant carries it. The model sees each skill’s name and description, and reads a body only when it needs it.

Your data. Your infrastructure.

Write it down once. Every agent reads it.