πŸ“˜ Skill: reusable know-how for agents

A tool lets an agent do something. A skill teaches it how to do a kind of task well: your team's steps, rules, templates and helper scripts, packaged once and reused whenever they're needed.

"Skill" means different things in different places

Some AI frameworks use "skill" to mean a tool or function. Voice assistants call their add-on apps "skills". This lesson teaches Anthropic's Agent Skills: folders containing a SKILL.md instruction file and optional extra files. Claude loads a skill only when a task needs it. Agent Skills work in the Claude apps, Claude Code, the Claude Agent SDK and the Claude API, though how you install them differs between products.

What is it?

An Agent Skill is a folder that teaches Claude a specialised task. It always contains a file called SKILL.md with:

The folder can also hold supporting files, such as templates, reference documents and small scripts, that Claude reads or runs only when it needs them.

SKILL.md
The main instruction file of a skill. The .md means Markdown, a simple text format.
Frontmatter
A small block between --- lines at the top of the file holding settings such as name and description.
Context
Everything the model can "see" while working: your messages, instructions and tool results. Context space is limited and costs money, so less is better.
Progressive disclosure
Loading information a bit at a time, only when it's needed, instead of all at once.
Prompt
The instructions or question you type to the model for one request.

Skill, tool, prompt and agent compared

What it isAnswers the questionExample
PromptInstructions typed for one request"What do you want right now?""Summarise this email in 3 bullets."
SkillA saved, reusable package of instructions and files, loaded only when relevant"How do we do this kind of task here?""Our report style: sections, tone, chart template."
ToolA capability that performs an action or fetches data"What can you actually do?"search_docs, read_file
AgentThe model working in a loop with tools (and skills) towards a goal"Who does the work?"A research assistant that uses both

A useful way to remember it: a tool is a hand, a skill is a training manual, and an agent is the employee who uses both.

Why is it important?

Real-world analogy

The office binder shelf

A new employee doesn't memorise every company procedure on day one. On the shelf is a row of binders with clear labels on their spines: "How we write client reports", "Expense claim procedure", "Code review checklist".

The employee glances at the spines (the skill descriptions). When a task comes in, they pull out only the matching binder (load SKILL.md). If the binder says "see the template in the back pocket", they open that too (extra files). Binders that aren't needed stay on the shelf.

How does it work?

  1. Install: put the skill folder where your Claude product looks for skills. In Claude Code this is .claude/skills/ in your project or ~/.claude/skills/ for personal skills. In the Claude apps you upload it in settings. With the API you upload it or use Anthropic's pre-built skills.
  2. Startup: Claude sees only each skill's name and description, which is a few words per skill.
  3. Match: when a request arrives, Claude compares it with the descriptions and decides whether a skill is relevant. A good description says both what the skill does and when to use it. In Claude Code you can also call a skill directly by typing / followed by its name, for example /weekly-report.
  4. Load: Claude reads the full SKILL.md instructions.
  5. Go deeper only if needed: Claude opens referenced files or runs included scripts. This needs an environment where Claude can read files and run code, such as Claude Code or the API with the code execution tool.
  6. Do the task following the skill's steps, using tools where the skill says to.

Workflow diagram

This is progressive disclosure: descriptions are always loaded, instructions are loaded when the skill is relevant, and extra files are loaded only on demand. If no skill matches, Claude simply handles the request normally.

Try it: which skill gets loaded?

