Help us improve
Share bugs, ideas, or general feedback.
From plugin-creator
Reference for Agent Skills Open Standard. Guides authoring portable skills for Claude Code, Cursor, VS Code, and 20+ AI agents. Covers frontmatter schema, naming rules, directory structure, validation.
npx claudepluginhub jamie-bitflight/claude_skills --plugin plugin-creatorHow this skill is triggered — by the user, by Claude, or both
Slash command
/plugin-creator:agentskillsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The Agent Skills format is an open standard for extending AI agent capabilities with specialized knowledge and workflows. Originally developed by Anthropic, adopted by 25+ agent products.
Guides creation of Claude Code SKILL.md files with YAML frontmatter, progressive disclosure, and naming conventions. Use when authoring or auditing agent skills.
Guides creation of Agent Skills with progressive disclosure, best practices, structure, and categories. Use when building new skills or understanding skill format.
Scaffolds new Claude Code skills with proper structure, progressive disclosure, and bundled resource conventions.
Share bugs, ideas, or general feedback.
The Agent Skills format is an open standard for extending AI agent capabilities with specialized knowledge and workflows. Originally developed by Anthropic, adopted by 25+ agent products.
Source: https://agentskills.io
When to use this skill: Before creating any skill that should be portable across multiple agent products. For Claude Code-specific features (hooks, context fork, model selection, invocation control), see ../claude-skills-overview-2026/SKILL.md instead.
Every skill is a directory containing a SKILL.md file with YAML frontmatter and Markdown body:
skill-name/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation loaded on demand
└── assets/ # Optional: templates, images, data files
---
name: skill-name
description: What this skill does and when to use it.
---
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents.
license: Apache-2.0
compatibility: Requires git, docker, jq, and access to the internet
metadata:
author: example-org
version: "1.0"
allowed-tools: Bash(git:*) Bash(jq:*) Read
---
| Field | Required | Max Length | Constraints |
|---|---|---|---|
name | Yes | 64 chars | Lowercase alphanumeric + hyphens. No leading/trailing/consecutive hyphens. Must match directory name. |
description | Yes | 1024 chars | Non-empty. Describe what + when to use. Include trigger keywords. |
license | No | — | License name or reference to bundled file. |
compatibility | No | 500 chars | Environment requirements (products, packages, network). |
metadata | No | — | Arbitrary string key-value pairs. |
allowed-tools | No | — | Space-delimited pre-approved tools. Experimental. |
a-z, 0-9, -)---)Valid: pdf-processing, data-analysis, code-review
Invalid: PDF-Processing (uppercase), -pdf (leading hyphen), pdf--processing (consecutive)
Write in third person. Include both what the skill does and when to use it.
# Good — specific, includes triggers
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.
# Weak — vague, no triggers
description: Helps with PDFs.
Preferred patterns: Use gerund form (processing-pdfs) or noun phrases (pdf-processing). Prefer descriptive names like pdf-processing over generic names like helper or utils.
Skills use three-level loading to manage context efficiently:
name + description loaded at startup for all skillsscripts/, references/, assets/ loaded on demandKeep SKILL.md body lean. Move detailed reference material to separate files. Run uvx skilllint@latest check <skill-path> after writing and follow its guidance on token-based sizing.
Pattern 1 — High-level guide with references:
# PDF Processing
## Quick start
[core example]
## Advanced features
- **Form filling**: See [references/forms.md](references/forms.md)
- **API reference**: See [references/api.md](references/api.md)
Pattern 2 — Domain-specific organization:
bigquery-skill/
├── SKILL.md (overview + navigation)
└── references/
├── finance.md
├── sales.md
└── product.md
Pattern 3 — Conditional details:
For simple edits, modify XML directly.
**For tracked changes**: See [references/redlining.md](references/redlining.md)
Rules:
Executable code agents can run. Should be self-contained, include helpful error messages, handle edge cases. Scripts save tokens (no code generation needed) and ensure consistency.
Make execution intent clear:
scripts/extract.py to extract fields" (execute)scripts/extract.py for the algorithm" (read as reference)Documentation loaded on demand. Keep individual files focused — smaller files mean less context usage. Structure files >100 lines with a table of contents.
Static resources used in output (templates, images, data files). Not loaded into context — used by the agent in its output.
For the complete Anthropic authoring guide, see references/best-practices.md.
Key principles:
Focus skill content on:
scripts/, references/, and assets/ for detailsPlace user-facing docs (README, CHANGELOG, INSTALLATION_GUIDE), setup procedures, and time-sensitive details in a separate "Legacy patterns" section or external docs. Claude already knows general concepts — include only skill-specific information.
Use the skills-ref reference library to validate:
# Validate a skill directory
skills-ref validate ./my-skill
# Read skill properties as JSON
skills-ref read-properties ./my-skill
# Generate <available_skills> XML for agent prompts
skills-ref to-prompt ./skill-a ./skill-b
Python API:
from pathlib import Path
from skills_ref import validate, read_properties, to_prompt
problems = validate(Path("my-skill"))
props = read_properties(Path("my-skill"))
prompt = to_prompt([Path("skill-a"), Path("skill-b")])
Install: pip install -e . from the skills-ref directory.
The open standard defines a portable subset. Claude Code extends it with additional frontmatter fields.
| Feature | Open Standard | Claude Code Extension |
|---|---|---|
name | Yes | Yes |
description | Yes | Yes |
license | Yes | Yes |
compatibility | Yes | Yes |
metadata | Yes | Yes |
allowed-tools | Yes (experimental) | Yes (extended syntax) |
argument-hint | No | Yes |
model | No | Yes |
context: fork | No | Yes |
agent | No | Yes |
user-invocable | No | Yes |
disable-model-invocation | No | Yes |
hooks | No | Yes |
For portable skills: Use only the open standard fields. Other agents will ignore unknown fields, but keeping frontmatter clean improves compatibility.
For Claude Code skills: See ../claude-skills-overview-2026/SKILL.md for the full extended schema.
references/specification.mdreferences/best-practices.mdreferences/integration.md