Reference
Skill File Format
Skill files are named SKILL.md and define a reusable capability that agents can use during task execution.
File structure
---
# YAML Frontmatter
name: Skill Name
description: One-sentence purpose
tools: [bash, read, write]
tags: [tag1, tag2]
category: certified
author: author-name
source: org/repo-name
---
## Overview
What this skill does and when to use it.
## Steps
Detailed procedure the agent should follow.
## Rules
Constraints and non-negotiables.
## Examples
Concrete scenarios with expected inputs and outputs.Frontmatter fields
All frontmatter fields are optional.
| Field | Type | Description |
|---|---|---|
id | string | Kebab-case identifier (e.g., database-migration). Auto-derived from directory name if omitted. |
name | string | Human-readable display name. |
description | string | One-sentence summary of what the skill does. |
tools | string[] | Tools the skill requires (see below). |
tags | string[] | Lowercase kebab-case tags for categorization. |
category | string | Trust tier: certified, community, or omit for local. |
author | string | Creator name or handle. |
source | string | Origin repository (e.g., exponential-work/skills). |
Supported tools
| Tool | Description |
|---|---|
bash | Execute shell commands |
read | Read file contents |
write | Create or overwrite files |
edit | Modify existing files |
glob | Find files by pattern |
grep | Search file contents |
Body sections
The markdown body contains the skill's instructions. While the section names are flexible, these are the recommended sections:
Overview
A brief explanation of what the skill does, when it's useful, and any prerequisites.
## Overview
This skill creates PDF documents from HTML content using Puppeteer.
Use it when a task requires generating downloadable PDF output.
Requires Node.js 18+ installed on the machine.Steps
A numbered, procedural guide that the agent follows. Be specific and actionable.
## Steps
1. Read the source content (HTML, Markdown, or structured data)
2. Set up the HTML template with proper styling
3. Launch a headless browser using Puppeteer
4. Render the HTML and generate the PDF
5. Save the PDF to the specified output path
6. Verify the PDF opens correctlyRules
Constraints the agent must follow when using this skill.
## Rules
- Always use A4 page size unless the task specifies otherwise
- Include page numbers in the footer
- Never embed external fonts — use system fonts only
- Maximum file size: 10MB
- Always set `printBackground: true` for styled documentsExamples
Concrete scenarios showing expected behavior.
## Examples
### Invoice generation
Input: JSON invoice data with line items
Output: Formatted PDF invoice with company header, line items table, and total
### Report export
Input: Markdown report with charts (as images)
Output: Multi-page PDF with proper page breaks between sectionsFile locations
Skills live in a directory named after the skill, containing a SKILL.md file:
~/.claude/skills/
└── my-skill/
└── SKILL.md| Path | Scope |
|---|---|
~/.claude/skills/{skill-name}/SKILL.md | Global — available in all spaces |
<project>/.claude/skills/{skill-name}/SKILL.md | Project — available in that project's space only |
Certified skills location
Certified skills are stored in the Exponential registry:
~/.exponential/registry/skills/{skill-id}/SKILL.mdThese are managed by Exponential and should not be manually edited.
Quality requirements
- Minimum length: 100 words in the body content. Skills shorter than this are typically too vague to be useful.
- Actionable content: Skills should contain procedures, not descriptions. "Here's how to do X" not "X is a thing that exists."
- Specific examples: Include at least one concrete example with expected inputs and outputs.
Complete example
---
name: Code Documentation
description: Generates comprehensive code documentation from source files
tools: [read, write, glob, grep]
tags: [documentation, code, jsdoc]
author: marc
---
## Overview
This skill generates documentation for codebases. It reads source files,
extracts function signatures, types, and comments, then produces structured
markdown documentation.
Best used for: API documentation, library reference docs, internal code guides.
## Steps
1. Use `glob` to find all source files matching the target patterns
(e.g., `src/**/*.ts`, `lib/**/*.py`)
2. Read each file and extract:
- Exported functions and their signatures
- Type definitions and interfaces
- JSDoc/docstring comments
- Module-level documentation
3. Organize by module/directory structure
4. Generate markdown documentation with:
- Table of contents
- Module overview sections
- Function reference tables (name, params, return type, description)
- Type definitions
- Usage examples from existing comments
5. Write the documentation to the specified output file
## Rules
- Only document exported/public APIs — skip internal/private functions
- Preserve the original directory structure in the documentation hierarchy
- If a function has no documentation, note it as "Undocumented" — don't invent docs
- Use fenced code blocks for all code examples
- Link between related types and functions using markdown anchors
- Generate a table of contents for documents with more than 5 sections
## Examples
### TypeScript library
Input: `src/` directory with TypeScript modules
Output: `docs/API.md` with:
- Module listing
- Function signatures with parameter types
- Interface definitions
- Usage examples from JSDoc @example tags
### Python package
Input: `mypackage/` directory with Python modules
Output: `docs/reference.md` with:
- Module listing
- Function signatures with type hints
- Class definitions with method tables
- Docstring content preserved as descriptionsConventions
- Directory naming: Use lowercase kebab-case for skill directories (e.g.,
code-documentation/). - One skill per directory: Each
SKILL.mddefines exactly one skill. - Keep it focused: A skill should do one thing well. "Generate PDFs" is a skill. "Generate PDFs, send emails, and update databases" is three skills.