brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
1How It Works & Mechanism
The core mechanism is a prompt-orchestrated 'three-path router + human approval gate': before implementation, requests are classified by scope into Spike, Bounded, or Architectural. Regardless of the path, the agent is strictly required to state its intent to the user and obtain approval before writing code—without host-level code enforcement, relying entirely on the model following instructions.
<HARD-GATE> Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have told your human partner what you intend and they have approved it. This applies to EVERY task on EVERY path below — the ceremony scales with the task; the approval gate never does. </HARD-GATE>
Classification acts as the workflow scheduler: Spike only probes feasibility and reports findings (retaining no code); Bounded is restricted to 'small changes within an existing readable flow in the repo,' stopping after providing a brief design in chat; Architectural (new projects, new subsystems, modifying interfaces) undergoes the full process leading to a written spec. Hidden complexity upgrades the path mid-flight via a one-way ratchet that cannot be downgraded.
When in doubt between two paths, take the heavier one. The ratchet is one-way: hidden complexity discovered mid-task upgrades the path — stop, say so, and step up. Nothing downgrades mid-task.
The endpoint of the Architectural path is handoff rather than implementation: after a self-review of the spec, it is submitted for user review; once approved, the only permitted next skill to invoke is writing-plans. The design document is written to docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md and committed to git.
**Terminal states are path-bound.** Architectural: the ONLY skill you invoke after brainstorming is writing-plans — never frontend-design, mcp-builder, or any other implementation skill.
The sole executable asset is the optional 'Visual Companion': a custom Node HTTP+WebSocket server with zero third-party dependencies that monitors the content directory, pushes the latest HTML screen to the user's browser, and writes user clicks/selections back to state/events files via WS for the agent to read in subsequent turns, forming an inspect-click-feedback loop.
function handleMessage(text) { let event; try { event = JSON.parse(text); } catch (e) { ... } touchActivity(); console.log(JSON.stringify({ source: 'user-event', ...event })); if (event && event.choice) { const eventsFile = path.join(STATE_DIR, 'events'); fs.appendFileSync(eventsFile, JSON.stringify(event) + '\n'); } }
The triggering discipline for the Companion is 'just-in-time offering, decided per question': pushing it at the start is forbidden; it is proposed in a standalone message only when a question is genuinely 'clearer when seen than read', and the server is not started until the user accepts; even after acceptance, whether to use the browser or terminal is evaluated per question depending on whether the content is visual or text.
**Offering the companion (just-in-time):** Do NOT offer it upfront. Wait until a question would genuinely be clearer shown than told — a real mockup / layout / diagram question, not merely a UI *topic*.
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| cli | node |
| cli | bash |
| cli | open / rundll32.exe / xdg-open(平台浏览器启动器) |
| cli | git(agent 提交设计文档) |
| network | primeradiant.com 品牌 logo 图(浏览器侧加载,telemetry 未禁用时) |
| network | github.com/obra/superpowers(品牌链接,页面展示用) |
| network | 本地回路 http://localhost:<port> + ws://localhost(Companion 服务,非外发) |
| package | 同仓 skill:writing-plans、elements-of-style:writing-clearly-and-concisely(prompt 级引用) |
4Recommended Governance & Evidence
- scripts/: Execute local scripts or commands: scripts/start-server.sh (bash; starts local Node server, writes PID/port/token files, can kill previous instances)
- 网络端点: Declared external network access: user browser loads https://primeradiant.com/brand/superpowers-visual-brainstorming-log
- 本地工作目录: File read/write and artifact output: agent (per skill instructions) writes screen_dir/*.html screen content; writes docs/superpowers/specs/YYYY-MM-
5Second-Pass Verification
- [ok] 外发端点仅 primeradiant.com + github.com — 全目录 grep https?://|ws://|fetch 复查:仅 server.cjs:106(logo URL)与 251(github 链接);helper.js/frame-template.html 零外链;server.cjs 无任何 http.request/fetch(只有 createServer)
- [ok] 零第三方依赖声明 — server.cjs require 清单仅 crypto/http/fs/path/os/child_process 六个内置模块;scripts/ 下无 package.json,无 npm 安装步骤
- [ok] 点击事件回写 state/events — handleMessage 中 fs.appendFileSync(eventsFile, JSON.stringify(event) + '\n') 与 visual-companion.md 描述一致;新屏出现时事件文件被清空(startServer 中 knownFiles 分支 unlinkSync)
- [ok] token 门控与跨站防护 — isAuthorized 用 timingSafeEqualStr 比对 ?key= 或 cookie;isAllowedWebSocketOrigin 强制 origin===http://host;安全头齐全(X-Frame-Options DENY/CORP same-origin/no-referrer);/files/ 经 path.basename + lstat 非符号链接 + nlink===1 + realpath 前缀三重校验
- [discrepancy] spec-document-reviewer-prompt.md 在 SKILL.md 中被引用(第一遍初始印象) — 出入:本 pin 的 SKILL.md 未引用该文件——Spec Self-Review 已内联化为 4 步清单("Fix any issues inline. No need to re-review")。文件存在但处于未接线状态;RELEASE-NOTES.md:547 描述的是早前文档审查系统(docs/superpowers/plans/2026-01-22-document-review-system.md),该设计已不被当前 SKILL.md 采用。internal_assets 已按『存在但未接线』修正
- [ok] telemetry 语义 — 代码中 SUPERPOWERS_TELEMETRY_DISABLED 只控制 brandMarkup 是否渲染 primeradiant.com logo <img> 与文案前缀,无任何事件上报代码路径;三枚禁用环境变量实读存在(server.cjs:107-110)
- [ok] 功能声明 vs 实际能力相符度 — description『Explores user intent, requirements and design before implementation』与实现相符,但注意:MUST 级前置声明("You MUST use this before any creative work")与 HARD-GATE 均为纯 prompt 约束,无宿主级强制机制——是否生效取决于宿主加载与模型遵从,属能力边界而非缺陷
6Verdict & Scenarios
217df8a1906bc3fc…