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.
- package/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +13 -0
- package/.codex/INSTALL.md +67 -0
- package/.cursor-plugin/plugin.json +18 -0
- package/.gitattributes +18 -0
- package/.github/FUNDING.yml +3 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
- package/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +87 -0
- package/.opencode/INSTALL.md +83 -0
- package/.opencode/plugins/superpowers.js +107 -0
- package/CHANGELOG.md +13 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/GEMINI.md +2 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/RELEASE-NOTES.md +1057 -0
- package/agents/code-reviewer.md +48 -0
- package/commands/brainstorm.md +5 -0
- package/commands/execute-plan.md +5 -0
- package/commands/write-plan.md +5 -0
- package/docs/README.codex.md +126 -0
- package/docs/README.opencode.md +130 -0
- package/docs/plans/2025-11-22-opencode-support-design.md +294 -0
- package/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
- package/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
- package/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
- package/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
- package/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
- package/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
- package/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
- package/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
- package/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
- package/docs/testing.md +303 -0
- package/docs/windows/polyglot-hooks.md +212 -0
- package/gemini-extension.json +6 -0
- package/hooks/hooks-cursor.json +10 -0
- package/hooks/hooks.json +16 -0
- package/hooks/run-hook.cmd +46 -0
- package/hooks/session-start +57 -0
- package/package.json +5 -0
- package/skills/brainstorming/SKILL.md +164 -0
- package/skills/brainstorming/scripts/frame-template.html +214 -0
- package/skills/brainstorming/scripts/helper.js +88 -0
- package/skills/brainstorming/scripts/server.cjs +338 -0
- package/skills/brainstorming/scripts/start-server.sh +153 -0
- package/skills/brainstorming/scripts/stop-server.sh +55 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +286 -0
- package/skills/dispatching-parallel-agents/SKILL.md +182 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/receiving-code-review/SKILL.md +213 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +146 -0
- package/skills/subagent-driven-development/SKILL.md +277 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +113 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/test-driven-development/SKILL.md +371 -0
- package/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/using-git-worktrees/SKILL.md +218 -0
- package/skills/using-superpowers/SKILL.md +115 -0
- package/skills/using-superpowers/references/codex-tools.md +25 -0
- package/skills/using-superpowers/references/gemini-tools.md +33 -0
- package/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/writing-plans/SKILL.md +145 -0
- package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/writing-skills/SKILL.md +655 -0
- package/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/writing-skills/persuasion-principles.md +187 -0
- package/skills/writing-skills/render-graphs.js +168 -0
- package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/tests/brainstorm-server/package-lock.json +36 -0
- package/tests/brainstorm-server/package.json +10 -0
- package/tests/brainstorm-server/server.test.js +424 -0
- package/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
- package/tests/brainstorm-server/ws-protocol.test.js +392 -0
- package/tests/claude-code/README.md +158 -0
- package/tests/claude-code/analyze-token-usage.py +168 -0
- package/tests/claude-code/run-skill-tests.sh +187 -0
- package/tests/claude-code/test-document-review-system.sh +177 -0
- package/tests/claude-code/test-helpers.sh +202 -0
- package/tests/claude-code/test-subagent-driven-development-integration.sh +314 -0
- package/tests/claude-code/test-subagent-driven-development.sh +165 -0
- package/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
- package/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
- package/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
- package/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
- package/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
- package/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
- package/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
- package/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
- package/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
- package/tests/explicit-skill-requests/run-all.sh +70 -0
- package/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
- package/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
- package/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
- package/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
- package/tests/explicit-skill-requests/run-test.sh +136 -0
- package/tests/opencode/run-tests.sh +163 -0
- package/tests/opencode/setup.sh +73 -0
- package/tests/opencode/test-plugin-loading.sh +72 -0
- package/tests/opencode/test-priority.sh +198 -0
- package/tests/opencode/test-tools.sh +104 -0
- package/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
- package/tests/skill-triggering/prompts/executing-plans.txt +1 -0
- package/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
- package/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
- package/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
- package/tests/skill-triggering/prompts/writing-plans.txt +10 -0
- package/tests/skill-triggering/run-all.sh +60 -0
- package/tests/skill-triggering/run-test.sh +88 -0
- package/tests/subagent-driven-dev/go-fractals/design.md +81 -0
- package/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
- package/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
- package/tests/subagent-driven-dev/run-test.sh +106 -0
- package/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
- package/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
- 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,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,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`)
|