create-skill-file
Guides Claude in creating well-structured SKILL.md files following best practices. Provides clear guidelines for naming, structure, and content organization to make skills easy to discover and execute.
$ Installer
git clone https://github.com/YYH211/Claude-meta-skill /tmp/Claude-meta-skill && cp -r /tmp/Claude-meta-skill/create-skill-file-EN ~/.claude/skills/Claude-meta-skill// tip: Run this command in your terminal to install the skill
name: create-skill-file description: Guides Claude in creating well-structured SKILL.md files following best practices. Provides clear guidelines for naming, structure, and content organization to make skills easy to discover and execute.
Claude Agent Skill Writing Guide
How to create high-quality SKILL.md files
Table of Contents
- Quick Start
- Core Principles
- File Structure Standards
- Naming and Description Standards
- Content Writing Guide
- Quality Checklist
Quick Start
3 Steps to Create a Skill
Step 1: Create Directory
mkdir -p .claude/skill/your-skill-name
cd .claude/skill/your-skill-name
Step 2: Create SKILL.md
---
name: your-skill-name
description: Brief description with trigger keywords and scenarios
---
# Your Skill Title
## When to Use This Skill
- User asks to [specific scenario]
- User mentions "[keyword]"
## How It Works
1. Step 1: [Action]
2. Step 2: [Action]
## Examples
**Input**: User request
**Output**: Expected result
Step 3: Test
- Use keywords from description in conversation to trigger
- Observe whether Claude executes correctly
- Adjust based on effectiveness
Core Principles
1. Keep It Concise
Only add new knowledge that Claude doesn't know:
- ✅ Project-specific workflows
- ✅ Special naming conventions or format requirements
- ✅ How to use custom tools and scripts
- ❌ General programming knowledge
- ❌ Obvious steps
Example Comparison:
# ❌ Too Detailed
1. Create Python file
2. Import necessary libraries
3. Define functions
4. Write main program logic
# ✅ Concise and Effective
Use `scripts/api_client.py` to call internal API.
Request headers must include `X-Internal-Token` (from environment variable `INTERNAL_API_KEY`).
2. Set Appropriate Freedom
| Freedom | Use Case | Writing Approach |
|---|---|---|
| High | Requires creativity, multiple solutions | Provide guiding principles, not specific steps |
| Medium | Recommended patterns but allow variations | Provide parameterized examples and default flows |
| Low | Error-prone, requires strict execution | Provide detailed step-by-step instructions or scripts |
Decision Criteria:
- Is there a clear "correct answer"? → Low freedom
- Does it need to adapt to different scenarios? → High freedom
- What's the cost of errors? → High cost = low freedom
3. Progressive Disclosure
Organize complex content in layers:
SKILL.md (Main document, 200-500 lines)
├── reference.md (Detailed documentation)
├── examples.md (Complete examples)
└── scripts/ (Executable scripts)
Rules:
- SKILL.md > 500 lines → Split into sub-files
- Sub-files > 100 lines → Add table of contents
- Reference depth ≤ 1 level
File Structure Standards
YAML Frontmatter
---
name: skill-name-here
description: Clear description of what this skill does and when to activate it
---
Field Specifications:
| Field | Requirements | Description |
|---|---|---|
name | Lowercase letters, numbers, hyphens, ≤64 characters | Must match directory name |
description | Plain text, ≤1024 characters | Used for retrieval and activation |
Naming Prohibitions:
- ❌ XML tags, reserved words (
anthropic,claude) - ❌ Vague terms (
helper,utility,manager) - ❌ Spaces or underscores (use hyphens
-)
Description Tips:
# ❌ Too Generic
description: Helps with code tasks
# ✅ Specific with Keywords
description: Processes CSV files and generates Excel reports with charts. Use when user asks to convert data formats or create visual reports.
# ✅ States Trigger Scenarios
description: Analyzes Python code for security vulnerabilities using bandit. Activates when user mentions "security audit" or "vulnerability scan".
Directory Organization
Basic Structure (Simple Skill):
skill-name/
└── SKILL.md
Standard Structure (Recommended):
skill-name/
├── SKILL.md
├── templates/
│ └── template.md
└── scripts/
└── script.py
Naming and Description Standards
Skill Naming
Recommended Format: Verb-ing + noun form
✅ Good Names:
- processing-csv-files
- generating-api-docs
- managing-database-migrations
❌ Bad Names:
- csv (too brief)
- data_processor (uses underscores)
- helper (too vague)
Description Writing
Must use third person:
# ❌ Wrong
description: I help you process PDFs
# ✅ Correct
description: Processes PDF documents and extracts structured data
4C Principles:
- Clear: Avoid jargon and vague terms
- Concise: 1-2 sentences explaining core functionality
- Contextual: Describe applicable scenarios
- Complete: Functionality + trigger conditions
Content Writing Guide
"When to Use" Section
Clearly state trigger scenarios:
## When to Use This Skill
- User asks to analyze Python code for type errors
- User mentions "mypy" or "type checking"
- User is working in a Python project with type hints
- User needs to add type annotations
Patterns:
- Direct request: "User asks to X"
- Keywords: "User mentions 'keyword'"
- Context: "User is working with X"
- Task type: "User needs to X"
Workflow Design
Simple Linear Flow:
## How It Works
1. Scan the project for all `.py` files
2. Run `mypy --strict` on each file
3. Parse error output and categorize by severity
4. Generate summary report with fix suggestions
Conditional Branching Flow:
## Workflow
1. **Check project type**
- If Django → Use `django-stubs` config
- If Flask → Use `flask-stubs` config
- Otherwise → Use default mypy config
2. **Run type checking**
- If errors found → Proceed to step 3
- If no errors → Report success and exit
Checklist Pattern (Validation tasks):
## Pre-deployment Checklist
Execute in order. Stop if any step fails.
- [ ] Run tests: `npm test` (must pass)
- [ ] Build: `npm run build` (no errors)
- [ ] Check deps: `npm audit` (no critical vulnerabilities)
Examples and Templates
Input-Output Examples:
## Examples
### Example 1: Basic Check
**User Request**: "Check my code for type errors"
**Action**:
1. Scan for `.py` files
2. Run `mypy` on all files
**Output**:
Found 3 type errors in 2 files:
src/main.py:15: error: Missing return type
src/utils.py:42: error: Incompatible types
Script Integration
When to Use Scripts:
- Simple commands → Describe directly in SKILL.md
- Complex processes → Provide standalone scripts
Script Writing Standards:
#!/usr/bin/env python3
"""
Brief description of what this script does.
Usage:
python script.py <arg> [--option value]
"""
import argparse
DEFAULT_VALUE = 80 # Use constants, not magic numbers
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("directory", help="Directory to process")
parser.add_argument("--threshold", type=int, default=DEFAULT_VALUE)
args = parser.parse_args()
# Validate inputs
if not Path(args.directory).is_dir():
print(f"Error: {args.directory} not found")
return 1
# Execute
result = process(args.directory, args.threshold)
# Report
print(f"Processed {result['count']} files")
return 0
if __name__ == "__main__":
exit(main())
Key Standards:
- ✅ Shebang line and docstring
- ✅ Type annotations and constants
- ✅ Parameter validation and error handling
- ✅ Clear return values (0=success, 1=failure)
Best Practices
Do:
- ✅ Provide executable commands and scripts
- ✅ Include input-output examples
- ✅ State validation criteria and success conditions
- ✅ Include Do/Don't lists
Don't:
- ❌ Include general knowledge Claude already knows
- ❌ Use abstract descriptions instead of concrete steps
- ❌ Omit error handling guidance
- ❌ Use pseudocode instead of real code in examples
Quality Checklist
Core Quality
-
namefollows naming conventions (lowercase, hyphens, ≤64 characters) -
descriptionincludes trigger keywords and scenarios (≤1024 characters) - Name matches directory name
- Only includes information Claude doesn't know
- No redundant or duplicate content
Functional Completeness
- Has "When to Use" section with 3-5 trigger scenarios
- Has clear execution flow or steps
- At least 2-3 complete examples
- Includes input and expected output
- Error handling guidance provided
Structure Standards
- Clear section organization
- Table of contents for >200 lines
- Reference nesting ≤ 1 level
- All paths use forward slashes
/ - Consistent terminology
Scripts and Templates
- Scripts include usage instructions and parameter documentation
- Scripts have error handling
- Avoid magic numbers, use configuration
- Template format is clear and usable
Final Check
- Read through for fluency and readability
- Test triggering with actual scenarios
- Appropriate length (200-500 lines, or split)
FAQ
Q: How long should a Skill be?
- Minimum: 50-100 lines
- Ideal: 200-500 lines
- Maximum: 500 lines (split if exceeded)
Q: How to make Skills easier to activate?
- Use keywords in
descriptionthat users would say - State specific scenarios ("when user asks to X")
- Mention related tool names
Q: What if multiple Skills overlap?
- Use more specific
descriptionto differentiate - Explain relationships in "When to Use"
- Consider merging into one Skill
Q: Do Skills need maintenance?
- Review quarterly, update outdated information
- Iterate based on usage feedback
- Update promptly when tools or APIs change
Quick Reference
Frontmatter Template
---
name: skill-name
description: Brief description with trigger keywords
---
Basic Structure Template
# Skill Title
## When to Use This Skill
- Scenario 1
- Scenario 2
## How It Works
1. Step 1
2. Step 2
## Examples
### Example 1
...
## References
- [Link](url)
Related Resources
- Claude Agent Skills Official Documentation
- Best Practices Checklist
- Template Files - Ready-to-use templates
- Example Library - Complete Skill examples
Repository