Interactive demoA simulation in your browser. It uses simple keyword matching, whereas Claude really uses language understanding.

    Example skills

    πŸ”Ž research-brief

    Description: "Researches a topic using web search and produces a sourced brief. Use when the user asks to research, investigate or gather sources."

    πŸ“ report-writer

    Description: "Writes business reports in company format with summary, findings and recommendations. Use for any report, status update or write-up."

    πŸ§ͺ code-review

    Description: "Reviews code for bugs, security issues and readability using the team checklist. Use when asked to review, audit or check code."

    πŸ“‘ document-analysis

    Description: "Extracts key facts, dates, parties and obligations from contracts and long documents. Use when analysing PDFs or contracts."

    Anthropic also provides ready-made skills, for example for creating Word, Excel, PowerPoint and PDF files, and publishes example skills in the anthropics/skills repository.

    Practical example: a weekly status report skill

    Your team writes a status report every Friday and always forgets the format. Let's turn the format into a skill for Claude Code.

    1. Create the folder .claude/skills/weekly-report/ in your project.
    2. Add the SKILL.md shown below, plus a template.md file with the report layout.
    3. In Claude Code, ask: "Write this week's status report from notes.md."
    4. Claude sees that the weekly-report description matches, loads the instructions, opens template.md, reads notes.md with its file tool and writes the report in your format.

    Code example

    1. The skill file: a real, working Agent Skill for Claude Code.

    
    ---
    name: weekly-report
    description: Writes the team's Friday status report in our standard format. Use when the user asks for a weekly report, status update or end-of-week summary.
    ---
    
    # Weekly status report
    
    ## Steps
    1. Read the notes or files the user points to.
    2. Open `template.md` in this folder and follow its section order exactly.
    3. Put wins first, then risks, then next week's plan.
    4. Keep it under 300 words. Use plain language, no jargon.
    5. For every risk, name an owner. If no owner is known, write "Owner: TBD".
    
    ## Rules
    - Never invent numbers. If a figure is missing, write "not reported".
    - End with the line: "Questions? Reply in #team-status."
    

    2. How a program could use skills behind the scenes. This is a simplified sketch to show the idea. It is not a real SDK API. Claude products do this for you.

    
    # Step 1: at startup, load ONLY the name and description of every skill.
    skills = load_skill_summaries("skills/")          # e.g. [("weekly-report", "Writes the team's...")]
    system = "Available skills:\n" + "\n".join(f"- {s.name}: {s.description}" for s in skills)
    
    # Step 2: the model decides which skill (if any) fits the request.
    request = "Write this week's status report from notes.md"
    chosen = model_choose_skill(request, skills)      # Claude reasons over the descriptions
    
    # Step 3: load the full instructions only for the chosen skill.
    if chosen:
        system += "\n\n" + read_file(chosen.folder + "/SKILL.md")
    
    # Step 4: run the agent; it can read extra files (template.md) with its tools when told to.
    answer = run_agent(request, system, tools=[read_file, write_file])
    

    To use skills through the Claude API (pre-built skills or your own uploaded ones, which need the code execution tool), follow the official Skills guide. Its exact request format is documented there.

    Step-by-step explanation

    1. --- … --- marks the frontmatter. name uses lowercase letters, numbers and hyphens.
    2. description is the "spine of the binder". It says what the skill does and when to use it. This is the only part Claude sees until the skill is chosen, so it decides whether the skill is ever used.
    3. Below the frontmatter, the Steps section gives the procedure in order. Numbered steps are easy for Claude to follow.
    4. "Open template.md" is a reference to an extra file. It's loaded only when Claude reaches this step.
    5. The Rules section sets limits, such as "Never invent numbers". Clear rules make results consistent.
    6. In the sketch, load_skill_summaries keeps startup cheap, model_choose_skill is the relevance decision, and the full file is read only afterwards. That is progressive disclosure in four lines.

    Combining skills with tools

    Skills and tools work together. The skill says what to do and in what order, and tools carry it out:

    Versioning, testing and maintaining skills

    Use cases

    Advantages and limitations

    βœ… Advantages

    • Write once, reuse everywhere
    • Uses little context until needed
    • Easy to read, review and share
    • Can bundle scripts and templates

    ⚠️ Limitations

    • A vague description means the skill isn't used, or is used at the wrong time
    • Scripts and files need an environment that can run code
    • Setup differs between Claude products
    • Untrusted skills can be a security risk

    🚫 Common mistakes

    • Descriptions that don't say when to use the skill
    • One giant skill that covers everything
    • Mixing up skills (know-how) with tools (actions)
    • Never testing after edits

    Best practices

    Knowledge check

    1. Which file must every Agent Skill contain?

    2. What does Claude look at to decide whether a skill is relevant?

    3. What is the main difference between a skill and a tool?

    4. What does "progressive disclosure" mean for skills?

    5. You find a skill online that includes scripts. What should you do first?

    Mini project

    Write a "meeting-notes" skill.

    1. Create a folder meeting-notes/ with a SKILL.md.
    2. Write a description that says what it does (turn raw notes into decisions, action items with owners, and open questions) and when to use it.
    3. Add numbered steps and two rules (for example "every action item needs an owner and a due date, or 'TBD'").
    4. Optional: add an example.md showing a perfect result, and reference it from SKILL.md.
    5. If you use Claude Code, place it in .claude/skills/ and test it with three requests: two that should trigger it and one that shouldn't.

    Key takeaways

    Further learning