01

What Are Agent Skills?

Reusable, modular capabilities that turn a general-purpose Claude into a specialist โ€” automatically.

The Problem Skills Solve

Every time you start a new conversation with Claude, it starts fresh. If you always need Claude to follow a particular workflow โ€” say, always processing PDFs a certain way, or always formatting code reviews in a specific structure โ€” you have to re-explain that every single time.

Agent Skills solve this. They're like a permanent onboarding guide stored on a virtual filesystem โ€” Claude reads the relevant parts automatically whenever they apply.

๐Ÿ”‘
The core distinction

Prompts are conversation-level instructions for one-off tasks. Skills are reusable packages that load on-demand and eliminate the need to repeatedly provide the same guidance across multiple conversations.

FROM THE DOCS
Skills are reusable, filesystem-based
resources that provide Claude with
domain-specific expertise: workflows,
context, and best practices that
transform general-purpose agents
into specialists. Unlike prompts
(conversation-level instructions for
one-off tasks), Skills load on-demand
and eliminate the need to repeatedly
provide the same guidance across
multiple conversations.
PLAIN ENGLISH

Skills are saved files on a virtual hard drive โ€” not text in a conversation.

They give Claude specialized knowledge for a particular domain or task.

They include workflows, context, and established best practices.

This turns a general-purpose Claude into a domain expert.

Unlike instructions you type into chat (which disappear after the conversation)...

...Skills load automatically whenever they're relevant.

You create them once and never have to explain the same thing again.

Three Key Benefits

๐ŸŽฏ

Specialize Claude

Tailor Claude's capabilities for domain-specific tasks. A PDF-processing Skill makes Claude an expert at extracting tables and filling forms โ€” even if you never explain how.

โ™ป๏ธ

Reduce Repetition

Create once, use automatically. No more copy-pasting instructions at the start of every session. Skills persist across all conversations.

๐Ÿงฉ

Compose Capabilities

Combine multiple Skills to build complex workflows. A data pipeline might use an Excel Skill, a PDF Skill, and a custom reporting Skill together.

Two Kinds of Skills

There are two categories of Skills, and they work identically โ€” Claude uses them the same way regardless of origin.

๐Ÿญ
Pre-built Agent Skills

Made by Anthropic for common document tasks: PowerPoint, Excel, Word, and PDF. Available to all users on claude.ai and via the Claude API. No setup required.

๐Ÿ› ๏ธ
Custom Skills

Skills you build yourself to package domain expertise and organizational knowledge. Create them in Claude Code, upload via the API, or add in claude.ai settings.

๐Ÿ’ก
You are already using Skills

If you use Claude Code, Skills are active right now. The resource-to-course and codebase-to-course capabilities this very study guide was built with are Skills stored in ~/.claude/skills/.

Check Your Understanding

Think through each question before revealing the answer.

Question

You keep repeating the same 10-line instruction to Claude at the start of every conversation. Should you use a prompt or a Skill?

Answer

A Skill. Prompts are for one-off, conversation-level tasks. If you are providing the same guidance repeatedly, that is exactly what Skills are designed to eliminate โ€” create it once and it loads automatically whenever relevant.

Question

A colleague uploads a Custom Skill to the Claude API. Can you use it in your claude.ai account without any extra steps?

Answer

No. Custom Skills do not sync across surfaces. Skills uploaded to the API are workspace-wide on the API, but they are not automatically available on claude.ai. You would need to upload the same Skill separately to claude.ai.

02

How Skills Work

Progressive disclosure: Claude loads only what it needs, exactly when it needs it.

Three Levels of Loading

The central architectural idea in Skills is progressive disclosure. Instead of dumping everything into the context window at startup, Skills load in stages:

Level 1 Metadata โ€” always loaded (~100 tokens). Just the name and description from the YAML frontmatter. Claude knows the Skill exists and when to use it, but hasn't read any instructions yet.
Level 2 Instructions โ€” loaded when triggered (<5k tokens). The full SKILL.md body with workflows, best practices, and guidance. Only enters the context window when a user request matches the Skill description.
Level 3+ Resources โ€” loaded as needed (effectively unlimited). Bundled files โ€” extra markdown docs, scripts, templates โ€” accessed on demand via bash. Scripts run without their code entering the context at all: only output is returned.
โšก
Why this matters practically

