Skip a working local Claude checkout and name found sources - #19
Merged
Merged
Conversation
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.
Fixes #18. Targets
ktenman/superpowers:mainlike every fork PR; the template'sdevrule is upstream's, and the fork'sdevis a stale upstream mirror.Who is submitting this PR? (required)
claude-opus-5-5, 1M context)superpowers@superpowers-dev6.4.1 (this fork's checkout as a directory marketplace, enabled),superpowers@claude-plugins-official6.4.1 (disabled),ponytail@ponytail4.8.3,claude-seo@agricidaniel-claude-seo2.2.0,frontend-design@claude-plugins-official,swift-lsp@claude-plugins-official1.0.0What problem are you trying to solve?
After #17,
npx github:ktenman/superpowerson a machine set up with the oldscripts/install.shprinted this and exited 1:It reads as "Superpowers is not installed in Claude", but it was.
install.shhad registered the checkout as a directory marketplace ({"source":"directory","path":"/Users/tenman/superpowers"}), the plugin was enabled, and Claude Code loads directory marketplaces in place, so every skill was live. Refusing to replace that registration is intended (#16). The report was the problem: it didn't name what it found, didn't say the skills were already live, and failed every run for a setupdocs/fork-install.mdsays to keep when live development is wanted. Details in #18.What does this PR change?
Refusals now name the registration they found, e.g.
found directory /path,found git <url>#<ref>, orfound local /pathfor Codex. A Claude directory marketplace whose plugin is enabled and loads without errors is reported asclaude: skipped (… at <path>; Claude loads the skills live from that checkout …)with the existing migration command; it runs only the two list calls and doesn't fail the run. The docs match.Is this change appropriate for the core library?
This is fork-only installer infrastructure for ktenman/superpowers (the installer from #17), not a contribution to obra/superpowers. No skill content, hooks or dependencies change.
What alternatives did you consider?
enabledalone. A disabled or missing plugin gives Claude no Superpowers skills. A moved checkout stays"enabled": trueinclaude plugin list --jsonbut reports"errors": ["Marketplace superpowers-dev failed to load: cache-miss"]. "Skills live from that checkout" would be false in each case, so they still fail, now naming the directory.mainthe installer promises.migration(), so the command text matches every other refusal.skills(vercel-labs, see "Why not a skills library" in Installer reports Claude FAILED when superpowers-dev is a local directory marketplace #18) and similar packages copy or link SKILL.md folders without the plugin's SessionStart hook.plugins(vercel-labs) is the only multi-harness plugin installer found, but it writes Claude and Codex configuration directly, clones without a ref, has no update or remove, and would silently mix a same-name local marketplace with the fork. Each would also add the first dependency.Does this PR contain multiple unrelated changes?
No. Naming the found source and skipping a working local checkout are the two parts of the fix proposed in #18. The second commit narrows the skip to plugins that load, and the docs describe the result.
Existing PRs
install.shthat created the directory registration). All 16 fork PRs are merged, and none addresses this report. The installer exists only in the fork, so upstream has no counterpart.Environment tested
CLAUDE_CONFIG_DIRclaude-opus-5-5[1m]marketplace list --jsonfor a local marketplace, in a throwawayCODEX_HOMENew harness support (required if this PR adds a new harness)
Not applicable. No harness is added.
Evaluation
claudeandnodeon PATH:claude: FAILED: …output above, exit 1.claude: skipped (superpowers-dev is a local directory marketplace at /Users/tenman/superpowers; Claude loads the skills live from that checkout, not from ktenman/superpowers#main). To migrate, …, exit 0. Besides the--versionprobe, onlyclaude plugin marketplace list --jsonandclaude plugin list --jsonran.CLAUDE_CONFIG_DIR:skipped, exit 0 with the first commit (a false success);claude: FAILED: … (found directory <path>), exit 1 with the second.node --test tests/installer/test-install.mjs: 36/36 passed. Each of the 8 new or changed tests failed before its fix.tests/run-offline-tests.shin a fresh clone at the head commit: 18/18 suites passed.Rigor
superpowers:writing-skillsandcompleted adversarial pressure testing (paste results below). (Not a skills change.)
rationalizations, "human partner" language) without extensive evals
showing the change is an improvement. No skill content changed.
Human review
Not yet. The fork owner asked for this PR directly, and the diff is reviewed here.