SKILL.md format
What is SKILL.md?
SKILL.md is the standard format for defining code agent skills. Published by Anthropic as an open standard in December 2025, it’s currently compatible with:
- Claude Code
- Gemini CLI
- Codex / ChatGPT
- Windsurf
A skill written in SKILL.md works without modification on all these agents.
Structure of a SKILL.md file
---name: skill-namedescription: One-line description for the agentuser-invocable: trueallowed-tools: - Read - Write - Bash - Glob - Grep---
# Agent instructions
The body content contains the instructions the agent followswhen executing this skill. Write them in natural Markdown.
## When to use this skill
Define in what context the agent should activate this skill.
## Execution steps
1. First step2. Second step3. Third step
## Examples
\```bash# Usage example/skill-name argument\```Frontmatter fields
name (required)
Skill identifier. No spaces or special characters. Used to invoke it with /<name>.
name: process-csvdescription (required)
One-line description. The agent uses it to decide if this skill is relevant for the current task.
description: Processes a CSV file and generates basic statisticsuser-invocable (required)
If true, the user can explicitly invoke the skill with /<name>. If false, the agent can use it internally but the user doesn’t invoke it directly.
user-invocable: trueallowed-tools (optional)
List of tools the agent can use when executing this skill. If omitted, the agent uses the default tools available in the environment.
allowed-tools: - Read - Write - Bash - Glob - Grep - TaskSkill location
A Puruto’s skills live in .claude/skills/<name>/SKILL.md:
.claude/└── skills/ ├── init/ │ └── SKILL.md ├── help/ │ └── SKILL.md └── my-skill/ ├── SKILL.md └── scripts/ ← helper scripts (optional) └── helper.pyBest practices
Clear, executable instructions
Write instructions in imperative form, as if speaking directly to the agent:
# GoodWhen the user invokes this skill:1. Read the specified file2. Validate the JSON format3. Display a summary of the fields
# BadThis skill is for reading files and displaying information about them.One responsibility per skill
Each skill does one specific thing. If a skill does too much, split it into several.
Document parameters
If the skill accepts arguments, document them explicitly:
## Parameters
- `--path <path>` — path to the file to process (required)- `--format json|csv` — output format (default: json)Include usage examples
## Examples
\```/my-skill --path data/file.csv/my-skill --path data/file.csv --format json\```