An evergreen guide for adding support for a new harness (IDE, CLI, or agent runner). Teaches the invariants — automatic session-start bootstrap, skill discovery/invocation, tool mapping, the acceptance test — and points at the closest reference integration shape (shell-hook, in-process plugin, instructions-file / declared context file) to copy. Covers discovery, build, local install, tmux-driven verification, distribution, and PR submission, with a live reference-integration index and a gotchas appendix. Two non-negotiable rules: (1) never edit skill bodies; (2) everything ships through the harness's own install mechanism — never edit the user's config. When a plugin installer strips undeclared files, declare the bootstrap as a recognized component (a manifest contextFileName-style context file the installer preserves and the harness loads every session), generated at install time from the live SKILL.md + tool mapping. Surfaced-skill-description bootstrap is the softer fallback. Hardened against real end-to-end ports (Antigravity CLI): shapes can compose; a fork doesn't inherit its parent's behavior; a hook system != a usable session-start event; verify @-includes AND context-file preservation with a marker; web-search the docs and study existing plugins; reverse-engineer undocumented harnesses; print/headless modes may hang; workspace-trust gates stall tmux; declared context files survive plugin install while undeclared files are stripped; skills-path registration is per-harness.
Superpowers for OpenCode
Complete guide for using Superpowers with OpenCode.ai.
Installation
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"
OpenCode uses its own plugin install. If you also use Claude Code, Codex, or another harness, install Superpowers separately for each one.
Migrating from the old symlink-based install
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.
Usage
Finding Skills
Use OpenCode's native skill tool to list all available skills:
use skill tool to list skills
Loading a Skill
use skill tool to load brainstorming
Personal Skills
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]
Project Skills
Create project-specific skills in .opencode/skills/ within your project.
Skill Priority: Project skills > Personal skills > Superpowers skills
Updating
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"]
}
How It Works
The plugin does two things:
- Injects bootstrap context via the
experimental.chat.messages.transformhook, adding superpowers awareness to every conversation. - Registers the skills directory via the
confighook, so OpenCode discovers all superpowers skills without symlinks or manual config.
Tool Mapping
Skills speak in actions rather than naming any one runtime's tools. On OpenCode these resolve to:
- "Create a todo" / "mark complete in todo list" →
todowrite Subagent (general-purpose):template → OpenCode'stasktool withsubagent_type: "general"(or"explore"for codebase exploration)- "Invoke a skill" → OpenCode's native
skilltool - "Read a file" →
read - "Create a file" / "edit a file" / "delete a file" →
apply_patch - "Run a shell command" →
bash - "Search file contents" / "find files by name" →
grep,glob - "Fetch a URL" →
webfetch
(Verified against the installed OpenCode CLI's tool inventory.)
Troubleshooting
Plugin not loading
- Check OpenCode logs:
opencode run --print-logs "hello" 2>&1 | grep -i superpowers - Verify the plugin line in your
opencode.jsonis correct - Make sure you're running a recent version of OpenCode
Windows install issues
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"]
}
Skills not found
- Use OpenCode's
skilltool to list available skills - Check that the plugin is loading (see above)
- Each skill needs a
SKILL.mdfile with valid YAML frontmatter
Bootstrap not appearing
- Check OpenCode version supports
experimental.chat.messages.transformhook - Restart OpenCode after config changes
Getting Help
- Report issues: https://github.com/obra/superpowers/issues
- Main documentation: https://github.com/obra/superpowers
- OpenCode docs: https://opencode.ai/docs/