| name | skill-coach |
| description | Guides creation of high-quality Agent Skills with domain expertise, anti-pattern detection, and progressive disclosure best practices. Use when creating skills, reviewing existing skills, or when users mention improving skill quality, encoding expertise, or avoiding common AI tooling mistakes. Activate on keywords: create skill, review skill, skill quality, skill best practices, skill anti-patterns. NOT for general coding advice or non-skill Claude Code features. |
| allowed-tools | Read,Write,Bash,Glob,Grep,Edit |
Skill Coach: Creating Expert-Level Agent Skills
This skill helps you create Agent Skills that encode real domain expertise, not just surface-level instructions. It focuses on the shibboleths - the deep knowledge that separates novices from experts.
When to Use This Skill
✅ Use for:
- Creating new Agent Skills from scratch
- Reviewing/auditing existing skills
- Improving skill activation rates
- Adding domain expertise to skills
- Debugging why skills don't activate
❌ NOT for:
- General Claude Code features (slash commands, MCPs)
- Non-skill coding advice
- Debugging runtime errors in skills (use specific domain skills)
- Project setup unrelated to skills
What Makes a Great Skill
Great skills are progressive disclosure machines that:
- Activate precisely - Specific keywords trigger, NOT clause prevents false activation
- Encode shibboleths - Expert knowledge that separates novice from expert approaches
- Surface anti-patterns - "If you see X, that's wrong because Y, use Z instead"
- Capture temporal knowledge - "Pre-2024: X. 2024+: Y. Watch for: LLMs suggesting X"
- Know their limits - "Use this for A, B, C. NOT for D, E, F. For D use skill-name-2"
- Provide decision trees - Not templates, but "If X then A, if Y then B, never C"
- Stay under 500 lines - Core in SKILL.md, deep dives in /references
Quick Wins
Immediate improvements for existing skills:
- Add NOT clause to description → Prevents false activation
- Add 1-2 anti-patterns → Prevents common mistakes
- Check line count (
wc -l) → Should be <500 - Remove dead files → Delete unreferenced scripts/references
- Test activation → Ask questions that should/shouldn't trigger it
Quick Start
Creating a New Skill:
- Define scope: What expertise? What keywords? What NOT to handle?
- Write description with keywords and NOT clause
- Add anti-patterns you've observed
- Test activation thoroughly
- Use Review Checklist below
Core Principles
1. Progressive Disclosure Architecture
Skills load in three phases:
- Phase 1 (~100 tokens): Metadata (name, description) - "Should I activate?"
- Phase 2 (<5k tokens): Main instructions in SKILL.md - "How do I do this?"
- Phase 3 (as needed): Scripts, references, assets - "Show me the details"
Critical: Keep SKILL.md under 500 lines. Split details into /references.
2. Description Field Design
The description is your activation trigger. Formula: [What] [Use for] [Keywords] NOT for [Exclusions]
Progression from Bad → Good:
❌ Bad: description: Helps with images
- Too vague, no keywords, no exclusions
⚠️ Better: description: Image processing with CLIP
- Has keyword (CLIP) but no use cases or exclusions
✅ Good: description: CLIP semantic search. Use for image-text matching, zero-shot classification. Activate on "CLIP", "embeddings", "image search". NOT for counting, fine-grained classification, spatial reasoning.
- Clear capability, use cases, keywords, and exclusions
3. Anti-Pattern Detection
Great skills actively warn about common mistakes. Structure:
## Common Anti-Patterns
### Pattern: [Name]
**What it looks like**: [Code example or description]
**Why it's wrong**: [Fundamental reason]
**What to do instead**: [Better approach]
**How to detect**: [Validation rule]
4. Temporal Knowledge
Technology evolves. Capture what changed and when:
## Evolution Timeline
### Pre-2024: Old Approach
[What people used to do]
### 2024-Present: Current Best Practice
[What changed and why]
### Watch For
[Deprecated patterns LLMs might still suggest]
Skill Structure
Mandatory:
your-skill/
└── SKILL.md # Core instructions (<500 lines)
Optional (only if needed):
├── scripts/ # Working code (not templates)
├── references/ # Deep dives (referenced from SKILL.md)
├── assets/ # Config files, templates
└── examples/ # Concrete good/bad examples
Anti-pattern: Creating structure "just in case" - only add files that SKILL.md references
SKILL.md Template Structure
---
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]
Anti-Patterns in Skill Creation
Anti-Pattern: The Reference Illusion
What it looks like: Skill references scripts/files that don't exist
# Quick Start
Run `python scripts/validate.py` to check your skill
But /scripts/validate.py doesn't exist in the skill directory.
Why it's wrong: Claude will try to use non-existent files, causing errors and confusion.
What to do instead: Only reference files that actually exist. If you want to suggest scripts, either:
- Include them in the skill
- Show inline code examples
- Clearly mark as "Example - not included"
How to detect: find skill-dir/ -type f and verify all referenced paths exist
Anti-Pattern: Description Soup
What it looks like:
description: Helps with many things including X, Y, Z, and also A, B, C, plus general assistance
Why it's wrong: Vague descriptions cause:
- False activations (activates when shouldn't)
- Missed activations (doesn't activate when should)
- Token waste (loads unnecessary context)
What to do instead: Specific trigger keywords + clear exclusions
description: [Core capability]. Use for [A, B, C]. Activate on keywords: "X", "Y", "Z". NOT for [D, E, F].
Anti-Pattern: Template Theater
What it looks like: Skill is 90% templates and examples, 10% actual instructions
Why it's wrong: Claude doesn't need templates - it needs expert knowledge and decision trees. Templates are for humans.
What to do instead:
- Focus on WHEN to use patterns, not just WHAT the patterns are
- Encode decision logic: "If X, use A; if Y, use B; never use C"
- Include anti-patterns and edge cases
Anti-Pattern: The Everything Skill
What it looks like: One skill trying to handle an entire domain
name: web-dev-expert
description: Handles all web development tasks
Why it's wrong:
- Too broad to activate correctly
- Mixes concerns (React ≠ API design ≠ CSS)
- Violates progressive disclosure
What to do instead: Create focused, composable skills:
react-performance-expertapi-design-expertcss-layout-expert
Anti-Pattern: Orphaned Sections
What it looks like: Skill has /references/deep_dive.md but never tells Claude when to read it
Why it's wrong: Files exist but are never used = wasted space
What to do instead: Explicit triggers in main SKILL.md:
For database-specific anti-patterns, see `/references/database_antipatterns.md`
Evolution Timeline: Skill Framework Best Practices
2024 Early: First Skills
- Basic SKILL.md files
- Heavy use of bash scripts
- Minimal structure
2024 Mid: Progressive Disclosure
- Introduction of phased loading
allowed-toolsconstraints- Reference directory pattern
2024 Late: Anti-Pattern Focus
- Shift from "what to do" to "what NOT to do"
- Temporal knowledge capture
- Shibboleth encoding
2025: Current Best Practices
- Sub-500 line SKILL.md
- Validation-first approach
- Clear activation boundaries
- Working code examples (not just templates)
Domain-Specific Shibboleths
Shibboleths = deep knowledge that separates novices from experts.
Skill Creation Shibboleths
Novice skill creator:
- "I'll make a comprehensive skill that handles everything related to X"
- Focuses on templates and examples
- Description: "Helps with many things"
- Thinks more tools = better
Expert skill creator:
- "I'll create a focused skill that encodes THIS specific expertise about X"
- Focuses on decision trees and anti-patterns
- Description: "Does A, B, C. Activate on keywords X, Y. NOT for D, E, F."
- Minimal tools, knows when NOT to use the skill
- Encodes temporal knowledge: "Pre-2024 pattern X was common, now use Y"
Domain Example Shibboleths
CLIP Embeddings:
- Novice: "CLIP is great for image-text matching"
- Expert: "CLIP fails at: counting, fine-grained classification, attribute binding, spatial relationships, negation. Use DCSMs for compositional, PC-CLIP for geometric, specialized models for counting."
MCPs vs Scripts:
- Novice: "MCPs are better because they're more powerful"
- Expert: "MCP for auth/external APIs. Script for local/stateless. Building an MCP when a script would suffice = anti-pattern."
Validation Best Practices
Plan-Validate-Execute Pattern:
- Generate plan → 2. Validate BEFORE execution → 3. Execute → 4. Verify
Pre-Flight Checks (include in skills that modify state):
- Structure validation (files exist, naming conventions)
- Description quality (keywords, exclusions, length)
- Anti-pattern detection
- Progressive disclosure compliance
- Line count (<500 for SKILL.md)
Example: Good vs Bad Skills
Good Skill - Specific, expert knowledge, clear boundaries:
name: clip-aware-embeddings
description: CLIP semantic search. Use for image-text matching, zero-shot classification. Activate on "CLIP", "embeddings", "image search". NOT for counting, fine-grained classification, spatial reasoning.
✅ Includes: When NOT to use, alternatives (DETR/PC-CLIP), temporal evolution, anti-patterns
Bad Skill - Vague, template-heavy, no expertise:
name: image-processing
description: Processes images
❌ Problems: No activation triggers, no exclusions, no expert knowledge, just generic templates
Integration with Other Tools
Works Well With
- MCP Servers: For API access, skill provides the workflow
- Subagents: Skill gives expertise, subagent gets tool permissions
- Projects: Skill available across all conversations
Conflicts With
- Overly specific prompts: Skill already encodes the pattern
- Too many tools: Use
allowed-toolsto constrain scope
Common Workflows
Workflow 1: Create Skill from Expertise
- You have domain expertise → Activate skill-coach
- Ask: "Help me create a skill for [domain]"
- Define scope, keywords, exclusions
- Encode shibboleths (expert knowledge)
- Add anti-patterns you've observed
- Test activation
Workflow 2: Debug Activation Issues
- Skill not activating → Activate skill-coach
- Ask: "Review my skill's description and activation triggers"
- Add missing keywords
- Clarify NOT clause
- Test with specific phrases
Workflow 3: Reduce False Activations
- Skill activates too often → Activate skill-coach
- Ask: "Help me narrow this skill's scope"
- Add NOT clause with exclusions
- Consider splitting into multiple focused skills
- Test edge cases
Iterating on Skills
Improvement Loop (use Claude to improve skills):
# 1. Use the skill on real tasks
# 2. Ask: "What anti-patterns did you encounter?"
# 3. Ask: "What decision points were unclear?"
# 4. Update SKILL.md with learnings
# 5. Test: Does it activate correctly now?
Red Flags:
- Skill doesn't activate when it should → Fix description keywords
- Activates too often → Add NOT clause
- Claude ignores sections → Move to main SKILL.md or delete
- Claude can't find referenced files → Remove or create them
Tool Permissions
This skill uses: Read,Write,Bash,Glob,Grep,Edit
- Read,Glob,Grep: Find and read existing skills
- Edit: Update skills in place
- Write: Create new skill files
- Bash: Validate file structure (
find,wc -l)
Guidelines:
- Read-only skill:
Read,Grep,Glob - File modifier:
Read,Write,Edit - Build integration:
Read,Write,Bash(npm:*,git:*) - ⚠️ Never: Unrestricted
Bashfor untrusted skills
Security Audit:
- Read all scripts before enabling skill
- Check for network calls / data exfiltration
- Verify allowed-tools are minimal
- Test in isolated project first
Skill Review Checklist
CRITICAL (must-have):
- Description has keywords AND NOT clause
- SKILL.md under 500 lines
- All referenced files exist (
find skill-dir/ -type f) - Test activation: Does it activate when it should?
- Test non-activation: Does it NOT activate when it shouldn't?
HIGH PRIORITY (should-have):
- Has "When to Use" and "When NOT to Use" sections
- Includes 1-3 anti-patterns with "Why it's wrong"
- Encodes domain shibboleths (expert vs novice knowledge)
-
allowed-toolsis minimal
NICE TO HAVE (polish):
- Temporal knowledge (what changed when)
- Working code examples (not just templates)
- References for deep dives
- Bash restrictions if applicable
Testing Your Skill
Activation Test
Ask Claude questions that SHOULD trigger the skill:
# Example for a React skill:
"Help me optimize this React component's re-renders"
# Check: Did the skill activate?
Ask questions that SHOULD NOT trigger the skill:
# Example for a React skill:
"Help me write a Python script"
# Check: Did it correctly NOT activate?
Integration Test
- Test with related skills (do they conflict or complement?)
- Test with MCPs (does skill guide MCP usage?)
- Test in different project contexts
Decision Trees
When to create a NEW skill?
- ✅ You have domain expertise not in existing skills
- ✅ Pattern repeats across 3+ projects
- ✅ Anti-patterns you want to prevent
- ❌ One-time task → Just do it directly
- ❌ Existing skill could be extended → Improve that one
Skill vs Subagent vs MCP?
- Skill: Domain expertise, decision trees, anti-patterns (no runtime state)
- Subagent: Multi-step workflows needing tool orchestration
- MCP: External APIs, auth, stateful connections
Common Questions
Q: SKILL.md vs /references? SKILL.md: Core instructions (<500 lines). /references: Deep dives (loaded as needed).
Q: How do I handle deprecated patterns?
## ⚠️ Deprecated: [Pattern]
**Until**: [Date] | **Why**: [Reason] | **Now use**: [Current]
**Watch**: LLMs may suggest this due to training data
Success Metrics
- Activation: 90%+ when appropriate, <5% false positives
- Token efficiency: <5k tokens typical invocation
- Error prevention: Measurable reduction in common mistakes
This skill guides: Skill creation | Skill auditing | Anti-pattern detection | Progressive disclosure | Domain expertise encoding
Meta-note: This skill practices what it preaches - it has been iteratively improved using its own guidance, demonstrating the iteration loop it recommends.