Skill Lint
Catches broken skills before they sit invisible in the repo — the exact failure mode found in this repo's cleanup: dev--security-auditor had no description: field and Claude Code could never activate it.
What it checks
For every .claude/skills/*/SKILL.md:
- File starts with a YAML frontmatter block (
---...---) - Frontmatter has a
description:field, non-empty name:field (if present) matches the folder name- No two skills share the same
name:
Usage
python .claude/skills/meta--skill-lint/scripts/lint.py
Exit code 0 = all clean. Exit code 1 = at least one broken skill, printed with the specific problem (missing frontmatter / missing description / name mismatch / duplicate name).
When something fails
- Missing frontmatter / description: open the file, add a
description:that states when to use the skill (trigger phrases help). See any otherSKILL.mdin the repo for the format. - Duplicate name: rename one of the two skills'
name:field or folder.
Run this after adding any new skill, and before running meta--skill-audit (a skill audit is meaningless if some skills are silently broken).