Complete guide for using Superpowers with OpenCode.ai.
Installation differs between OpenCode V1 (opencode) and V2 (opencode2).
Install Superpowers separately for each version if you use both.
opencode)Add superpowers to the plugin array in your opencode.json (global or project-level):
{
"plugin": ["superpowers@git+https://github.com/obra/superpowers.git"]
}
Restart OpenCode. The plugin installs through OpenCode's plugin manager and registers all skills.
Verify by asking: "Tell me about your superpowers"
opencode2)V2 does not support git+https:// plugin installation. Use a local clone with
a path reference instead.
Clone the repository:
git clone https://github.com/obra/superpowers.git ~/superpowers
Add the plugin using the plugin field (singular) with an absolute path:
{
"$schema": "https://opencode.ai/config.json",
"plugin": [
"/home/your-username/superpowers/.opencode/plugins/superpowers.js"
]
}
Note: V2 does not expand
~in local plugin paths. Use an absolute path or a relative path (./or../) resolved from the config file directory.
Restart and verify:
opencode2 service restart
Ask: "Tell me about your superpowers"
V1 (opencode) and V2 (opencode2) share the same default config directory
(~/.config/opencode/). Since V2 normalizes V1's plugin field into its own
loading pipeline, putting a git+https:// spec (which V2 cannot install) in
the shared config causes V2 to silently fail loading it.
To use different plugin sources for each version, point V2 at a separate
config directory via the OPENCODE_CONFIG_DIR environment variable:
# In ~/.bashrc (or equivalent shell config)
export OPENCODE_CONFIG_DIR="$HOME/.config/opencode2"
Then maintain two config files:
~/.config/opencode/opencode.json — V1 config, using git+https:// sources~/.config/opencode2/opencode.json — V2 config, using local path sourcesBoth versions can now run independently without interfering with each other.
If you previously installed superpowers using git clone and symlinks, remove the old setup:
# Remove old symlinks
rm -f ~/.config/opencode/plugins/superpowers.js
rm -rf ~/.config/opencode/skills/superpowers
# Optionally remove the cloned repo
rm -rf ~/.config/opencode/superpowers
# Remove skills.paths from opencode.json if you added one for superpowers
Then follow the installation steps above.
Use OpenCode's native skill tool to list all available skills:
use skill tool to list skills
use skill tool to load brainstorming
Create your own skills in ~/.config/opencode/skills/:
mkdir -p ~/.config/opencode/skills/my-skill
Create ~/.config/opencode/skills/my-skill/SKILL.md:
---
name: my-skill
description: Use when [condition] - [what it does]
---
# My Skill
[Your skill content here]
Create project-specific skills in .opencode/skills/ within your project.
Skill Priority: Project skills > Personal skills > Superpowers skills
opencode)OpenCode installs Superpowers through a git-backed package spec. Some OpenCode and Bun versions pin that resolved git dependency in a lockfile or cache, so a restart may not pick up the newest Superpowers commit. If updates do not appear, clear OpenCode's package cache or reinstall the plugin.
To pin a specific version, use a branch or tag:
{
"plugin": ["superpowers@git+https://github.com/obra/superpowers.git#v5.0.3"]
}
opencode2)cd ~/superpowers && git pull
opencode2 service restart
The plugin does two things:
config hook, injecting into config.skills.pathssetup() function using ctx.skill.transform() (V2 native API, confirmed active at runtime)experimental.chat.messages.transform hookctx.session.hook("context") — the V2 equivalent (confirmed active at runtime)Skills speak in actions rather than naming any one runtime's tools. On OpenCode these resolve to:
todowriteSubagent (general-purpose): template → OpenCode's task tool with subagent_type: "general" (or "explore" for codebase exploration)skill toolreadapply_patchbashgrep, globwebfetch(Verified against the installed OpenCode CLI's tool inventory.)
V1: Check OpenCode logs:
opencode run --print-logs "hello" 2>&1 | grep -i superpowers
V2: Check the server log:
opencode2 service status
Then inspect ~/.local/share/opencode/log/opencode.log, filtering for role=server.
Also verify the plugin path in your opencode.json is correct and that you're
running a recent version of OpenCode.
Some Windows OpenCode builds have upstream installer issues with git-backed
plugin specs, including cache paths for git+https URLs and Bun not finding
git.exe even when it works in a normal terminal. If OpenCode cannot install
the plugin, try installing with system npm and pointing OpenCode at the local
package:
npm install superpowers@git+https://github.com/obra/superpowers.git --prefix "$HOME\.config\opencode"
Then use the installed package path in opencode.json:
{
"plugin": ["~/.config/opencode/node_modules/superpowers"]
}
skill tool to list available skillsSKILL.md file with valid YAML frontmatterexperimental.chat.messages.transform hook. Restart OpenCode after config changes.ctx.session.hook("context") for bootstrap injection. Verify the plugin loaded via opencode2 api get /api/plugin. Restart with opencode2 service restart after config changes.