Skill Inspector & Certifier
What It Does
You just wrote a SKILL.md. You're about to zip it and submit to Agensi / SquidBay / WorkBuddy / Coze / AgentPowers. Don't submit yet. Run this inspector first — it will catch the exact reasons marketplace teams reject skills before you waste 3 days waiting for a "parse failed" email.
One command, one score. Every issue comes with a concrete fix, not a vague "please revise".
When to Use
- You just wrote a new SKILL.md and want to verify before zipping
- Your skill got rejected with "parse failed" or "package missing required resources"
- You want to know if an existing skill follows the open SKILL.md standard
- Curating skills from others and need a certificate of quality
Quick Start
# Inspect a skill directory
python scripts/skill_inspect.py ./my-skill-folder
# Inspect a zip file
python scripts/skill_inspect.py ./my-skill.zip
# Inspect and auto-fix common issues (adds missing quotes, etc.)
python scripts/skill_inspect.py ./my-skill-folder --auto-fix
# Output JSON for CI integration
python scripts/skill_inspect.py ./my-skill-folder --format json
What Gets Checked (14 rules)
| # | Check | Error | Warning | Info |
|---|---|---|---|---|
| 1 | SKILL.md exists at package root | ✅ Missing | ||
| 2 | Frontmatter valid YAML | ✅ Parse error | ||
| 3 | Required frontmatter fields present | ✅ Missing | ||
| 4 | All values quoted | ✅ Unquoted | ||
| 5 | Body ≥ 200 chars | ✅ Too short | ||
| 6 | No dangling file references | ✅ File not found | ||
| 7 | No external URLs in code blocks | ✅ External link | ||
| 8 | No hardcoded credentials | ✅ Found key | ||
| 9 | Package size ≤ 3MB | ✅ Over limit | ||
| 10 | Directory depth ≤ 2 | ✅ Too deep | ||
| 11 | No .git / node_modules clutter | ✅ Junk files | ||
| 12 | Sensitive wording scan | ✅ Red-line term | ||
| 13 | Version follows semver | ✅ Bad format | ||
| 14 | name is kebab-case | ✅ Bad format |
Required Frontmatter Fields
---
name: "kebab-case-identifier" # unique, no spaces
version: "1.0.0" # semver
display_name: "Human Readable"
display_name_en: "English Name" # required for international markets
description: "One line: WHEN to use + WHAT problem it solves"
description_zh: "Chinese detailed description"
description_en: "English detailed description"
author: "Your Name or Brand"
category: "Developer Tools" # matches marketplace categories
---
Output Example
[SKILL INSPECTOR] skill-inspector-certifier/
═══════════════════════════════════════════════
SKILL.md ............ FOUND ✓
Frontmatter ......... VALID ✓
Required fields ..... ALL PRESENT ✓
Body length ......... 1,247 chars (min 200) ✓
File references ..... 3/3 RESOLVED ✓
Package size ........ 182 KB (limit 3 MB) ✓
Directory depth ..... 2 levels ✓
Junk files .......... NONE ✓
Sensitive wording ... CLEAN ✓
═══════════════════════════════════════════════
CERTIFICATE SCORE: 100/100 ✓
STATUS: READY TO PUBLISH
═══════════════════════════════════════════════
Auto-Fix Mode
Pass --auto-fix to have the script patch common issues:
- Quote all unquoted frontmatter values
- Remove .git/ and node_modules/ if present
- Suggest missing body text
Never applied automatically — a _fixed copy is created, original untouched.
Multi-Marketplace Compliance
The inspector knows marketplace-specific quirks:
- Agensi: Pure SKILL.md + scripts/ + references/ (strict)
- WorkBuddy: Requires .codebuddy-plugin/plugin.json for expert packages
- Coze: Needs category mapping to Coze taxonomy
- SquidBay: Validates Anthropic Skill Standard compatibility
Run python scripts/skill_inspect.py ./skill --market agensi to target a specific marketplace.