| name | skill-builder |
| description | Create new Skills for Claude Code including YAML frontmatter, descriptions, instructions, and structure. Use when creating, building, or designing skills, or when asked about skill creation, structure, best practices, or debugging skills that don't activate properly. |
Skill Builder
Build production-quality Skills for Claude Code with proper structure, discoverable descriptions, and best practices.
Quick Reference
Description Formula: [What it does] + [When to use it] + [Trigger terms users say]
Name Rules: Lowercase letters, numbers, hyphens only; max 64 characters; no spaces
Description Rules: Max 1024 characters; must be specific with trigger terms
The Skill Creation Workflow
Phase 1: Requirements Gathering
Use AskUserQuestion to understand what they need:
What should the Skill do?
- What capability or expertise should it provide?
- What tasks should it help with?
When should it activate?
- What scenarios or contexts?
- What words/phrases would users say?
- What file types or operations?
Scope decision
- Personal Skill (~/.claude/skills/) - just for this user
- Project Skill (.claude/skills/) - shared with team via git
Structure complexity
- Single file (simple instructions/examples)
- Multi-file (scripts, templates, extensive docs)
Tool restrictions
- Full access (default)
- Restricted (allowed-tools field for read-only or limited scope)
Phase 2: Description Crafting
The description determines discoverability. Use this proven formula:
[Specific operations] + [When to use] + [Trigger terms]
Example walkthrough:
- ❌ "Helps with documents" (too vague)
- ✅ "Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when user mentions PDFs, forms, or document extraction."
Key elements:
- Specific operations: List concrete actions (extract, analyze, generate, validate)
- When to use: Scenarios and contexts (when working with X, during Y, for Z tasks)
- Trigger terms: Exact words users would say (PDF, forms, commit message, data analysis)
See examples/descriptions.md for more patterns.
Phase 3: Name Validation
Validate and format the name:
- Convert to lowercase
- Replace spaces with hyphens
- Remove invalid characters (only allow: a-z, 0-9, -)
- Ensure max 64 characters
- Make it descriptive but concise
Examples:
- "My PDF Tool" → "my-pdf-tool"
- "Code Reviewer!!!" → "code-reviewer"
- "data_analysis" → "data-analysis"
Phase 4: Structure Planning
Single file when:
- Instructions and examples fit comfortably in one file
- No scripts or utilities needed
- Straightforward workflow
Multi-file when:
- Extensive documentation (split into reference.md)
- Scripts or utilities needed (scripts/ directory)
- Templates or boilerplate (templates/ directory)
- Many examples (examples.md)
Recommended structure for complex Skills:
skill-name/
├── SKILL.md # Core instructions (loaded first)
├── reference.md # Detailed API/reference (loaded if needed)
├── examples.md # Additional examples (loaded if needed)
├── scripts/ # Utility scripts
│ ├── helper.py
│ └── process.sh
└── templates/ # Template files
└── template.txt
Phase 5: Implementation
Create the directory
# Personal Skill
mkdir -p ~/.claude/skills/skill-name
# Project Skill
mkdir -p .claude/skills/skill-name
# Multi-file structure
mkdir -p ~/.claude/skills/skill-name/{templates,scripts,examples}
Write SKILL.md
Template structure:
---
name: skill-name
description: [Use the formula from Phase 2]
allowed-tools: Read, Grep, Glob # Optional: only if restricting tools
---
# Skill Name
Brief introduction explaining what this Skill does.
## Quick Start
Provide the most common use case with a concrete example.
## Instructions
Step-by-step guidance for Claude:
1. [First step with specific actions]
2. [Second step with expected behavior]
3. [Continue pattern]
## Examples
Show concrete code examples:
```language
# Example code that demonstrates usage
Best Practices
- Key principle or pattern
- Important consideration
- Common pitfall to avoid
Requirements
List any dependencies:
pip install required-package
#### Add supporting files if multi-file
Reference from SKILL.md:
```markdown
For detailed API reference, see [reference.md](reference.md).
Use the helper script:
```bash
python scripts/helper.py input.txt
### Phase 6: Validation
Before finalizing, check:
- [ ] Description follows formula (what + when + triggers)
- [ ] Description under 1024 characters
- [ ] Name is lowercase-with-hyphens, under 64 chars
- [ ] YAML has opening and closing `---`
- [ ] YAML uses spaces not tabs
- [ ] Instructions are clear and actionable
- [ ] Examples are concrete and tested
- [ ] Dependencies are documented
- [ ] Tool restrictions (if any) are appropriate
See [reference/validation-checklist.md](reference/validation-checklist.md) for complete checklist.
### Phase 7: Testing
1. **Restart Claude Code** (required for Skills to load)
2. **Test discovery**:
- Ask using trigger terms from your description
- Verify Skill activates automatically
- Try variations of trigger phrases
3. **Test workflow**:
- Follow instructions as Claude
- Verify all examples work
- Check edge cases
4. **Debug if needed**:
```bash
# Check Skill was loaded
# Ask: "What Skills are available?"
# View Skill file
cat ~/.claude/skills/skill-name/SKILL.md
# Check for YAML syntax errors
claude --debug
Common Issues and Solutions
Issue: Skill doesn't activate
Causes:
- Description too vague
- Trigger terms don't match user's words
- YAML syntax error
- Didn't restart Claude Code
Solutions:
- Make description more specific with exact trigger terms
- Add more synonyms and related terms
- Validate YAML (check --- delimiters, spaces not tabs)
- Restart Claude Code
Issue: Skill activates when it shouldn't
Causes:
- Description too broad
- Overlapping with other Skills
Solutions:
- Narrow description scope
- Add specific context (file types, operations)
- Consider splitting into focused Skills
Issue: YAML syntax errors
Common mistakes:
- Missing opening
---(line 1) - Missing closing
---(before Markdown content) - Using tabs instead of spaces
- Unquoted strings with special characters
Fix:
---
name: skill-name
description: Description text here
---
# Markdown starts here
Iteration and Improvement
After using a Skill, improve it:
- Track activation patterns: Does it activate when expected?
- Gather feedback: What's confusing or missing?
- Refine description: Add trigger terms from actual usage
- Expand examples: Add real scenarios encountered
- Update instructions: Clarify ambiguous steps
Educational Principles
When creating Skills, remember:
Why descriptions matter: Claude uses them for discovery. Vague descriptions = never activated.
Why multi-file structure works: Progressive loading. Claude reads SKILL.md first, supporting files only when needed. Keeps context focused.
Why tool restrictions are powerful: Creates safe, focused Skills. Read-only analysis Skills can't accidentally modify files.
Why trigger terms are crucial: Users don't know your Skill exists. They ask questions naturally. Trigger terms bridge their words to your Skill.
Quick Templates
Basic Skill template: templates/basic-skill.md
Advanced multi-file template: templates/advanced-skill.md
Description examples: examples/descriptions.md
Tips for Great Skills
- Be specific in descriptions - exact operations, file types, scenarios
- Include trigger synonyms - users say things differently
- Start simple, expand later - single file first, add complexity when needed
- Test with real requests - use actual words users would say
- Document dependencies clearly - don't assume packages are installed
- Provide concrete examples - show don't tell
- Make instructions actionable - specific steps, not vague guidance
- Consider scope carefully - personal for experimentation, project for team
- Use tool restrictions wisely - read-only Skills for analysis/review
- Iterate based on usage - refine trigger terms from real activation patterns
Next Steps
After creating a Skill:
- Share with team (if project Skill, commit to git)
- Document in project CLAUDE.md if it's a pattern others should know
- Create related Skills for connected workflows
- Consider packaging multiple Skills as a plugin for wider distribution
Remember: Great Skills have specific descriptions with trigger terms. That's the difference between a Skill that gets used and one that never activates.