workerssuper 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +13 -0
  3. package/.codex/INSTALL.md +67 -0
  4. package/.cursor-plugin/plugin.json +18 -0
  5. package/.gitattributes +18 -0
  6. package/.github/FUNDING.yml +3 -0
  7. package/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
  8. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  9. package/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
  10. package/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
  11. package/.github/PULL_REQUEST_TEMPLATE.md +87 -0
  12. package/.opencode/INSTALL.md +83 -0
  13. package/.opencode/plugins/superpowers.js +107 -0
  14. package/CHANGELOG.md +13 -0
  15. package/CODE_OF_CONDUCT.md +128 -0
  16. package/GEMINI.md +2 -0
  17. package/LICENSE +21 -0
  18. package/README.md +187 -0
  19. package/RELEASE-NOTES.md +1057 -0
  20. package/agents/code-reviewer.md +48 -0
  21. package/commands/brainstorm.md +5 -0
  22. package/commands/execute-plan.md +5 -0
  23. package/commands/write-plan.md +5 -0
  24. package/docs/README.codex.md +126 -0
  25. package/docs/README.opencode.md +130 -0
  26. package/docs/plans/2025-11-22-opencode-support-design.md +294 -0
  27. package/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
  28. package/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
  29. package/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
  30. package/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
  31. package/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
  32. package/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
  33. package/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
  34. package/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
  35. package/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
  36. package/docs/testing.md +303 -0
  37. package/docs/windows/polyglot-hooks.md +212 -0
  38. package/gemini-extension.json +6 -0
  39. package/hooks/hooks-cursor.json +10 -0
  40. package/hooks/hooks.json +16 -0
  41. package/hooks/run-hook.cmd +46 -0
  42. package/hooks/session-start +57 -0
  43. package/package.json +5 -0
  44. package/skills/brainstorming/SKILL.md +164 -0
  45. package/skills/brainstorming/scripts/frame-template.html +214 -0
  46. package/skills/brainstorming/scripts/helper.js +88 -0
  47. package/skills/brainstorming/scripts/server.cjs +338 -0
  48. package/skills/brainstorming/scripts/start-server.sh +153 -0
  49. package/skills/brainstorming/scripts/stop-server.sh +55 -0
  50. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  51. package/skills/brainstorming/visual-companion.md +286 -0
  52. package/skills/dispatching-parallel-agents/SKILL.md +182 -0
  53. package/skills/executing-plans/SKILL.md +70 -0
  54. package/skills/finishing-a-development-branch/SKILL.md +200 -0
  55. package/skills/receiving-code-review/SKILL.md +213 -0
  56. package/skills/requesting-code-review/SKILL.md +105 -0
  57. package/skills/requesting-code-review/code-reviewer.md +146 -0
  58. package/skills/subagent-driven-development/SKILL.md +277 -0
  59. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  60. package/skills/subagent-driven-development/implementer-prompt.md +113 -0
  61. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  62. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  63. package/skills/systematic-debugging/SKILL.md +296 -0
  64. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  65. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  66. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  67. package/skills/systematic-debugging/find-polluter.sh +63 -0
  68. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  69. package/skills/systematic-debugging/test-academic.md +14 -0
  70. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  71. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  72. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  73. package/skills/test-driven-development/SKILL.md +371 -0
  74. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  75. package/skills/using-git-worktrees/SKILL.md +218 -0
  76. package/skills/using-superpowers/SKILL.md +115 -0
  77. package/skills/using-superpowers/references/codex-tools.md +25 -0
  78. package/skills/using-superpowers/references/gemini-tools.md +33 -0
  79. package/skills/verification-before-completion/SKILL.md +139 -0
  80. package/skills/writing-plans/SKILL.md +145 -0
  81. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  82. package/skills/writing-skills/SKILL.md +655 -0
  83. package/skills/writing-skills/anthropic-best-practices.md +1150 -0
  84. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  85. package/skills/writing-skills/graphviz-conventions.dot +172 -0
  86. package/skills/writing-skills/persuasion-principles.md +187 -0
  87. package/skills/writing-skills/render-graphs.js +168 -0
  88. package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  89. package/tests/brainstorm-server/package-lock.json +36 -0
  90. package/tests/brainstorm-server/package.json +10 -0
  91. package/tests/brainstorm-server/server.test.js +424 -0
  92. package/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
  93. package/tests/brainstorm-server/ws-protocol.test.js +392 -0
  94. package/tests/claude-code/README.md +158 -0
  95. package/tests/claude-code/analyze-token-usage.py +168 -0
  96. package/tests/claude-code/run-skill-tests.sh +187 -0
  97. package/tests/claude-code/test-document-review-system.sh +177 -0
  98. package/tests/claude-code/test-helpers.sh +202 -0
  99. package/tests/claude-code/test-subagent-driven-development-integration.sh +314 -0
  100. package/tests/claude-code/test-subagent-driven-development.sh +165 -0
  101. package/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
  102. package/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
  103. package/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
  104. package/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
  105. package/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
  106. package/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
  107. package/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
  108. package/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
  109. package/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
  110. package/tests/explicit-skill-requests/run-all.sh +70 -0
  111. package/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
  112. package/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
  113. package/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
  114. package/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
  115. package/tests/explicit-skill-requests/run-test.sh +136 -0
  116. package/tests/opencode/run-tests.sh +163 -0
  117. package/tests/opencode/setup.sh +73 -0
  118. package/tests/opencode/test-plugin-loading.sh +72 -0
  119. package/tests/opencode/test-priority.sh +198 -0
  120. package/tests/opencode/test-tools.sh +104 -0
  121. package/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
  122. package/tests/skill-triggering/prompts/executing-plans.txt +1 -0
  123. package/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
  124. package/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
  125. package/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
  126. package/tests/skill-triggering/prompts/writing-plans.txt +10 -0
  127. package/tests/skill-triggering/run-all.sh +60 -0
  128. package/tests/skill-triggering/run-test.sh +88 -0
  129. package/tests/subagent-driven-dev/go-fractals/design.md +81 -0
  130. package/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
  131. package/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
  132. package/tests/subagent-driven-dev/run-test.sh +106 -0
  133. package/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
  134. package/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
  135. package/tests/subagent-driven-dev/svelte-todo/scaffold.sh +46 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "superpowers-dev",
