Guides creation of high-quality Agent Skills with domain expertise, anti-pattern detection, and progressive disclosure best practices. Activate on keywords: create skill, review skill, skill quality, skill best practices, skill anti-patterns, improve skill, skill audit. NOT for general coding advice, slash commands, MCP development, or non-skill Claude Code features.'
npx skills add https://github.com/curiositech/some_claude_skills --skill skill-coach
Encode real domain expertise, not just surface-level instructions. Focus on shibboleths - the deep knowledge that separates novices from experts.
Use for:
NOT for:
Immediate improvements for existing skills:
Great skills are progressive disclosure machines that:
Critical: Keep SKILL.md under 500 lines. Split details into /references.
[What] [Use for] [Keywords] NOT for [Exclusions]
❌ Bad: "Helps with images"
⚠️ Better: "Image processing with CLIP"
✅ Good: "CLIP semantic search. Use for image-text matching.
Activate on 'CLIP', 'embeddings'. NOT for counting, spatial reasoning."
---
name: your-skill-name
description: [What] [When] [Triggers]. NOT for [Exclusions].
allowed-tools: Read,Write # Minimal only
---
# Skill Name
[One sentence purpose]
## When to Use
✅ Use for: [A, B, C]
❌ NOT for: [D, E, F]
## Core Instructions
[Step-by-step, decision trees, not templates]
## Common Anti-Patterns
### [Pattern]
**Symptom**: [Recognition]
**Problem**: [Why wrong]
**Solution**: [Better approach]
Only these frontmatter keys are allowed by Claude's skill marketplace:
| Key | Required | Purpose |
|-----|----------|---------|
| name | ✅ | Lowercase-hyphenated identifier |
| description | ✅ | Activation keywords + NOT clause |
| allowed-tools | ⚠️ | Comma-separated tool names |
| license | ❌ | e.g., "MIT" |
| metadata | ❌ | Custom key-value pairs |
Invalid keys that will FAIL upload:
# ❌ WRONG - These will break skill upload
integrates_with:
- orchestrator
triggers:
- "activate on this"
tools: Read,Write
outputs: formatted text
coordinates_with: other-skill
python_dependencies:
- numpy
Move custom info to the body:
## Integrations
Works with: orchestrator, team-builder
## Activation Triggers
Responds to: "create skill", "review skill", "skill quality"
Validation command:
# Find invalid frontmatter keys
for skill in .claude/skills/*/SKILL.md; do
sed -n '/^---$/,/^---$/p' "$skill" | grep -E "^[a-zA-Z_-]+:" | cut -d: -f1 | \
grep -vE "^(name|description|license|allowed-tools|metadata)$" && \
echo " ^ in $(basename $(dirname $skill))"
done
Mandatory:
your-skill/
└── SKILL.md # Core instructions (max 500 lines)
Strongly Recommended (self-contained skills):
├── scripts/ # Working code - NOT templates
├── mcp-server/ # Custom MCP if external APIs needed
├── agents/ # Subagent definitions if orchestration needed
├── references/ # Deep dives on domain knowledge
└── CHANGELOG.md # Version history
Skills with working tools are immediately useful. See references/self-contained-tools.md for full patterns.
Quick decision: External APIs? → MCP. Multi-step workflow? → Subagents. Repeatable operations? → Scripts.
When to create a NEW skill?
Skill vs Subagent vs MCP?
Follow these steps in order when creating a new skill:
Skip only if usage patterns are already clear. Ask:
For each example, analyze:
Example analyses:
pdf-editor for "rotate this PDF" → Needs scripts/rotate_pdf.pyfrontend-webapp-builder → Needs assets/hello-world/ templatebig-query skill → Needs references/schema.md for table schemasCreate the skill directory structure:
your-skill/
├── SKILL.md # Core instructions (max 500 lines)
├── scripts/ # Working code - NOT templates
├── references/ # Deep dives on domain knowledge
└── assets/ # Files used in output (templates, icons)
# Validate skill structure and content
python scripts/validate_skill.py <path>
# Check for self-contained tool completeness
python scripts/check_self_contained.py <path>
After real-world use:
Create Skill from Expertise:
Debug Activation Issues (flowchart):
Skill not activating when expected?
├── Check description has specific keywords
│ ├── NO → Add "Activate on: keyword1, keyword2"
│ └── YES → Check if query contains those keywords
│ ├── NO → Add missing keyword variations
│ └── YES → Check for conflicting NOT clause
│ ├── YES → Narrow exclusion scope
│ └── NO → Check file structure
│ ├── SKILL.md missing → Create it
│ └── Wrong location → Move to .claude/skills/
Skill activating when it shouldn't?
├── Missing NOT clause?
│ ├── YES → Add "NOT for: exclusion1, exclusion2"
│ └── NO → NOT clause too narrow
│ └── Expand exclusions based on false positive queries
Run python scripts/test_activation.py <path> to validate
Recursive Self-Improvement (use this skill to improve skills):
python scripts/validate_skill.py <path> → Get validation reportpython scripts/check_self_contained.py <path> → Check tool completenessGuidelines:
Read,Grep,GlobRead,Write,EditRead,Write,Bash(npm:*,git:*)Bash for untrusted skills| Metric | Target |
|--------|--------|
| Correct activation | >90% |
| False positive rate | <5% |
| Token usage | <5k typical |
| File | Contents |
|------|----------|
| references/antipatterns.md | Domain shibboleths and anti-pattern catalog with case studies |
| references/shibboleths.md | Expert vs novice knowledge patterns |
| references/validation-checklist.md | Complete review and testing guide |
| references/self-contained-tools.md | Scripts, MCP servers, and subagent implementation patterns |
| references/scoring-rubric.md | Quantitative skill evaluation (0-10 scoring) |
| references/skill-composition.md | Cross-skill dependencies and composition patterns |
| references/skill-lifecycle.md | Maintenance, versioning, and deprecation guidance |
| references/mcp_vs_scripts.md | Architectural decision guide: Skills vs Agents vs MCPs vs Scripts |
This skill guides: Skill creation | Skill auditing | Anti-pattern detection | Progressive disclosure | Domain expertise encoding
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take curiositech/skill-coach from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.