/skill-creator
Comprehensive guide for creating effective Claude Code skills with SKILL.md files.
The /skill-creator skill teaches you how to create effective Skills that Claude can discover and use successfully.
What are Agent Skills?
Agent Skills are modular, filesystem-based capabilities that provide domain-specific expertise through progressive disclosure. They are organized prompts that get loaded on-demand.
Quick Start Workflow
- Identify the reusable pattern: What context would be useful for similar future tasks?
- Create directory and SKILL.md:
- Directory name: Follow verb-noun convention:
create-*,manage-*,setup-* - YAML frontmatter with
nameanddescription
- Directory name: Follow verb-noun convention:
- Write concise instructions: Assume Claude is smart. Only add context Claude doesn't have.
- Test with real usage: Iterate based on observations.
Example Skill
YAML
---
name: process-pdfs
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files.
---
<objective>
Extract text and tables from PDF files using Python libraries.
</objective>
<quick_start>
Extract text with pdfplumber:
import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
text = pdf.pages[0].extract_text()
</quick_start>
<advanced_features>
**Form filling**: See [forms.md](forms.md)
</advanced_features>Required XML Tags
All skills must have:
| Tag | Purpose |
|---|---|
<objective> | What the skill does and why it matters |
<quick_start> | Immediate, actionable guidance |
<success_criteria> | How to know it worked |
Conditional Tags
Add based on skill complexity:
| Tag | When to Use |
|---|---|
<context> | Background information |
<workflow> | Step-by-step procedures |
<advanced_features> | Deep-dive topics |
<validation> | How to verify outputs |
<examples> | Multi-shot learning |
<anti_patterns> | Common mistakes to avoid |
<security_checklist> | Security patterns |
Skill Directory Structure
skills/{skill-name}/
├── SKILL.md # Main entry point
├── references/ # Additional documentation
│ └── api-reference.md
└── templates/ # Optional templates
└── example.md
Best Practices
- Keep SKILL.md focused - Link to references for details
- Use progressive disclosure - Basic info first, advanced later
- Include examples - Show expected input/output
- Define success criteria - Clear completion indicators
Slash Command Wrapper
After creating a skill, create a lightweight slash command wrapper to make it invocable via /skill-name:
Location: ~/.claude/commands/{skill-name}.md
Template:
YAML
---
description: {Brief description of what the skill does}
argument-hint: [{argument description}]
allowed-tools: Skill({skill-name})
---
<objective>
Delegate {task} to the {skill-name} skill for: #$ARGUMENTS
</objective>
<process>
1. Use Skill tool to invoke {skill-name} skill
2. Pass user's request: #$ARGUMENTS
3. Let skill handle workflow
</process>
<success_criteria>
- Skill successfully invoked
- Arguments passed correctly to skill
</success_criteria>The slash command's only job is routing—all expertise lives in the skill.