You can install dozens of Skills without a context penalty. Only the tiny metadata (∼100 tokens each) sits in the context at startup. The rest loads on-demand. This is why Skills are fundamentally different from just adding instructions to your system prompt.

Level 1: The YAML Frontmatter

Every Skill begins with a YAML frontmatter block. This is the only part that is always loaded โ€” it is what allows Claude to decide whether to invoke the Skill at all.

SKILL.md EXAMPLE
---
name: pdf-processing
description: Extract text and tables
  from PDF files, fill forms,
  merge documents. Use when
  working with PDF files or
  when the user mentions PDFs,
  forms, or document extraction.
---
PLAIN ENGLISH

Start of the metadata block.

A unique identifier for this Skill โ€” lowercase, hyphens only, max 64 chars.

The description is the triggering signal.

It tells Claude WHAT the Skill does...

...and WHEN to use it.

Including trigger phrases ("when the user mentions PDFs") makes the Skill fire reliably.

This entire block is about 100 tokens โ€” tiny cost, always present.

End of the metadata block.

The description field is the most important thing you write when creating a Skill. It is the sole mechanism that determines whether Claude invokes the Skill โ€” so it must be specific about both what the Skill does and the contexts in which it should fire.

Level 3: Scripts Run Without Entering Context

The most powerful part of the Skills architecture: executable scripts that Claude runs via bash โ€” their code never occupies the context window.

SKILL DIRECTORY
pdf-skill/
โ”œโ”€โ”€ SKILL.md        # always read when triggered
โ”œโ”€โ”€ FORMS.md        # read only if form-filling needed
โ”œโ”€โ”€ REFERENCE.md    # read only if deep ref needed
โ””โ”€โ”€ scripts/
    โ””โ”€โ”€ fill_form.py  # RUNS, never read into context
PLAIN ENGLISH

A Skill is just a folder on the filesystem.

SKILL.md loads when the Skill is triggered โ€” always.

FORMS.md is optional โ€” only loaded if the task involves forms.

REFERENCE.md sits dormant if the task doesn't need it โ€” zero token cost.

Scripts live in a subfolder.

fill_form.py gets executed by Claude via bash โ€” but its source code is never read into the context window. Only the output (e.g., "Form filled successfully") is returned.

The Three Levels โ€” Flashcard Drill

Click each card to test your recall of the loading levels.

Level 1 ยท Metadata

When is Level 1 loaded?

Click to flip
Answer

Always โ€” at startup, every session. Only the YAML frontmatter (name + description). ~100 tokens per Skill.

Level 2 ยท Instructions

What triggers Level 2 loading?

Click to flip
Answer

A user request that matches the Skill's description. Claude reads SKILL.md from the filesystem via bash โ€” only then do the instructions enter the context window.

Level 3 ยท Resources

Why do scripts never consume context tokens?

Click to flip
Answer

Because Claude runs them via bash โ€” it doesn't read the code. Only the script's output enters the context. The source code stays on the filesystem.

Progressive Disclosure

What practical benefit does progressive disclosure give you?

Click to flip
Answer

You can install many Skills with no context penalty. Only the ~100-token metadata for each Skill sits in context at startup. Full instructions and resources load only when needed.

1 / 4
03

Building & Using Skills

SKILL.md structure, where Skills work, and what pre-built Skills are available.

Anatomy of a SKILL.md

Every Skill requires exactly one file: SKILL.md. The SKILL.md file has two parts โ€” the YAML frontmatter and the instruction body.

SKILL.md TEMPLATE
---
name: your-skill-name
description: What it does and
  when to use it.
---

# Your Skill Name

## Instructions
[Step-by-step guidance]

## Examples
[Concrete examples]
PLAIN ENGLISH

Start of the required metadata block.

Unique ID: lowercase letters, numbers, hyphens only. Max 64 characters.

The triggering description โ€” what Claude looks for to decide whether to invoke this Skill.

Must be non-empty; max 1024 characters; no XML tags.

End of the metadata block.

(blank line)

The instruction body starts here โ€” everything below is loaded when the Skill triggers.

Step-by-step workflows, best practices, anything Claude needs to follow.

Concrete worked examples help Claude apply the Skill correctly.

๐Ÿšซ
Forbidden in name and description fields

Neither field can contain XML tags. The name field also cannot contain the reserved words "anthropic" or "claude".

Where Skills Work

