Do-later: work out why two superpowers repos exist, which one is authoritative, and whether the local checkout should be repointed.
Surfaced while triaging twistedmelonman/dotfiles#231. Nothing here is broken today — the plugin loads and works. The concern is that the pieces disagree about which repo is the real one, which makes findings hard to attribute and made #64 harder to write.
What is actually on disk and on GitHub
| thing |
points at |
note |
~/Developer/superpowers (local checkout) |
obra/superpowers |
origin is the upstream, over HTTPS. At v5.0.5, commit 8ea3981. |
smartwatermelon/superpowers (GitHub) |
— |
fork=false, parent=none, Issues disabled. Created 2026-07-31T18:17Z. |
smartwatermelon/superpowers-marketplace |
— |
fork=false, parent=none, Issues disabled. Lives as a submodule under claude-config. |
marketplace marketplace.json |
smartwatermelon/superpowers |
version: 6.2.0 |
| plugin cache |
— |
holds 4.0.3, 6.2.0, 6.3.0 |
The three things worth understanding
1. gh issue list in the local checkout lists someone else's tracker.
~/Developer/superpowers has origin = https://github.com/obra/superpowers.git, so gh issue list there returns obra/superpowers' 312 open issues — Jesse Vincent's, not ours. It looks like a healthy local backlog and is nothing of the sort. No default remote is set (gh repo set-default is unconfigured), so gh falls through to origin.
There is no local checkout of smartwatermelon/superpowers anywhere under ~/Developer — a find over every git remote there turns up exactly one superpowers checkout, and it is the upstream one.
2. The superpowers repos read as detached forks, not fresh repos.
Both report fork=false / parent=none, yet smartwatermelon/superpowers carries upstream ancestry: Jesse Vincent's commits 44c9b2d6 and 3dcbd5c4 (the v6.2.0 release) sit beneath the first local commit 18821ef9 ("chore: remove forced SessionStart hook injecting using-superpowers (#1)"). The repo was created 18:17Z and that first local commit lands 59 minutes later.
That shape is consistent with fork-then-detach. Worth confirming, because it determines whether upstream changes can still be pulled in cleanly and whether there is any intent to track upstream at all.
3. Version drift across the three sources.
The local checkout is 5.0.5, marketplace.json declares 6.2.0, and the plugin cache has 6.3.0 on disk. Three sources, three versions. Related: #64 carries a finding that the marketplace dropped a pinned commit ref, so the plugin installs from HEAD while version: still says 6.2.0 — that pin removal is probably why cache and manifest disagree.
Questions to answer
Why this is worth doing
Attribution. During the twistedmelonman/dotfiles#231 drain, ten findings had to be verified against gh api and the plugin cache instead of a local checkout, because the obvious local path is a different repo. Attributing by the local checkout would have been wrong in a way that looked right — the upstream tree still has the hooks/ directory the findings say was deleted.
Related
Do-later: work out why two superpowers repos exist, which one is authoritative, and whether the local checkout should be repointed.
Surfaced while triaging twistedmelonman/dotfiles#231. Nothing here is broken today — the plugin loads and works. The concern is that the pieces disagree about which repo is the real one, which makes findings hard to attribute and made #64 harder to write.
What is actually on disk and on GitHub
~/Developer/superpowers(local checkout)obra/superpowersoriginis the upstream, over HTTPS. At v5.0.5, commit8ea3981.smartwatermelon/superpowers(GitHub)fork=false,parent=none, Issues disabled. Created 2026-07-31T18:17Z.smartwatermelon/superpowers-marketplacefork=false,parent=none, Issues disabled. Lives as a submodule under claude-config.marketplace.jsonsmartwatermelon/superpowersversion: 6.2.0The three things worth understanding
1.
gh issue listin the local checkout lists someone else's tracker.~/Developer/superpowershasorigin = https://github.com/obra/superpowers.git, sogh issue listthere returns obra/superpowers' 312 open issues — Jesse Vincent's, not ours. It looks like a healthy local backlog and is nothing of the sort. No default remote is set (gh repo set-defaultis unconfigured), so gh falls through toorigin.There is no local checkout of
smartwatermelon/superpowersanywhere under~/Developer— afindover every git remote there turns up exactly one superpowers checkout, and it is the upstream one.2. The superpowers repos read as detached forks, not fresh repos.
Both report
fork=false/parent=none, yetsmartwatermelon/superpowerscarries upstream ancestry: Jesse Vincent's commits44c9b2d6and3dcbd5c4(the v6.2.0 release) sit beneath the first local commit18821ef9("chore: remove forced SessionStart hook injecting using-superpowers (#1)"). The repo was created 18:17Z and that first local commit lands 59 minutes later.That shape is consistent with fork-then-detach. Worth confirming, because it determines whether upstream changes can still be pulled in cleanly and whether there is any intent to track upstream at all.
3. Version drift across the three sources.
The local checkout is 5.0.5,
marketplace.jsondeclares 6.2.0, and the plugin cache has 6.3.0 on disk. Three sources, three versions. Related: #64 carries a finding that the marketplace dropped a pinned commit ref, so the plugin installs from HEAD whileversion:still says 6.2.0 — that pin removal is probably why cache and manifest disagree.Questions to answer
smartwatermelon/superpowersa detached fork ofobra/superpowers? Was detaching deliberate?~/Developer/superpowersbe repointed atsmartwatermelon/superpowers(withobraas anupstreamremote), or is it deliberately a read-only upstream reference? If the latter,gh repo set-defaultshould be set soghcommands there do not silently address the upstream tracker.smartwatermelon/superpowersat all? Right now it is only ever touched through the plugin cache.Why this is worth doing
Attribution. During the twistedmelonman/dotfiles#231 drain, ten findings had to be verified against
gh apiand the plugin cache instead of a local checkout, because the obvious local path is a different repo. Attributing by the local checkout would have been wrong in a way that looked right — the upstream tree still has thehooks/directory the findings say was deleted.Related