From skill-maintainer
Quick quality check for all skills in a repo: spec compliance, token budget, body size, freshness, and description quality. Use when user says "check quality", "quality report", "check my skills", "validate skills", "skill health", "are my skills ok". Invoke with /skill-maintainer:quality.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-maintainer:qualityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Discover all SKILL.md files in the repo and check each one. Output a summary table.
Discover all SKILL.md files in the repo and check each one. Output a summary table.
If $ARGUMENTS is non-empty, filter discovered skills to those whose directory name matches any of the space-separated arguments. Matching is substring: tui matches tui-design. If no skills match, report an error and exit.
Examples:
/skill-maintainer:quality -- check all skills/skill-maintainer:quality tui-design -- check only tui-design/skill-maintainer:quality mlx fast -- check skills matching "mlx" or "fast"Find all files matching **/skills/*/SKILL.md in the current repo. Skip directories named node_modules, .git, .venv, __pycache__, state, dist, build. Then apply the scope filter from $ARGUMENTS if provided.
Read the SKILL.md frontmatter (between --- delimiters). Check:
name field exists and is non-emptyname is kebab-case (lowercase letters, digits, single hyphens, no leading/trailing hyphens)name matches the containing directory namedescription field exists and is non-emptydescription is under 1024 charactersdescription has no XML angle brackets (< >)Mark as PASS or FAIL.
Count characters in SKILL.md only (always-loaded when skill triggers). Divide by 4 for token estimate. Reference files (references/, other .md) are tracked separately and reported but do not count against the budget.
Count lines in SKILL.md (excluding frontmatter).
Read metadata.last_verified from frontmatter. Calculate days since that date.
Check the description field for:
Both present: GOOD. One missing: PARTIAL. Both missing: POOR.
Scan all .md files in each skill directory (SKILL.md + references/) for the pattern load the \X` skill (where X is a backtick-quoted skill name). This is the canonical cross-reference directive; do not match descriptive mentions like "the \X` skill covers..." which are not actionable references.
For each referenced skill name X, verify that a skill directory named X exists in the repo (i.e., there is a skills/X/SKILL.md somewhere). Mark as PASS if all references resolve, FAIL if any reference points to a non-existent skill, SKIP if no cross-references found.
For each skill that has a references/ directory, check every .md file in it for a last updated: YYYY-MM-DD line (case-insensitive, anywhere in the file). Mark as PASS if all reference files have dates, WARN if any are missing, SKIP if no references/ directory.
Skill Quality Report
====================
| Skill | Spec | Tokens | Lines | Freshness | Description | XRefs | RefDates |
|-------|------|--------|-------|-----------|-------------|-------|----------|
| name | PASS | 1,234 | 45 | FRESH (3d)| GOOD | PASS | PASS |
| name | FAIL | 9,012 | 520 | STALE (45d)| PARTIAL | FAIL | WARN |
Summary: X skills checked, Y pass all checks, Z have issues
SKIP counts as PASS for the summary count (the check was not applicable, not failed).
If any skill fails spec compliance, note it prominently at the end.
| Check | OK | Warn | Critical |
|---|---|---|---|
| Token budget | under 4,000 | 4,000-8,000 | over 8,000 |
| Body lines | under 500 | -- | 500+ |
| Freshness | under 30 days | -- | over 30 days or missing |
| Description | WHAT + WHEN | one missing | both missing |
| Cross-refs | all resolve or SKIP | -- | dangling reference |
| Ref dates | all present or SKIP | some missing | -- |
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub fblissjr/fb-claude-skills --plugin skill-maintainer