← MCP server and skill grades

superpowers

obra/superpowers

A
Type
Plugin
Scanned
Oct 29, 2026
Version
2ce8aa15d05b
Files read
227

Superpowers is a multi-harness plugin and skills library that guides AI coding agents through structured workflows for brainstorming, planning, test-driven development, subagent delegation, code review, and debugging. The primary risk is that its workflows instruct the agent to run project setup, build, and test commands and to execute multi-task implementation plans autonomously without pausing between tasks.

What it can reach

Files
Reads and writes project files, creates git worktrees under .worktrees/, stores plan and brainstorming state under .superpowers/ or /tmp, and reads local agent session transcripts (such as ~/.claude/projects and ~/.codex/sessions) when the diagnosing-superpowers skill is invoked.
Shell commands
Executes session-start hooks, workspace and git helper scripts, Graphviz diagram rendering (dot), and instructs the coding agent to run project dependency installation (npm install, pip install, cargo build, go mod download) and test suites.
Network
Starts a local HTTP and WebSocket server (bound to 127.0.0.1 by default) for the optional brainstorming visual companion, loads a versioned branding image from primeradiant.com unless telemetry is disabled, and can query or file issues on GitHub when diagnosing sessions.
Browser
Can automatically open the user's default web browser to display the local brainstorming visual companion when started with --open.

Findings

2 low1 info
  1. LowPredictable /tmp directory name when --project-dir is omitted

    skills/brainstorming/scripts/start-server.sh:123

    When start-server.sh is invoked without --project-dir, it constructs a predictable directory path in /tmp using the process ID and current timestamp ($$-$(date +%s)) and creates it with mkdir -p rather than mktemp -d. On a shared multi-user system, another local user could pre-create the directory before mkdir -p runs to access session state or plant files.

    Fix: Use mktemp -d "${TMPDIR:-/tmp}/brainstorm.XXXXXX" when creating temporary session directories in /tmp.

  2. LowDouble-quoted URL passed to shell in BRAINSTORM_OPEN_CMD

    skills/brainstorming/scripts/server.cjs:92

    When the optional BRAINSTORM_OPEN_CMD environment variable is set, the server passes JSON.stringify(url) to child_process.exec(). Because JSON.stringify wraps the string in double quotes, POSIX shells will still evaluate $(...) or backtick expressions if an untrusted value is passed via --url-host.

    Fix: Pass the URL as a positional argument to sh -c (for example, execFile('sh', ['-c', process.env.BRAINSTORM_OPEN_CMD + ' "$1"', 'open', url])) or escape single quotes instead of relying on JSON.stringify.

  3. InfoOutbound version telemetry via remote logo image in visual companion

    skills/brainstorming/scripts/server.cjs:106

    By default, the optional brainstorming visual companion embeds an external logo image from primeradiant.com with the Superpowers version in the query string (?v=...). Although documented in the README and sent with referrerpolicy="no-referrer", this causes the user's browser to make an outbound request when viewing local mockups unless SUPERPOWERS_DISABLE_TELEMETRY or DISABLE_TELEMETRY is set.

    Fix: Set SUPERPOWERS_DISABLE_TELEMETRY=1 in environments where external network requests are undesirable, or make the remote logo opt-in.