Problem
docs/PLUGIN-PHILOSOPHY.md:69 mandates it:
The frontmatter name always matches the skill directory name, in the character set the Agent Skills specification allows.
Nothing enforces it. Check 1 in plugins/skill-quality/scripts/check-skill.sh asserts only that name: is present and non-empty:
grep -qE '^name:[[:space:]]*\S' <<<"$FRONTMATTER" || err "frontmatter missing 'name:'"
A mismatch is not cosmetic. The directory name is what Claude Code namespaces the skill by, so a divergent frontmatter name silently changes the invocation the doctrine says the skill has — and the picker labels rows by the resolved leaf name, so the drift is invisible in the listing too.
Scope
Extend check 1 with a deterministic FAIL when frontmatter name differs from the containing directory name.
Current conformance
Verified across the whole catalog before proposing this as blocking:
checked 143; name!=dir violations: 0
So the gate lands green on today's tree — no baseline file, no grandfathering needed.
Related
Problem
docs/PLUGIN-PHILOSOPHY.md:69mandates it:Nothing enforces it. Check 1 in
plugins/skill-quality/scripts/check-skill.shasserts only thatname:is present and non-empty:A mismatch is not cosmetic. The directory name is what Claude Code namespaces the skill by, so a divergent frontmatter
namesilently changes the invocation the doctrine says the skill has — and the picker labels rows by the resolved leaf name, so the drift is invisible in the listing too.Scope
Extend check 1 with a deterministic FAIL when frontmatter
namediffers from the containing directory name.Current conformance
Verified across the whole catalog before proposing this as blocking:
So the gate lands green on today's tree — no baseline file, no grandfathering needed.
Related