Skills are available across Claude's products, but with different constraints. The key difference is sharing scope โ€” who can see the Skill once it's installed.

โš™๏ธ

Claude API

Supports pre-built and custom Skills. Custom Skills are workspace-wide โ€” upload once, all team members can use them. Requires three beta headers.

๐Ÿ’ป

Claude Code

Supports custom Skills only. Filesystem-based โ€” no API upload needed. Store in ~/.claude/skills/ (personal) or .claude/skills/ (project). Full network access.

๐ŸŒ

claude.ai

Supports pre-built and custom Skills. Custom Skills are individual to each user โ€” not shared org-wide. Upload as a .zip file via Settings > Features. Pro/Max/Team/Enterprise only.

Key Facts โ€” Fill in the Blanks

Click each blank to reveal the answer.

Complete the sentence

Level 1 metadata costs approximately __________ per Skill, while Level 2 instructions cost ________________ when triggered.

Complete the sentence

Custom Skills on the Claude API are shared ________________, while on claude.ai they are visible only to the ________________ who uploaded them.

Complete the sentence

The two required fields in a SKILL.md frontmatter are ______ and ___________.

Complete the sentence

In Claude Code, Skills can be stored personally in __________________ or per-project in ________________.

Apply What You Know

You built a Skill that never fires even when you use it for exactly its stated purpose. Which field is most likely the problem?

You build a Skill that needs to call an external weather API for real-time data. You deploy it via the Claude API. What happens?

04

Security, Limits & Review

What Skills can't do, what you must protect against, and a full review deck to cement everything.

The Security Model

Skills run with Claude's full permissions. This is powerful โ€” and it means you need to treat Skill sources with the same care you'd give any code you run on your machine. Four threat categories matter most.

FROM THE DOCS
Skills execute in the same security
context as Claude itself. Review
Skill contents before installing.
Externally sourced content may
contain prompt injection attempts.
Avoid Skills that request excessive
permissions beyond their stated
purpose. Sensitive data in Skill
context may be exposed to bundled
scripts.
PLAIN ENGLISH

A Skill runs as Claude โ€” not in a sandbox. It can read files, run scripts, make API calls.

Read the SKILL.md before you install anything from the internet.

Web pages, PDFs, or data a Skill processes could contain hidden instructions trying to hijack Claude.

A Skill that asks to read your SSH keys "for a formatting task" is a red flag.

Whatever data is in your conversation when a Skill fires could be read by that Skill's scripts.

๐Ÿ”

Audit before install

Read every line of SKILL.md and any bundled scripts before installing. If a Skill comes from an untrusted source, treat it like untrusted code โ€” because that's what it is.

๐Ÿ’‰

Prompt injection risk

A Skill that processes external content (web pages, emails, documents) can encounter text that tries to override Claude's instructions. Watch for unexpected behavior after a Skill processes external data.

๐Ÿ”‘

Permission creep

Legitimate Skills request only what they need. A PDF-processing Skill has no reason to access your git config or environment variables. Scope mismatch between stated purpose and requested actions is a warning sign.

๐Ÿ—„๏ธ

Data exposure

Scripts bundled with a Skill can read files that Claude can access. Don't use Skills with untrusted scripts when sensitive credentials, private keys, or confidential documents are in scope.

Key Limitations

Skills are powerful but not universal. These are the hard constraints โ€” not bugs, but deliberate design decisions with real practical implications.

No cross-surface sync Skills don't travel between platforms. A Custom Skill uploaded to the Claude API is not automatically available on claude.ai, and vice versa. You must install it separately on each surface where you want it. Pre-built Skills are the exception โ€” Anthropic distributes them across all platforms.
Sharing scope varies Sharing scope depends on where you install. API: workspace-wide (all team members see it). Claude.ai: individual only (you alone). Claude Code: personal (~/.claude/skills/) or project-scoped (.claude/skills/) โ€” not shared beyond your machine unless you commit the directory.
No network on the API The Claude API runtime has no network access for Skills. Scripts cannot make HTTP requests or call external APIs. Claude Code has full network access. Claude.ai access varies. Design accordingly โ€” a Skill that needs real-time data cannot run on the API.
Name constraints The name field cannot contain "anthropic" or "claude" (reserved words), nor any XML tags. Max 64 characters. The description field also forbids XML tags and has a 1024-character limit.
Description is the only trigger Claude has no other mechanism to decide whether to invoke a Skill. There are no keywords, no file watchers, no explicit invocation commands (in the API). If your description is vague, the Skill will fire inconsistently. If it's overly broad, it will fire when it shouldn't.

