Skill Writer
This Skill helps you create well-structured Agent Skills for Claude Code that follow best practices and validation requirements.
When to use this Skill
Use this Skill when:
- •Creating a new Agent Skill
- •Writing or updating SKILL.md files
- •Designing skill structure and frontmatter
- •Troubleshooting skill discovery issues
- •Converting existing prompts or workflows into Skills
Instructions
Step 1: Determine Skill scope
First, understand what the Skill should do:
- •
Ask clarifying questions:
- •What specific capability should this Skill provide?
- •When should Claude use this Skill?
- •What tools or resources does it need?
- •Is this for personal use or team sharing?
- •
Keep it focused: One Skill = one capability
- •Good: "PDF form filling", "Excel data analysis"
- •Too broad: "Document processing", "Data tools"
Step 2: Choose Skill location
Determine where to create the Skill:
Personal Skills (~/.claude/skills/):
- •Individual workflows and preferences
- •Experimental Skills
- •Personal productivity tools
Project Skills (.claude/skills/):
- •Team workflows and conventions
- •Project-specific expertise
- •Shared utilities (committed to git)
Step 3: Create Skill structure
Create the directory and files:
# Personal mkdir -p ~/.claude/skills/skill-name # Project mkdir -p .claude/skills/skill-name
For multi-file Skills:
skill-name/
├── SKILL.md (required)
├── reference.md (optional)
├── examples.md (optional)
├── scripts/
│ └── helper.py (optional)
└── templates/
└── template.txt (optional)
Step 4: Write SKILL.md frontmatter
Create YAML frontmatter with required fields:
--- name: skill-name description: Brief description of what this does and when to use it ---
Field requirements:
- •
name:
- •Lowercase letters, numbers, hyphens only
- •Max 64 characters
- •Must match directory name
- •Good:
pdf-processor,git-commit-helper - •Bad:
PDF_Processor,Git Commits!
- •
description:
- •Max 1024 characters
- •Include BOTH what it does AND when to use it
- •Use specific trigger words users would say
- •Mention file types, operations, and context
Optional frontmatter fields:
- •allowed-tools: Restrict tool access (comma-separated list)
Use for:yaml
allowed-tools: Read, Grep, Glob
- •Read-only Skills
- •Security-sensitive workflows
- •Limited-scope operations
Step 5: Write effective descriptions
The description is critical for Claude to discover your Skill.
Formula: [What it does] + [When to use it] + [Key triggers]
Examples:
✅ Good:
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.
✅ Good:
description: Analyze Excel spreadsheets, create pivot tables, and generate charts. Use when working with Excel files, spreadsheets, or analyzing tabular data in .xlsx format.
❌ Too vague:
description: Helps with documents description: For data analysis
Tips:
- •Include specific file extensions (.pdf, .xlsx, .json)
- •Mention common user phrases ("analyze", "extract", "generate")
- •List concrete operations (not generic verbs)
- •Add context clues ("Use when...", "For...")
Step 6: Structure the Skill content
Use clear Markdown sections:
# Skill Name Brief overview of what this Skill does. ## Quick start Provide a simple example to get started immediately. ## Instructions Step-by-step guidance for Claude: 1. First step with clear action 2. Second step with expected outcome 3. Handle edge cases ## Examples Show concrete usage examples with code or commands. ## Best practices - Key conventions to follow - Common pitfalls to avoid - When to use vs. not use ## Requirements List any dependencies or prerequisites: ```bash pip install package-name
Advanced usage
For complex scenarios, see reference.md.
### Step 7: Add supporting files (optional) Create additional files for progressive disclosure: **reference.md**: Detailed API docs, advanced options **examples.md**: Extended examples and use cases **scripts/**: Helper scripts and utilities **templates/**: File templates or boilerplate Reference them from SKILL.md: ```markdown For advanced usage, see [reference.md](reference.md). Run the helper script: \`\`\`bash python scripts/helper.py input.txt \`\`\`
Step 8: Validate the Skill
Check these requirements:
✅ File structure:
- • SKILL.md exists in correct location
- • Directory name matches frontmatter
name
✅ YAML frontmatter:
- • Opening
---on line 1 - • Closing
---before content - • Valid YAML (no tabs, correct indentation)
- •
namefollows naming rules - •
descriptionis specific and < 1024 chars
✅ Content quality:
- • Clear instructions for Claude
- • Concrete examples provided
- • Edge cases handled
- • Dependencies listed (if any)
✅ Testing:
- • Description matches user questions
- • Skill activates on relevant queries
- • Instructions are clear and actionable
Step 9: Test the Skill
- •
Restart Claude Code (if running) to load the Skill
- •
Ask relevant questions that match the description:
codeCan you help me extract text from this PDF?
- •
Verify activation: Claude should use the Skill automatically
- •
Check behavior: Confirm Claude follows the instructions correctly
Step 10: Debug if needed
If Claude doesn't use the Skill:
- •
Make description more specific:
- •Add trigger words
- •Include file types
- •Mention common user phrases
- •
Check file location:
bashls ~/.claude/skills/skill-name/SKILL.md ls .claude/skills/skill-name/SKILL.md
- •
Validate YAML:
bashcat SKILL.md | head -n 10
- •
Run debug mode:
bashclaude --debug
Common patterns
Read-only Skill
--- name: code-reader description: Read and analyze code without making changes. Use for code review, understanding codebases, or documentation. allowed-tools: Read, Grep, Glob ---
Script-based Skill
--- name: data-processor description: Process CSV and JSON data files with Python scripts. Use when analyzing data files or transforming datasets. --- # Data Processor ## Instructions 1. Use the processing script: \`\`\`bash python scripts/process.py input.csv --output results.json \`\`\` 2. Validate output with: \`\`\`bash python scripts/validate.py results.json \`\`\`
Multi-file Skill with progressive disclosure
--- name: api-designer description: Design REST APIs following best practices. Use when creating API endpoints, designing routes, or planning API architecture. --- # API Designer Quick start: See [examples.md](examples.md) Detailed reference: See [reference.md](reference.md) ## Instructions 1. Gather requirements 2. Design endpoints (see examples.md) 3. Document with OpenAPI spec 4. Review against best practices (see reference.md)
Best practices for Skill authors
- •One Skill, one purpose: Don't create mega-Skills
- •Specific descriptions: Include trigger words users will say
- •Clear instructions: Write for Claude, not humans
- •Concrete examples: Show real code, not pseudocode
- •List dependencies: Mention required packages in description
- •Test with teammates: Verify activation and clarity
- •Version your Skills: Document changes in content
- •Use progressive disclosure: Put advanced details in separate files
Validation checklist
Before finalizing a Skill, verify:
- • Name is lowercase, hyphens only, max 64 chars
- • Description is specific and < 1024 chars
- • Description includes "what" and "when"
- • YAML frontmatter is valid
- • Instructions are step-by-step
- • Examples are concrete and realistic
- • Dependencies are documented
- • File paths use forward slashes
- • Skill activates on relevant queries
- • Claude follows instructions correctly
Troubleshooting
Skill doesn't activate:
- •Make description more specific with trigger words
- •Include file types and operations in description
- •Add "Use when..." clause with user phrases
Multiple Skills conflict:
- •Make descriptions more distinct
- •Use different trigger words
- •Narrow the scope of each Skill
Skill has errors:
- •Check YAML syntax (no tabs, proper indentation)
- •Verify file paths (use forward slashes)
- •Ensure scripts have execute permissions
- •List all dependencies
Examples
See the documentation for complete examples:
- •Simple single-file Skill (commit-helper)
- •Skill with tool permissions (code-reviewer)
- •Multi-file Skill (pdf-processing)
Output format
When creating a Skill, I will:
- •Ask clarifying questions about scope and requirements
- •Suggest a Skill name and location
- •Create the SKILL.md file with proper frontmatter
- •Include clear instructions and examples
- •Add supporting files if needed
- •Provide testing instructions
- •Validate against all requirements
The result will be a complete, working Skill that follows all best practices and validation rules.