Validate skill
Validates Claude Code skills against official best practices from Anthropic documentation. Fetches latest documentation dynamically to ensure current standards. Checks frontmatter, structure, line count, descriptions, references, workflows, and provides actionable recommendations. Use when asked to validate skill, check skill quality, review skill, or audit skill compliance.From its SKILL.md
npx -y skills add Saturate/skills --skill validate-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.1 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it
You are validating a Claude Code skill against official best practices. Follow these steps:
Progress Checklist
Copy this checklist to track validation progress:
Skill Validation Progress:
- [ ] Step 0: Fetched latest official documentation
- [ ] Step 1: Located and read SKILL.md file
- [ ] Step 2: Validated frontmatter (name, description, fields)
- [ ] Step 3: Checked file structure and organization
- [ ] Step 4: Analyzed content quality (line count, clarity, workflows)
- [ ] Step 5: Verified references and progressive disclosure
- [ ] Step 6: Checked for anti-patterns and common issues
- [ ] Step 7: Generated comprehensive report with score
Step 0: Fetch Official Documentation
IMPORTANT: Always start by fetching the latest official documentation to ensure validation uses current standards.
Fetch the primary documentation sources:
-
Skills Documentation:
- URL:
https://code.claude.com/docs/en/skills - Prompt: "Extract all information about skill structure, SKILL.md format, frontmatter requirements, best practices, file organization, line count limits, progressive disclosure, and any specific guidelines for creating skills"
- URL:
-
Best Practices Guide:
- URL:
https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices - Prompt: "Extract all best practices for creating agent skills, including structure, testing, writing guidelines, naming conventions, description format, common pitfalls to avoid, anti-patterns, and scoring criteria"
- URL:
Store the fetched information for reference during validation steps.
Fallback: If WebFetch fails or documentation is unavailable, use the reference file references/best-practices-checklist.md as a fallback, but note in the report that validation used cached/fallback documentation.
Key criteria to extract from docs:
- Maximum line counts (SKILL.md body, description, name)
- Required frontmatter fields and formats
- Naming conventions (gerund form recommended)
- Description writing style (third person, trigger keywords)
- Progressive disclosure patterns
- Reference depth limits (1 level)
- Anti-patterns to avoid
- Scoring rubrics
Step 1: Locate and Read Skill
Parse the skill path argument:
Users invoke with: /validate-skill path/to/skill or /validate-skill skill-name
If no path provided, default to current directory.
Locate the SKILL.md file:
# If path is a directory, look for SKILL.md inside
if [ -d "$skill_path" ]; then
skill_file="$skill_path/SKILL.md"
else
skill_file="$skill_path"
fi
# Verify file exists
if [ ! -f "$skill_file" ]; then
echo "Error: SKILL.md not found at: $skill_file"
exit 1
fi
Read the entire SKILL.md file to analyze its content.
Step 2: Validate Frontmatter
Check YAML frontmatter between --- markers at the top of the file.
Required Fields
name:
- ✅ Present and non-empty
- ✅ Maximum 64 characters
- ✅ Only lowercase letters, numbers, hyphens
- ✅ No XML tags
- ✅ No reserved words: "anthropic", "claude"
- ⚠️ Recommended: Use gerund form (-ing) like "processing-pdfs", "analyzing-data"
description:
- ✅ Present and non-empty
- ✅ Maximum 1024 characters
- ✅ No XML tags
- ✅ Third person (not "I" or "You")
- ✅ Includes WHAT the skill does
- ✅ Includes WHEN to use it (trigger keywords)
- ✅ Specific enough for discovery
- ⚠️ Should have 5+ trigger keywords/phrases
Optional Fields
compatibility: Helpful for usersallowed-tools: List of tools skill can usedisable-model-invocation: true/falseuser-invocable: true/falsemetadata: Author, version, etc.context: "fork" for subagent executionagent: Subagent type when context=fork
Step 3: Check File Structure and Organization
Main SKILL.md file:
- ✅ Line count under 500 lines (critical threshold)
- ✅ Clear sections with headers
- ✅ Step-by-step workflow (if applicable)
- ⚠️ Consider splitting if approaching 500 lines
Directory structure:
skill-name/
├── SKILL.md # Required
├── references/ # Optional but recommended for large skills
│ ├── guide.md # Additional documentation
│ ├── examples.md # Usage examples
│ └── api-ref.md # API reference
└── scripts/ # Optional executable scripts
└── helper.py
Check for references directory:
if [ -d "$skill_dir/references" ]; then
# List reference files
ls -1 "$skill_dir/references"
fi
Check for scripts directory:
if [ -d "$skill_dir/scripts" ]; then
# List script files
ls -1 "$skill_dir/scripts"
fi
Step 4: Analyze Content Quality
Line Count Analysis
Count lines in SKILL.md body (excluding frontmatter):
# Count total lines
total_lines=$(wc -l < "$skill_file")
# Count frontmatter lines (between first two ---)
frontmatter_lines=$(awk '/^---$/,/^---$/ {count++} END {print count}' "$skill_file")
# Body lines = total - frontmatter
body_lines=$((total_lines - frontmatter_lines))
Scoring:
- ✅ Excellent: Under 300 lines
- ✅ Good: 300-400 lines
- ⚠️ Acceptable: 400-500 lines
- ❌ Too long: Over 500 lines (should split into references)
Content Clarity
Check for clear workflows:
- ✅ Numbered steps or clear sections
- ✅ Step-by-step instructions
- ✅ Progress checklist for complex workflows
- ✅ Clear conditional logic ("If X, do Y")
Check for examples:
- ✅ Code examples with syntax highlighting
- ✅ Input/output examples
- ✅ Common use case demonstrations
Check for error handling:
- ✅ Error scenarios documented
- ✅ Resolution steps provided
- ✅ Troubleshooting section or table
Terminology Consistency
Scan for inconsistent terms:
- Check if same concept uses different words (e.g., "API endpoint" vs "URL" vs "route")
- Look for consistent naming patterns
- Verify technical terms are used correctly
Anti-Patterns to Flag
Search for these problematic patterns:
Time-sensitive information:
grep -i "before [0-9]\{4\}" "$skill_file" # "before 2025"
grep -i "after [0-9]\{4\}" "$skill_file" # "after 2024"
grep -i "currently" "$skill_file" # "currently available"
Windows-style paths:
grep -E "[a-zA-Z]:\\\\|scripts\\\\|reference\\\\" "$skill_file"
First/second person in description:
# Check description field for "I", "you", "we"
grep "^description:" "$skill_file" | grep -iE "\b(I|you|we|your|my)\b"
Vague descriptions:
# Check for overly generic terms
grep "^description:" "$skill_file" | grep -iE "\b(helps|processes|handles|manages|does)\b"
Step 5: Verify References and Progressive Disclosure
Reference Depth Check
One-level deep references (GOOD):
SKILL.md references:
- [guide.md](references/guide.md)
- [examples.md](references/examples.md)
Nested references (BAD):
SKILL.md → advanced.md → details.md → actual-content.md
Validation steps:
- Find all markdown links in SKILL.md:
[text](path) - For each linked file, check if it links to other files
- Flag any references more than 1 level deep
Progressive Disclosure Patterns
Check if skill uses progressive disclosure properly:
- ✅ SKILL.md provides overview and navigation
- ✅ References linked from SKILL.md for details
- ✅ Clear indication of what each reference contains
- ✅ Reference files have descriptive names
Example of good pattern:
## Advanced features
**Form filling**: See [references/forms.md](references/forms.md) for complete guide
**API reference**: See [references/api.md](references/api.md) for all methods
Table of Contents in Long References
For any reference file over 100 lines, check if it has a table of contents:
for ref_file in "$skill_dir/references"/*.md; do
lines=$(wc -l < "$ref_file")
if [ "$lines" -gt 100 ]; then
# Check for TOC (look for "## Contents" or similar)
if ! grep -qi "^## \(contents\|table of contents\)" "$ref_file"; then
echo "⚠️ Warning: $ref_file is $lines lines but has no table of contents"
fi
fi
done
Step 6: Check for Anti-Patterns and Issues
Common Anti-Patterns
Offering too many options:
# Look for patterns like "you can use X, or Y, or Z"
grep -i "you can use.*or.*or" "$skill_file"
Explaining obvious things:
# Look for unnecessary explanations
grep -i "PDF.*portable document format" "$skill_file"
Inconsistent formatting:
- Mixed heading styles (# vs ##)
- Inconsistent code block languages
- Mixed bullet point styles (- vs *)
Missing explicit instructions:
- Check for vague language: "handle the file", "process the data"
- Look for clear action verbs: "Run", "Create", "Validate", "Check"
Validation for Scripts
If scripts/ directory exists:
Check for documentation:
- ✅ Each script mentioned in SKILL.md
- ✅ Clear description of what each script does
- ✅ Example usage commands
- ✅ Expected input/output formats
Check for error handling:
- ✅ Scripts handle missing files
- ✅ Scripts provide helpful error messages
- ✅ Scripts validate inputs
Step 7: Generate Comprehensive Report
Generate a comprehensive validation report using the structure defined in references/report-template.md.
Key components:
- Overall score (0-10) with justification
- Category scores for Frontmatter, Structure, Content Quality, Progressive Disclosure, Anti-patterns
- Strengths - what the skill does well
- Critical issues - must fix immediately
- Warnings - should fix soon
- Recommendations - optional improvements
- Detailed metrics - line counts, character counts, trigger keyword count
- Best practices checklist - copyable checklist for tracking improvements
Report template: See references/report-template.md for complete report structure, scoring guidelines, and formatting tips
Tips for Great Reports
- Use latest standards: Validate against the freshly fetched official documentation, not outdated cached information
- Be specific: Reference exact line numbers, file names, and code snippets
- Prioritize: List critical issues before minor suggestions
- Explain why: Don't just say what's wrong, explain why it matters (reference the official docs)
- Provide examples: Show good vs bad examples for each issue
- Be constructive: Focus on improvement, not just criticism
- Reference docs: Link to official best practices for each recommendation
- Note documentation timestamp: Include when the docs were fetched so users know validation is current
Example Validation Session
User: /validate-skill skills/make-pr
You should:
- Fetch latest documentation from official Anthropic sources (Step 0)
- Read
skills/make-pr/SKILL.md(Step 1) - Validate against fetched documentation criteria (Steps 2-6)
- Generate comprehensive report (Step 7)
- Provide actionable recommendations with specific line numbers
- Give overall score with justification
- Include timestamp of documentation fetch in report
Reference Materials
Primary source: Always fetch latest documentation from:
- https://code.claude.com/docs/en/skills
- https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
Fallback reference: If WebFetch is unavailable, see references/best-practices-checklist.md for cached best practices (note: may be outdated).
What ships with it: 2 files
20.8 KB alongside SKILL.md
references/
- best-practices-checklist.md16.4 KB
- report-template.md4.4 KB