The “Validated” Badge ✅
A skill earns the “Validated” badge only if it passes these 5 automated checks:1. Metadata Integrity
TheSKILL.md frontmatter must be valid YAML and contain:
name
name
- Kebab-case format
- Must match folder name exactly
- Example:
stripe-integration
description
description
- Under 200 characters
- Clear value proposition
- Focus on WHEN to use the skill
- Example:
"Stripe payment integration patterns including checkout, subscriptions, and webhooks"
risk
risk
One of:
[none, safe, critical, offensive, unknown]- Use
unknownonly for legacy or unclassified skills - Prefer a concrete level for new skills
source
source
- URL to original source, or
- “self” if original work
- Example:
"https://github.com/vercel-labs/agent-skills"
2. Clear Triggers (“When to use”)
The skill MUST have a section explicitly stating when to trigger it.## When to Use## Use this skill when## When to Use This Skill
3. Safety & Risk Classification
Every skill must declare its risk level:none
🟢 none: Pure text/reasoning (e.g., Brainstorming)
- No file system access
- No external commands
- No state modifications
safe
🔵 safe: Reads files, runs safe commands (e.g., Linter)
- Read-only file operations
- Non-destructive analysis
- Safe CLI tools
critical
🟠 critical: Modifies state, deletes files, pushes to prod (e.g., Git Push)
- File modifications
- Database changes
- Production deployments
- Destructive operations
4. Copy-Pasteable Examples
At least one code block or interaction example that a user (or agent) can immediately use. Good example:5. Explicit Limitations
A list of known edge cases or things the skill cannot do. Examples:- “Does not work on Windows without WSL.”
- “Requires Node.js 18 or higher.”
- “Cannot handle binary file formats.”
Support Levels
We also categorize skills by who maintains them:| Level | Badge | Meaning |
|---|---|---|
| Official | 🟣 | Maintained by the core team. High reliability. |
| Community | ⚪ | Contributed by the ecosystem. Best effort support. |
| Verified | ✨ | Community skill that has passed deep manual review. |
How to Validate Your Skill
The canonical validator isscripts/validate_skills.py. Run npm run validate (or npm run validate:strict) before submitting a PR:
CI Requirement: Pull requests must pass
npm run validate:strict to be merged.Validation Output
The validator checks:- ✅
SKILL.mdexists - ✅ Valid YAML frontmatter
- ✅ Required fields present (
name,description) - ✅
namematches folder name - ✅ Description under 200 characters
- ✅ Valid
risklevel - ✅ “When to Use” section present
- ✅ At least one code example
- ✅ No broken internal links
Common Validation Errors
Name mismatch
Name mismatch
Error:
name in frontmatter doesn’t match folder nameFix: Ensure the name field exactly matches the directory name (case-sensitive, kebab-case)Description too long
Description too long
Error: Description exceeds 200 charactersFix: Shorten to focus on the core value and trigger conditions
Missing 'When to Use'
Missing 'When to Use'
Error: No “When to Use” section foundFix: Add a section with one of these headings:
## When to Use## When to Use This Skill## Use this skill when
Invalid risk level
Invalid risk level
Error:
risk field contains invalid valueFix: Use only: none, safe, critical, offensive, or unknownBest Practices
Start with the template
Use the skill template from the Contributing Guide to ensure all required sections are present.
Test with real AI
Before submitting, test your skill with an actual AI assistant to ensure it works as intended.