Short answer
Make a folder with a SKILL.md file whose front matter gives the skill a name and a description of when to use it, then write the steps below it and add any scripts or templates the steps refer to. Install the folder in Claude Code or upload it to Claude, and Claude loads it whenever a task matches the description.
Follow-up question When is a skill better than a long prompt?
If you find yourself pasting the same long instructions into Claude every week, that workflow is a candidate for a skill. Since October 16, Anthropic lets you build your own Agent Skills and use them in the Claude apps, Claude Code and the API. A skill is simply a folder: a SKILL.md file with instructions, plus any scripts, templates or reference files those instructions need. Claude keeps a one-line summary of each installed skill in mind and opens the full folder only when a task calls for it.
Anthropic compares building a skill to writing an onboarding guide for a new colleague. You capture how the job is done once, and from then on Claude follows the same procedure every time.
How Claude finds and loads a skill
Anthropic calls the loading pattern progressive disclosure, meaning information is revealed in layers:
- At the start of a session, Claude sees only each skill's
nameanddescription. - If a request matches a description, Claude reads the whole
SKILL.md. - If the instructions point to other files, Claude opens them only when it needs them, and it can run bundled scripts without reading their code into its context.
Because of this, the description is the most important sentence you will write. It must explain both the skill's job and the situations that call for it, in words a user's request is likely to share.
A worked example: a weekly support report
Suppose that every Monday you export last week's support tickets as a CSV file and ask Claude to turn them into a report with the same headings. Here is that job as a skill:
weekly-report/
├── SKILL.md
├── template.md
└── scripts/
└── tally.py
SKILL.md starts with YAML front matter (a short block of settings between two --- lines). Only two fields are required: name, lowercase with hyphens, and description.
---
name: weekly-report
description: Turns a CSV export of the week's support tickets into the team's weekly support report. Use when the user asks for the weekly report or shares a tickets CSV.
---
# Weekly support report
## Steps
1. Run `python scripts/tally.py <file.csv>` to count tickets by category
and status. Never count rows by hand.
2. Copy the structure of `template.md` exactly, filling in the counts.
3. Under "Themes", name the three most common categories and quote one
short, anonymized customer comment for each.
4. Under "Needs attention", list tickets still open after 5 days.
## Guidelines
- Remove names, emails and order numbers from anything you quote.
- If the CSV lacks a column the template needs, say so instead of guessing.
The script does the part a program does better than a language model, counting:
# scripts/tally.py
import csv, sys
from collections import Counter
with open(sys.argv[1], newline="", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
print(f"Total tickets: {len(rows)}")
for field in ("category", "status"):
counts = Counter(row.get(field, "unknown") for row in rows)
print(f"\nBy {field}:")
for value, n in counts.most_common():
print(f" {value}: {n}")
template.md holds your report headings: Summary, Volume, Themes, Needs attention. Anthropic's engineering team makes the same point with its own PDF skill: sorting or counting through generated text is slower and less reliable than running code, and a script gives the same answer every time.
Try it: Pick a task you have explained to Claude at least three times. Write only its description line first, then three test requests a colleague might type. If the description would not obviously match all three, rewrite it before writing anything else.
Installing and sharing it
Where the folder goes depends on how you use Claude:
| Where | How |
|---|---|
| Claude Code | Place the folder in ~/.claude/skills/, or share it with your team through version control or a plugin |
| Claude apps | Turn on Skills in Settings (Pro, Max, Team, Enterprise) and upload your custom skill |
| Claude API | Manage skills through the /v1/skills endpoint; skills need the code execution tool, currently in beta |
If you would rather not write the files yourself, Claude's built-in "skill-creator" skill interviews you about the workflow and produces the folder.
Skills can run code, so treat them like software. Anthropic advises installing skills only from sources you trust, and reading any other skill's files, scripts and network calls before using it. Test a new skill on a sample file before giving it real data.
When is a skill better than a long prompt?
A skill wins when the job repeats. A pasted prompt has to be found, copied and kept up to date in every conversation; a skill lives in one place, is picked up automatically when the task matches, and can be versioned like any other file.
It also wins when the job includes steps that need precision. A prompt can only ask Claude to count carefully, while a skill can hand the counting to a script. And because only the short description sits in context until it is needed, you can install many skills without crowding Claude's working memory, which a stack of long prompts would do.
A long prompt is still the better tool for one-off work, for tasks you are still figuring out, and in settings where code execution is not available. A good path is to work the task out in conversation first, then ask Claude to help you write down what worked as a skill.
Sources
- Equipping agents for the real world with Agent Skills — Anthropic Engineering (Barry Zhang, Keith Lazuka, Mahesh Murag), October 16, 2025
- Skills (anthropics/skills README) — Anthropic on GitHub, October 18, 2025
- Introducing Claude Skills — Anthropic, October 16, 2025