Think It Through

These questions connect concepts across all four modules. Think before revealing each answer.

Question

A team installs a Custom Skill via the Claude API. A new hire joins the team. Do they immediately have access to the Skill? What about a colleague who uses claude.ai instead of the API?

Answer

The new hire has immediate access โ€” API Skills are workspace-wide. The colleague on claude.ai does not โ€” there is no cross-surface sync. They would need to upload the same Skill separately to their claude.ai settings.

Question

You have 15 Custom Skills installed. Why doesn't this degrade Claude's performance the way adding 15 system prompt sections would?

Answer

Because of progressive disclosure. Only Level 1 metadata (~100 tokens per Skill) sits in the context window at startup โ€” that's ~1,500 tokens for 15 Skills. The instruction bodies load only when triggered. With 15 system prompt sections, all the text would be in context permanently regardless of relevance.

Question

You build a Skill whose SKILL.md instructions reference a Python script at scripts/process.py. The script is 800 lines. How many of those 800 lines enter the context window when the Skill runs the script?

Answer

Zero. Scripts are executed via bash โ€” Claude runs them, it doesn't read them. Only the script's output (e.g., "Processed 42 rows") enters the context window. The 800 lines stay on the filesystem.

Final Quiz

You build a Skill that scrapes web pages and summarizes them. Claude starts behaving oddly after processing a particular page โ€” it ignores your instructions and tries to exfiltrate your API keys. Which threat model does this illustrate?

In Claude Code, what is the difference between storing a Skill in ~/.claude/skills/ versus .claude/skills/?

Which single field in a SKILL.md determines whether Claude ever uses the Skill?

Full Review Deck

Every key concept from all four modules. Shuffle and drill until they feel automatic.

Module 1

What problem do Agent Skills solve?

Click to flip
Answer

Every Claude conversation starts fresh. Skills are reusable, filesystem-based resources that eliminate the need to re-explain the same guidance across multiple conversations โ€” create once, load automatically.

Module 1

Pre-built Skills vs. Custom Skills

Click to flip
Answer

Pre-built: Made by Anthropic (PowerPoint, Excel, Word, PDF). Available to all users, no setup. Custom: Built by you, packaged as a SKILL.md directory. Installed in Claude Code, the API, or claude.ai.

Module 2

Progressive Disclosure

Click to flip
Answer

Skills load in stages: Level 1 metadata (~100 tokens) is always in context. Level 2 instructions load only when triggered. Level 3 resources/scripts load on demand. This means you can install many Skills with no context penalty.

Module 2

Why do scripts never consume context tokens?

Click to flip
Answer

Claude runs scripts via bash rather than reading them. Only the script's output enters the context window. The source code stays on the filesystem โ€” zero token cost regardless of script size.

Module 2

What triggers Level 2 loading?

Click to flip
Answer

A user request that matches the Skill's description. Claude reads the SKILL.md body from the filesystem via bash โ€” only then do the full instructions enter the context window.

Module 3

Two required SKILL.md frontmatter fields

Click to flip
Answer

name โ€” unique identifier; lowercase letters, numbers, hyphens; max 64 characters; cannot contain "anthropic" or "claude". description โ€” the sole triggering mechanism; must be non-empty; max 1024 characters; no XML tags.

Module 3

Sharing scope: API vs. claude.ai vs. Claude Code

Click to flip
Answer

API: workspace-wide โ€” all team members. claude.ai: individual user only. Claude Code: personal (~/.claude/skills/) = all your projects; project (.claude/skills/) = that project only.

Module 3

Which platform has no network access for Skills?

Click to flip
Answer

The Claude API. Skills deployed via the API cannot make external HTTP calls or access the internet. Claude Code has full network access. Claude.ai access varies by settings.

Module 4

Prompt injection in the context of Skills

Click to flip
Answer

When a Skill processes external content (web pages, documents, emails), that content could contain hidden instructions designed to override Claude's behavior. Watch for unexpected actions after a Skill handles external data.

Module 4

No cross-surface sync

Click to flip
Answer

Custom Skills do not automatically transfer between surfaces. A Skill installed on the Claude API is not available on claude.ai, and vice versa. You must install it separately on each platform where you want it.

1 / 10