Agent Skills started as Anthropic's internal format for letting Claude load specialised instructions per task. Eight months later, it's the only AI-tool extensibility format adopted by all four major AI IDE vendors — Anthropic, OpenAI, Google, and Microsoft. This is what Skills are, why the open standard matters, and how to write one.
The 30-second mental model
A Skill is a folder. The folder has a SKILL.md file that tells the
model what the Skill does and when to use it, plus optional scripts,
templates, and reference docs. The model loads the Skill when a
matching task arrives — no manual selection required.
my-skill/
├── SKILL.md # Required: instructions + metadata
├── scripts/ # Optional: Python/JS/Bash executable code
│ └── helper.py
├── references/ # Optional: deeper docs the model can load
│ └── api-reference.md
└── assets/ # Optional: templates, schemas, examples
└── template.docxThe SKILL.md frontmatter:
---
name: excel-financial-report
description: |
Use this skill when the user asks to generate a financial report
spreadsheet. Produces a multi-sheet .xlsx with summary, detail,
and pivot tables.
---
# Instructions
When invoked, generate an Excel financial report by:
1. Reading the input data from `references/data-schema.md`
2. Using `scripts/generate_report.py` to assemble the .xlsx
3. Returning the file path to the userThat's the whole format. Read the description; if Claude thinks
your prompt matches, the full Skill loads. Progressive disclosure
— the metadata is always in context, the full body only when needed.
Why this caught on (the open standard moment)
October 16, 2025: Anthropic shipped Agent Skills for Claude.
December 18, 2025: Anthropic released the SKILL.md spec at agentskills.io as an open standard, donating governance to the Agentic AI Foundation under the Linux Foundation.
Within 48 hours:
- Microsoft integrated SKILL.md into VS Code via Copilot
- OpenAI added support to Codex CLI
By March 2026, 32+ tools had adopted the format:
- Google Gemini CLI
- JetBrains Junie
- AWS Kiro
- Cursor
- GitHub Copilot
- Continue.dev
- Aider
- ...
This is the first time the AI IDE category has converged on a single extension format. Pre-Skills, each tool had its own:
- VS Code: extensions + Copilot custom instructions
- Cursor:
.cursor/rules+ custom prompts - Claude Code:
~/.claude/agents/*.mdsubagents - Cline: custom MCP servers
Post-Skills: write once in SKILL.md, the same Skill loads in any compatible tool.
What Skills are good for
Three high-value patterns:
1. Domain knowledge packaging
Your company has internal conventions, naming patterns, deployment processes that aren't in the model's training data. Package them as a Skill, commit to the repo, every developer using any compatible AI tool gets the same baseline.
---
name: acme-deployment
description: |
Use this skill when the user asks to deploy or release a service
in the Acme codebase. Includes our staging→prod gates, runbook
links, and on-call expectations.
---2. Output formatting + templates
If your team always produces certain artifact types (architecture docs, RFCs, runbooks, PR templates), encode the format once:
---
name: acme-rfc
description: |
Use this skill when the user asks to write an RFC. Produces a
.md file in our standard RFC template with sections: Problem,
Non-goals, Proposal, Alternatives Considered, Rollout, Risks.
---3. Tool wrappers
Common scripts that should always be invoked the same way — wrap them in a Skill so the model can call them consistently:
---
name: deploy-staging
description: |
Use this skill when the user asks to deploy to staging. Invokes
scripts/deploy_staging.sh after running pre-flight checks.
---Where Skills live
Three deployment surfaces:
| Surface | Path | Sharing |
|---|---|---|
| Claude Code | ~/.claude/skills/ or <repo>/.claude/skills/ | Per-user or repo-shared |
| Claude API | Upload via /v1/skills endpoint | Workspace-wide |
| Claude.ai | Settings > Features > upload .zip | Individual user |
Anthropic ships four pre-built Skills out of the box: docx,
pptx, xlsx, pdf — these are what powered Claude's document
creation features starting September 2025.
Production results: 87.5% time reduction
The most-cited deployment number: Rakuten reported 87.5% workflow time reduction using Skills for financial workflows. Full-day tasks became one-hour tasks.
The mechanism: Skills compose. The model picks the right combination automatically. A "generate quarterly financial report" prompt might trigger:
xlsxskill (build the spreadsheet)acme-financial-templatesskill (apply company formatting)pdfskill (export the executive summary)
Pre-Skills, the user would orchestrate these by prompting through each step. Post-Skills, one prompt fires the whole chain.
How to write one (5-minute version)
# 1. Create the skill folder
mkdir -p ~/.claude/skills/my-skill
# 2. Write SKILL.md
cat > ~/.claude/skills/my-skill/SKILL.md << 'EOF'
---
name: my-skill
description: |
Use this skill when the user asks to do X. Produces Y.
---
# Instructions
When invoked:
1. Read the input
2. Do the thing
3. Return the result
EOF
# 3. (Optional) Add scripts
mkdir ~/.claude/skills/my-skill/scripts
cp my_script.py ~/.claude/skills/my-skill/scripts/
# 4. Reload Claude Code (or open a new session)
# Skills auto-discover from ~/.claude/skills/ on startup
# 5. Test it
claude "do X for me"
# Claude should invoke my-skill automaticallyIn Claude Code 2.1+ (January 2026), Skills hot-reload — no restart required after editing.
Composability + the description field
The single biggest factor in whether your Skill gets invoked correctly: how specific your description is.
Bad:
description: Helps with code review.Good:
description: |
Use this skill when the user asks to review a TypeScript pull
request that touches the Acme payments codebase. Applies our
PCI-DSS-compliance checklist and the Acme code review template.The model uses the description to decide which Skill (or skills, plural — they compose) to load. Vague descriptions cause silent non-invocation. The harder you specify the when, the more reliable the Skill becomes.
Common gotchas
- Description too long. Claude.ai caps descriptions at 200 characters. The Agent Skills spec allows 1024. Test on the surface you care about.
- Skills competing. If two Skills have overlapping descriptions, Claude picks one — usually correctly, but inspect the chain of thought to verify.
- No telemetry. Skills don't surface invocation metrics
out-of-the-box. Track usage via Claude Code's
claude-skills.logfile or via API request inspection. - Skill version drift. When teams share Skills via git, version
the SKILL.md frontmatter (
version: 1.2.0) and document breaking changes.
Skills + Anvat
Anvat is an Anthropic-compatible API gateway. Skills work end-to-end through Anvat exactly as they do directly against api.anthropic.com:
- Claude Code via Anvat: Skills installed in
~/.claude/skillsare loaded by Claude Code regardless of the upstream endpoint. Anvat is transparent to the Skills layer. - API via Anvat: The
/v1/skillsendpoint is passed through. Custom Skills uploaded via the API work through Anvat with the same beta headers (code-execution-2025-08-25,skills-2025-10-02).
The cost benefit: Skills frequently produce long output (full spreadsheets, multi-page documents). Output tokens are the expensive side. Anvat's 30% off output rate compounds with Skills' productivity gains.
Bottom line
Skills are the AI-tool extensibility format that won the standardisation race. If you're building anything with Claude Code, Cursor, or any of the 32+ Skills-compatible tools, learning the format is now a 30-minute prerequisite. The ceiling isn't the model — it's how well your tooling captures the team's expertise.
Building coding agents in 2026 → Claude Code MCP setup guide →
Run Skills-enabled Claude Code at 30% off list
Anvat is the discounted Anthropic-compatible backend. Skills, MCP, hooks, subagents — everything works unchanged. Two env vars to switch.
Try free → →