Skill Validator
Use When
- The user wants to know whether a skill passes the spec.
- A PR check failed and the user needs to understand the error.
- The user is about to open a PR and wants a local pre-flight check.
Don't Use When
- The user wants to create a new skill from scratch → use
skill-author. - The failure is a Python/tooling error unrelated to a skill's contents.
Workflow
- For one skill, run
uv run python scripts/validate_skill.py skills/<name>/SKILL.md. - For everything, run
uv run python scripts/validate_skill.py --all. - To mirror CI on a branch, run
uv run python scripts/validate_skill.py --base origin/main. - Read each
- <message>line under a failing file and map it to the offending section or field. - Edit the
SKILL.mdto fix it, then re-run until the file shows✓.
Rules
- Always re-run the validator after each fix rather than batching guesses. (Why: one fix can reveal or mask another, and the validator is fast.)
- Never edit
scripts/validate_skill.pyto make a skill pass. (Why: the spec is the contract; loosening the validator weakens every skill in the catalogue.)
Examples
- "Does my skill pass?" → run the validator on its
SKILL.mdand report ✓ or the exact failures. - "The PR check says 'missing required section Edge Cases'" → add a non-empty
## Edge Casessection and re-validate. - "Validate everything before I push" → run
--alland summarize the results.
Edge Cases
- If
--basefinds no changed skills → report that nothing changed; there is nothing to validate. - If the error names a missing or empty section → add the section heading (verbatim) with at least one bullet of content and re-run.
References
See spec/SKILL_SPEC.md for what each check enforces and CONTRIBUTING.md for the PR-check summary.