test: plugin-load smoke test + skill-name slug normalization#14
Merged
Conversation
…me slugs
Add tests/smoke-plugin.sh — a functional smoke test that reproduces how
Claude Code loads the plugin end-to-end and proves the guard hooks fire:
A. manifest parses and names the plugin
B. all 134 skills discover (frontmatter name+description, slug == dir, unique)
C. all 39 agents discover (frontmatter name+description, unique)
D. all 59 commands discover (names unique)
E. every ${CLAUDE_PLUGIN_ROOT}/… path in hooks.json resolves (14 paths)
F. destructive-guard and no-commit-to-main actually execute with the
correct block (exit 2) vs allow (exit 0) outcomes
The skill-discovery check surfaced 7 vendored plugin-dev skills carrying
Title-Case frontmatter names ("Agent Development") that did not match their
slug dirs. Normalize all 7 to the canonical lowercase-hyphen slug so every
skill name == its directory; the smoke test now enforces this as a hard check.
Wire smoke-plugin.sh into run-all.sh and drop two dead language-packs find
blocks left over from the flatten in validate-frontmatter.sh / validate-rules.sh.
https://claude.ai/code/session_01U6H3oa4GEngboKuc8jvwC3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds an end-to-end functional smoke test that reproduces how Claude Code loads this plugin, and fixes the one real finding it surfaced.
tests/smoke-plugin.shUnlike the existing structural
validate-*.shchecks, this walks the loader's discovery path and actually fires hooks:.claude-plugin/plugin.jsonparses and names the pluginname+description,name == dirslug, uniquename+description, unique${CLAUDE_PLUGIN_ROOT}/…path inhooks.jsonresolves (14 paths),.shexecutable + shebang'ddestructive-guardandno-commit-to-mainactually execute with correct block (exit 2) vs allow (exit 0) outcomesFinding it caught — 7 non-conformant skill names
The skill check flagged 7 vendored plugin-dev skills carrying Title-Case frontmatter names (
Agent Development) that didn't match their slug dirs (agent-development). Normalized all 7 to the canonical lowercase-hyphen slug so every skillname == directory. The smoke test now enforces this as a hard check. None of these names were referenced as identifiers anywhere — only as prose/headings — so the change is safe.Housekeeping
smoke-plugin.shintotests/run-all.sh.find language-packs/...blocks left over from the flatten invalidate-frontmatter.sh/validate-rules.sh(that dir no longer exists).Verification
tests/run-all.shis green — all five validators pass, including the new smoke test (smoke-plugin: PASS). Repo-wide dangling-reference grep for deleted layer dirs is clean outside the intentionally-historicaldocs/archives.https://claude.ai/code/session_01U6H3oa4GEngboKuc8jvwC3
Generated by Claude Code