- normalize CRLF and match the closing frontmatter delimiter tolerantly
(no false CI failures on Windows-committed files; no latching onto a
later horizontal rule)
- strip fenced code blocks before section/table scanning so embedded
anatomy examples can't fool the checks
- strip quotes/inline comments from frontmatter values; reject empty
required values
- guard readdir/stat so a wrong root or dangling symlink reports instead
of crashing; fail on zero skills found
- require plugin.json version to exist (undefined===undefined no longer
passes as in sync)
Checks every skills/*/SKILL.md for required frontmatter (name matching
directory, description, user-invocable) and the 8-section anatomy from
README (init is anatomy-exempt as the documented off-spine skill), plus
plugin.json/marketplace.json version sync. Zero deps, exits 1 on any
violation.