3
+ "description": "Development marketplace for Superpowers core skills library",
4
+ "owner": {
5
+ "name": "Jesse Vincent",
6
+ "email": "jesse@fsck.com"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "superpowers",
11
+ "description": "Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
12
+ "version": "5.0.5",
13
+ "source": "./",
14
+ "author": {
15
+ "name": "Jesse Vincent",
16
+ "email": "jesse@fsck.com"
17
+ }
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "superpowers",
3
+ "description": "Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
4
+ "version": "5.0.5",
5
+ "author": {
6
+ "name": "Jesse Vincent",
7
+ "email": "jesse@fsck.com"
8
+ },
9
+ "homepage": "https://github.com/obra/superpowers",
10
+ "repository": "https://github.com/obra/superpowers",
11
+ "license": "MIT",
12
+ "keywords": ["skills", "tdd", "debugging", "collaboration", "best-practices", "workflows"]
13
+ }
@@ -0,0 +1,67 @@
1
+ # Installing Superpowers for Codex
2
+
3
+ Enable superpowers skills in Codex via native skill discovery. Just clone and symlink.
4
+
5
+ ## Prerequisites
6
+
7
+ - Git
8
+
9
+ ## Installation
10
+
11
+ 1. **Clone the superpowers repository:**
12
+ ```bash
13
+ git clone https://github.com/obra/superpowers.git ~/.codex/superpowers
14
+ ```
15
+
16
+ 2. **Create the skills symlink:**
17
+ ```bash
18
+ mkdir -p ~/.agents/skills
19
+ ln -s ~/.codex/superpowers/skills ~/.agents/skills/superpowers
20
+ ```
21
+
22
+ **Windows (PowerShell):**
23
+ ```powershell
24
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.agents\skills"
25
+ cmd /c mklink /J "$env:USERPROFILE\.agents\skills\superpowers" "$env:USERPROFILE\.codex\superpowers\skills"
26
+ ```
27
+
28
+ 3. **Restart Codex** (quit and relaunch the CLI) to discover the skills.
29
+
30
+ ## Migrating from old bootstrap
31
+
32
+ If you installed superpowers before native skill discovery, you need to:
33
+
34
+ 1. **Update the repo:**
35
+ ```bash
36
+ cd ~/.codex/superpowers && git pull
37
+ ```
38
+
39
+ 2. **Create the skills symlink** (step 2 above) — this is the new discovery mechanism.
40
+
41
+ 3. **Remove the old bootstrap block** from `~/.codex/AGENTS.md` — any block referencing `superpowers-codex bootstrap` is no longer needed.
42
+
43
+ 4. **Restart Codex.**
44
+
45
+ ## Verify
46
+
47
+ ```bash
48
+ ls -la ~/.agents/skills/superpowers
49
+ ```
50
+
51
+ You should see a symlink (or junction on Windows) pointing to your superpowers skills directory.
52
+
53
+ ## Updating
54
+
55
+ ```bash
56
+ cd ~/.codex/superpowers && git pull
57
+ ```
58
+
59
+ Skills update instantly through the symlink.
60
+
61
+ ## Uninstalling
62
+
63
+ ```bash
64
+ rm ~/.agents/skills/superpowers
65
+ ```
66
+
67
+ Optionally delete the clone: `rm -rf ~/.codex/superpowers`.
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "superpowers",
3
+ "displayName": "Superpowers",
4
+ "description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques",
5
+ "version": "5.0.5",
6
+ "author": {
7
+ "name": "Jesse Vincent",
8
+ "email": "jesse@fsck.com"
9
+ },
10
+ "homepage": "https://github.com/obra/superpowers",
11
+ "repository": "https://github.com/obra/superpowers",
12
+ "license": "MIT",
13
+ "keywords": ["skills", "tdd", "debugging", "collaboration", "best-practices", "workflows"],
14
+ "skills": "./skills/",
15
+ "agents": "./agents/",
16
+ "commands": "./commands/",
17
+ "hooks": "./hooks/hooks-cursor.json"
18
+ }
package/.gitattributes ADDED
@@ -0,0 +1,18 @@
1
+ # Ensure shell scripts always have LF line endings
2
+ *.sh text eol=lf
3
+ hooks/session-start text eol=lf
4
+
5
+ # Ensure the polyglot wrapper keeps LF (it's parsed by both cmd and bash)
6
+ *.cmd text eol=lf
7
+
8
+ # Common text files
9
+ *.md text eol=lf
10
+ *.json text eol=lf
11
+ *.js text eol=lf
12
+ *.mjs text eol=lf
13
+ *.ts text eol=lf
14
+
15
+ # Explicitly mark binary files
16
+ *.png binary
17
+ *.jpg binary
18
+ *.gif binary
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: [obra]
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Something isn't working as expected
4
+ labels: bug
5
+ ---
6
+
7
+ <!--
8
+ BEFORE FILING: Search open AND closed issues. The Windows SessionStart
9
+ hook alone has been reported 29 times. If your issue already exists,
10
+ add a comment or reaction to the existing one instead.
11
+ -->
12
+
13
+ - [ ] I searched existing issues and this is not a duplicate
14
+
15
+ ## Environment
16
+
17
+ | Field | Value |
18
+ |-------|-------|
19
+ | Superpowers version | |
20
+ | Harness (Claude Code, Cursor, etc.) | |
21
+ | Harness version | |
22
+ | Model | |
23
+ | OS + shell | |
24
+
25
+ ## Is this a Superpowers issue or a platform issue?
26
+ <!-- Superpowers is a plugin. Some reported "bugs" are actually issues
27
+ in the underlying platform or model. If you're not sure, try
28
+ reproducing without Superpowers installed.
29
+
30
+ If the problem persists without Superpowers, file the issue with
31
+ your platform instead. -->
32
+
33
+ - [ ] I confirmed this issue does not occur without Superpowers installed
34
+
35
+ ## What happened?
36
+ <!-- Be specific. "It doesn't work" is not a bug report. -->
37
+
38
+ ## Steps to reproduce
39
+ 1.
40
+ 2.
41
+ 3.
42
+
43
+ ## Expected behavior
44
+ <!-- What should have happened? -->
45
+
46
+ ## Actual behavior
47
+ <!-- What happened instead? -->
48
+
49
+ ## Debug log or conversation transcript
50
+ <!-- A debug log or conversation transcript showing the issue is the
51
+ single most helpful thing you can include. Without one, we're
52
+ guessing. Screenshots of error output are also useful. -->
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions & Help
4
+ url: https://discord.gg/Jd8Vphy9jq
5
+ about: For usage questions, troubleshooting help, and general discussion, please visit our Discord instead of opening an issue.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Propose a change or addition to Superpowers
4
+ labels: enhancement
5
+ ---
6
+
7
+ <!--
8
+ BEFORE FILING: Search open AND closed issues. Many features have been
9
+ requested before — some were implemented differently, some are in
10
+ progress, and some were intentionally declined.
11
+ -->
12
+
13
+ - [ ] I searched existing issues and this has not been proposed before
14
+
15
+ ## What problem does this solve?
16
+ <!-- Describe the problem from your own experience. What were you doing,
17
+ what went wrong or was missing, and why did it matter?
18
+
19
+ "It would be cool if..." is not a problem statement. -->
20
+
21
+ ## Proposed solution
22
+ <!-- What specifically do you want to happen? Be concrete. -->
23
+
24
+ ## What alternatives did you consider?
25
+ <!-- What other approaches could solve the same problem? Why is your
26
+ proposal better? -->
27
+
28
+ ## Is this appropriate for core Superpowers?
29
+ <!-- Would this benefit someone working on a completely different kind
30
+ of project? If this is specific to your domain, workflow, or a
31
+ third-party tool, it may belong as its own plugin instead. -->
32
+
33
+ ## Context
34
+ <!-- Optional: version info, harness, model, workflow where you hit this. -->
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: IDE / Platform Support Request
3
+ about: Request support for a new IDE, editor, or AI coding tool
4
+ labels: platform-support
5
+ ---
6
+
7
+ <!--
8
+ BEFORE FILING: Search existing issues — your IDE may already be
9
+ requested or discussed.
10
+ -->
11
+
12
+ - [ ] I searched existing issues for this IDE/platform
13
+
14
+ ## Which IDE or platform?
15
+ <!-- Name and link -->
16
+
17
+ ## Does this tool have a plugin or extension system?
18
+ <!-- If yes, link to the docs. If no, explain how third-party
19
+ integrations typically work with this tool. -->
20
+
21
+ ## Have you tried manual installation?
22
+ <!-- Many tools work with Superpowers through manual setup even without
23
+ official support. Did you try? What happened? -->
@@ -0,0 +1,87 @@
1
+ <!--
2
+ BEFORE SUBMITTING: Read every word of this template. PRs that leave
3
+ sections blank, contain multiple unrelated changes, or show no evidence
4
+ of human involvement will be closed without review.
5
+ -->
6
+
7
+ ## What problem are you trying to solve?
8
+ <!-- Describe the specific problem you encountered. If this was a session
9
+ issue, include: what you were doing, what went wrong, the model's
10
+ exact failure mode, and ideally a transcript or session log.
11
+
12
+ "Improving" something is not a problem statement. What broke? What
13
+ failed? What was the user experience that motivated this? -->
14
+
15
+ ## What does this PR change?
16
+ <!-- 1-3 sentences. What, not why — the "why" belongs above. -->
17
+
18
+ ## Is this change appropriate for the core library?
19
+ <!-- Superpowers core contains general-purpose skills and infrastructure
20
+ that benefit all users. Ask yourself:
21
+
22
+ - Would this be useful to someone working on a completely different
23
+ kind of project than yours?
24
+ - Is this project-specific, team-specific, or tool-specific?
25
+ - Does this integrate or promote a third-party service?
26
+
27
+ If your change is a new skill for a specific domain, workflow tool,
28
+ or third-party integration, it belongs in its own plugin — not here.
29
+ See the plugin development docs for how to publish it separately. -->
30
+
31
+ ## What alternatives did you consider?
32
+ <!-- What other approaches did you try or evaluate before landing on this
33
+ one? Why were they worse? If you didn't consider alternatives, say so
34
+ — but know that's a red flag. -->
35
+
36
+ ## Does this PR contain multiple unrelated changes?
37
+ <!-- If yes: stop. Split it into separate PRs. Bundled PRs will be closed.
38
+ If you believe the changes are related, explain the dependency. -->
39
+
40
+ ## Existing PRs
41
+ - [ ] I have reviewed all open AND closed PRs for duplicates or prior art
42
+ - Related PRs: <!-- #number, #number, or "none found" -->
43
+
44
+ <!-- If a related closed PR exists, explain what's different about your
45
+ approach and why it should succeed where the other didn't. -->
46
+
47
+ ## Environment tested
48
+
49
+ | Harness (e.g. Claude Code, Cursor) | Harness version | Model | Model version/ID |
50
+ |-------------------------------------|-----------------|-------|------------------|
51
+ | | | | |
52
+
53
+ ## Evaluation
54
+ - What was the initial prompt you (or your human partner) used to start
55
+ the session that led to this change?
56
+ - How many eval sessions did you run AFTER making the change?
57
+ - How did outcomes change compared to before the change?
58
+
59
+ <!-- "It works" is not evaluation. Describe the before/after difference
60
+ you observed across multiple sessions. -->
61
+
62
+ ## Rigor
63
+
64
+ - [ ] If this is a skills change: I used `superpowers:writing-skills` and
65
+ completed adversarial pressure testing (paste results below)
66
+ - [ ] This change was tested adversarially, not just on the happy path
67
+ - [ ] I did not modify carefully-tuned content (Red Flags table,
68
+ rationalizations, "human partner" language) without extensive evals
69
+ showing the change is an improvement
70
+
71
+ <!-- If you changed wording in skills that shape agent behavior, show your
72
+ eval methodology and results. These are not prose — they are code. -->
73
+
74
+ ## Human review
75
+ - [ ] A human has reviewed the COMPLETE proposed diff before submission
76
+
77
+ <!--
78
+ STOP. If the checkbox above is not checked, do not submit this PR.
79
+
80
+ PRs will be closed without review if they:
81
+ - Show no evidence of human involvement
82
+ - Contain multiple unrelated changes
83
+ - Promote or integrate third-party services or tools
84
+ - Submit project-specific or personal configuration as core changes
85
+ - Leave required sections blank or use placeholder text
86
+ - Modify behavior-shaping content without eval evidence
87
+ -->
@@ -0,0 +1,83 @@
1
+ # Installing Superpowers for OpenCode
2
+
3
+ ## Prerequisites
4
+
5
+ - [OpenCode.ai](https://opencode.ai) installed
6
+
7
+ ## Installation
8
+
9
+ Add superpowers to the `plugin` array in your `opencode.json` (global or project-level):
10
+
11
+ ```json
12
+ {
13
+ "plugin": ["superpowers@git+https://github.com/obra/superpowers.git"]
14
+ }
15
+ ```
16
+
17
+ Restart OpenCode. That's it — the plugin auto-installs and registers all skills.
18
+
19
+ Verify by asking: "Tell me about your superpowers"
20
+
21
+ ## Migrating from the old symlink-based install
22
+
23
+ If you previously installed superpowers using `git clone` and symlinks, remove the old setup:
24
+
25
+ ```bash
26
+ # Remove old symlinks
27
+ rm -f ~/.config/opencode/plugins/superpowers.js
28
+ rm -rf ~/.config/opencode/skills/superpowers
29
+
30
+ # Optionally remove the cloned repo
31
+ rm -rf ~/.config/opencode/superpowers
32
+
33
+ # Remove skills.paths from opencode.json if you added one for superpowers
34
+ ```
35
+
36
+ Then follow the installation steps above.
37
+
38
+ ## Usage
39
+
40
+ Use OpenCode's native `skill` tool:
41
+
42
+ ```
43
+ use skill tool to list skills
44
+ use skill tool to load superpowers/brainstorming
45
+ ```
46
+
47
+ ## Updating
48
+
49
+ Superpowers updates automatically when you restart OpenCode.
50
+
51
+ To pin a specific version:
52
+
53
+ ```json
54
+ {
55
+ "plugin": ["superpowers@git+https://github.com/obra/superpowers.git#v5.0.3"]
56
+ }
57
+ ```
58
+
59
+ ## Troubleshooting
60
+
61
+ ### Plugin not loading
62
+
63
+ 1. Check logs: `opencode run --print-logs "hello" 2>&1 | grep -i superpowers`
64
+ 2. Verify the plugin line in your `opencode.json`
65
+ 3. Make sure you're running a recent version of OpenCode
66
+
67
+ ### Skills not found
68
+
69
+ 1. Use `skill` tool to list what's discovered
70
+ 2. Check that the plugin is loading (see above)
71
+
72
+ ### Tool mapping
73
+
74
+ When skills reference Claude Code tools:
75
+ - `TodoWrite` → `todowrite`
76
+ - `Task` with subagents → `@mention` syntax
77
+ - `Skill` tool → OpenCode's native `skill` tool
78
+ - File operations → your native tools
79
+
80
+ ## Getting Help
81
+
82
+ - Report issues: https://github.com/obra/superpowers/issues
83
+ - Full documentation: https://github.com/obra/superpowers/blob/main/docs/README.opencode.md
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Superpowers plugin for OpenCode.ai
3
+ *
4
+ * Injects superpowers bootstrap context via system prompt transform.
5
+ * Auto-registers skills directory via config hook (no symlinks needed).
6
+ */
7
+
8
+ import path from 'path';
9
+ import fs from 'fs';
10
+ import os from 'os';
11
+ import { fileURLToPath } from 'url';
12
+
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+
15
+ // Simple frontmatter extraction (avoid dependency on skills-core for bootstrap)
16
+ const extractAndStripFrontmatter = (content) => {
17
+ const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
18
+ if (!match) return { frontmatter: {}, content };
19
+
20
+ const frontmatterStr = match[1];
21
+ const body = match[2];
22
+ const frontmatter = {};
23
+
24
+ for (const line of frontmatterStr.split('\n')) {
25
+ const colonIdx = line.indexOf(':');
26
+ if (colonIdx > 0) {
27
+ const key = line.slice(0, colonIdx).trim();
28
+ const value = line.slice(colonIdx + 1).trim().replace(/^["']|["']$/g, '');
29
+ frontmatter[key] = value;
30
+ }
31
+ }
32
+
33
+ return { frontmatter, content: body };
34
+ };
35
+
36
+ // Normalize a path: trim whitespace, expand ~, resolve to absolute
37
+ const normalizePath = (p, homeDir) => {
38
+ if (!p || typeof p !== 'string') return null;
39
+ let normalized = p.trim();
40
+ if (!normalized) return null;
41
+ if (normalized.startsWith('~/')) {
42
+ normalized = path.join(homeDir, normalized.slice(2));
43
+ } else if (normalized === '~') {
44
+ normalized = homeDir;
45
+ }
46
+ return path.resolve(normalized);
47
+ };
48
+
49
+ export const SuperpowersPlugin = async ({ client, directory }) => {
50
+ const homeDir = os.homedir();
51
+ const superpowersSkillsDir = path.resolve(__dirname, '../../skills');
52
+ const envConfigDir = normalizePath(process.env.OPENCODE_CONFIG_DIR, homeDir);
53
+ const configDir = envConfigDir || path.join(homeDir, '.config/opencode');
54
+
55
+ // Helper to generate bootstrap content
56
+ const getBootstrapContent = () => {
57
+ // Try to load using-superpowers skill
58
+ const skillPath = path.join(superpowersSkillsDir, 'using-superpowers', 'SKILL.md');
59
+ if (!fs.existsSync(skillPath)) return null;
60
+
61
+ const fullContent = fs.readFileSync(skillPath, 'utf8');
62
+ const { content } = extractAndStripFrontmatter(fullContent);
63
+
64
+ const toolMapping = `**Tool Mapping for OpenCode:**
65
+ When skills reference tools you don't have, substitute OpenCode equivalents:
66
+ - \`TodoWrite\` → \`todowrite\`
67
+ - \`Task\` tool with subagents → Use OpenCode's subagent system (@mention)
68
+ - \`Skill\` tool → OpenCode's native \`skill\` tool
69
+ - \`Read\`, \`Write\`, \`Edit\`, \`Bash\` → Your native tools
70
+
71
+ **Skills location:**
72
+ Superpowers skills are in \`${configDir}/skills/superpowers/\`
73
+ Use OpenCode's native \`skill\` tool to list and load skills.`;
74
+
75
+ return `<EXTREMELY_IMPORTANT>
76
+ You have superpowers.
77
+
78
+ **IMPORTANT: The using-superpowers skill content is included below. It is ALREADY LOADED - you are currently following it. Do NOT use the skill tool to load "using-superpowers" again - that would be redundant.**
79
+
80
+ ${content}
81
+
82
+ ${toolMapping}
83
+ </EXTREMELY_IMPORTANT>`;
84
+ };
85
+
86
+ return {
87
+ // Inject skills path into live config so OpenCode discovers superpowers skills
88
+ // without requiring manual symlinks or config file edits.
89
+ // This works because Config.get() returns a cached singleton — modifications
90
+ // here are visible when skills are lazily discovered later.
91
+ config: async (config) => {
92
+ config.skills = config.skills || {};
93
+ config.skills.paths = config.skills.paths || [];
94
+ if (!config.skills.paths.includes(superpowersSkillsDir)) {
95
+ config.skills.paths.push(superpowersSkillsDir);
96
+ }
97
+ },
98
+
99
+ // Use system prompt transform to inject bootstrap (fixes #226 agent reset bug)
100
+ 'experimental.chat.system.transform': async (_input, output) => {
101
+ const bootstrap = getBootstrapContent();
102
+ if (bootstrap) {
103
+ (output.system ||= []).push(bootstrap);
104
+ }
105
+ }
106
+ };
107
+ };
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## [5.0.5] - 2026-03-17
4
+
5
+ ### Fixed
6
+
7
+ - **Brainstorm server ESM fix**: Renamed `server.js` → `server.cjs` so the brainstorming server starts correctly on Node.js 22+ where the root `package.json` `"type": "module"` caused `require()` to fail. ([PR #784](https://github.com/obra/superpowers/pull/784) by @sarbojitrana, fixes [#774](https://github.com/obra/superpowers/issues/774), [#780](https://github.com/obra/superpowers/issues/780), [#783](https://github.com/obra/superpowers/issues/783))
8
+ - **Brainstorm owner-PID on Windows**: Skip `BRAINSTORM_OWNER_PID` lifecycle monitoring on Windows/MSYS2 where the PID namespace is invisible to Node.js. Prevents the server from self-terminating after 60 seconds. The 30-minute idle timeout remains as the safety net. ([#770](https://github.com/obra/superpowers/issues/770), docs from [PR #768](https://github.com/obra/superpowers/pull/768) by @lucasyhzhu-debug)
9
+ - **stop-server.sh reliability**: Verify the server process actually died before reporting success. Waits up to 2 seconds for graceful shutdown, escalates to `SIGKILL`, and reports failure if the process survives. ([#723](https://github.com/obra/superpowers/issues/723))
10
+
11
+ ### Changed
12
+
13
+ - **Execution handoff**: Restore user choice between subagent-driven-development and executing-plans after plan writing. Subagent-driven is recommended but no longer mandatory. (Reverts `5e51c3e`)