Repository navigation
fix(design-detect): find impeccable installed as a Claude Code plugin - #2976
Closed
SomSamantray wants to merge 2 commits into
Closed
SomSamantray wants to merge 2 commits into
SomSamantray wants to merge 2 commits into
Conversation
The design-detector probe only ever checked <root>/<SKILL_ROOTS>/skills/impeccable/, never the Claude Code plugin-cache layout (<root>/.claude/plugins/cache/<marketplace>/<plugin>/<version>/skills/impeccable/). A plugin-installed impeccable was therefore invisible: IMPECCABLE_SKILL stayed absent, the launcher was never found (so the NOT_CACHED run hint never fired), and its sibling engine was never considered. Add a plugin-cache walk alongside the existing SKILL_ROOTS walk, sharing the same presence/launcher/repo-local-exclusion/sibling-engine logic via an extracted checkSkillDir() helper so both paths stay behaviorally identical. Fixes garrytan#2838
Both did the identical try/catch-around-readdirSync; newestSemverDir now reuses the new safeReaddir helper instead of duplicating it.
|
Merging to
After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here |
Contributor
|
Thanks @SomSamantray — your plugin-cache discovery contribution was incorporated, with credit, into the merged fix wave in #2978 (v1.91.1.0). That change also addresses the version-ordering finding here and adds custom-root, trust-boundary, and handoff regression coverage. Closing this PR as superseded by the merged implementation; #2838 is already closed. |
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.
Why
gstack-design-detect probeonly looks for impeccable under~/.claude/skills/impeccable/. Today the normal way to get impeccable is as a Claude Code plugin, which installs at~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/skills/impeccable/instead — a path the probe never checks. So every plugin-installed user getsIMPECCABLE_SKILL: absent, never sees theNOT_CACHEDrun hint even though their own launcher is sitting right there, and the/impeccable <cmd>handoff in/review//ship//design-reviewnever fires for them. This adds a plugin-cache walk alongside the existing one, sharing the same presence/launcher/repo-local-exclusion/sibling-engine logic so both paths behave identically.Live evidence
Fixture:
<fixture-home>/.claude/plugins/cache/impeccable/impeccable/4.3.1/skills/impeccable/SKILL.md— the exact layout from the issue's own repro.Scope
bin/gstack-design-detect.ts(plugin-cache walk + sharedcheckSkillDirextraction),test/gstack-design-detect.test.ts(4 new regression tests)gstack-design-detect.test.tssuiteskipIf(!POSIX), matching the file's existing pattern for launcher-execution tests); did not test against a real Claude Code plugin marketplace install, only the fixture layout the issue's reproduction documentsLiveness proof (required for external contributors)
Checklist
GSTACK PRtyped live into a real surface) or PR author is @garrytan (owner exemption)Fixes #2838
Unapplied review findings
bin/gstack-design-detect.ts:39— Plugin-cache walk picks an arbitrary (possibly stale) version, not the newestSuggested fix: in
pluginCacheImpeccableSkillDirs, sort version entries with the samesemverKeycomparatornewestSemverDiruses (or callnewestSemverDir(pluginDir)and push only that version), so plugin-cache resolution gets the same newest-wins guarantee the rest of the file relies on.