Ssm skill validate
Skill JasonLo/skill-sommelier/maintainer-skills/ssm-skill-validate
Discover, Curate, and Evolve Claude Skills Using Claude Skills π€―
npx -y skills add JasonLo/skill-sommelier --skill ssm-skill-validateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Validate all skills in this repo for frontmatter correctness, naming conventions, and structural rules. Use when adding a new skill, before releases, or in CI. Triggers on "validate skills", "lint skills", "check skills", "audit frontmatter", "skill validation", "pre-release check".
SKILL.md
4.7 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Validate Skills
Run automated checks against every skill in skills/ and produce a pass/fail report.
When to Use
- After creating or modifying a skill
- Before cutting a release
- As a CI gate in GitHub Actions
- When auditing repo health
When NOT to Use
- To improve skill content quality β use
ss-skill-craftimprove mode instead
Phase 1 β Discover Skills
Entry: User triggers validation.
- Glob for all
skills/*/SKILL.mdfiles - Also glob for
skills/*/directories and flag any that lack aSKILL.md - Build a list of
(directory_name, skill_md_path)pairs
Exit: Complete list of skill directories and their SKILL.md status.
Phase 2 β Validate Each Skill
Entry: Skill list from Phase 1.
For each skill, run these checks and record pass/warn/fail per check:
Check 1 β SKILL.md exists (FAIL if missing)
Directory must contain a SKILL.md file.
Check 2 β Valid YAML frontmatter (FAIL if broken)
File must start with --- and contain a closing ---. Parse the frontmatter block.
Check 3 β Required field: name (FAIL if missing)
Frontmatter must contain a name: field.
Check 4 β Required field: description (FAIL if missing)
Frontmatter must contain a description: field.
Check 5 β Name matches directory (FAIL if mismatch)
The name: value must exactly match the directory name under skills/.
Check 6 β Name has ss- prefix (FAIL if missing)
The name: value must start with ss-.
Check 7 β allowed-tools declared (WARN if missing)
Frontmatter should contain allowed-tools:. This is recommended, not required.
Check 8 β Line count under 500 (WARN if over)
Count total lines in SKILL.md. Warn if over 500; suggest moving content to references/.
Check 9 β Referenced directories exist (FAIL if broken)
If the SKILL.md body mentions references/ or scripts/, verify those directories exist in the skill folder.
Check 11 β metadata.depends-on targets exist (FAIL if broken)
If frontmatter contains metadata.depends-on:, verify each space-delimited skill name corresponds to an existing directory under skills/ or maintainer-skills/.
Check 12 β metadata.related-skills targets exist (WARN if broken)
If frontmatter contains metadata.related-skills:, verify each comma-separated skill name (trimmed) corresponds to an existing directory under skills/ or maintainer-skills/. Warn on missing targets β these are cross-references, not hard dependencies.
Exit: All per-skill checks run. Results collected.
Phase 3 β Cross-Skill Checks
Entry: Per-skill checks complete.
Check 10 β Trigger phrase overlap (WARN if 3+ phrases shared)
Extract double-quoted phrases from each skill's description: block (the conventional location for trigger phrases). For every pair of skills, count exact phrase matches after lowercasing. Warn when a pair shares 3 or more distinct quoted phrases β that's a strong signal they'll compete for activation. Use ssm-skill-consolidate to merge them or rewrite descriptions to disambiguate.
Exit: Pairwise comparison done across the entire run.
Phase 4 β Report
Entry: All checks complete.
The script emits one line per check result:
OK: ss-foo
FAIL: ss-bar β name 'bar' does not match directory
WARN: ss-baz β missing allowed-tools (recommended)
WARN: trigger overlap β ss-foo vs ss-quux (4 shared phrases: create a skill; new skill; make skill)
Followed by a summary:
Summary for skills: N checked, X failures, Y warnings
Exit code: 0 if no FAILs (warnings allowed), 1 if any FAIL. CI gates use the exit code directly.
How to Run
The deterministic checks live in scripts/validate.sh. Run it locally:
bash maintainer-skills/ssm-skill-validate/scripts/validate.sh skills ss-
bash maintainer-skills/ssm-skill-validate/scripts/validate.sh maintainer-skills ssm-
Exit code is 0 if all checks pass (warnings allowed), 1 on any FAIL.
CI Integration
The script is wired into two workflows:
.github/workflows/validate.ymlβ runs on every PR and push tomainthat touchesskills/,maintainer-skills/, or the validator itself..github/workflows/release.ymlβ thereleasejob hasneeds: validate, so a tag push cannot ship a broken skill.
When adding a new check, edit scripts/validate.sh and the rules listed above in lockstep.
What ships with it: 2 files
6.7 KB alongside SKILL.md, 2 of them executable
scripts/
- sync-skills.shruns773 B
- validate.shruns5.9 KB