ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

superpowers协议:让IDE具备条件反射式AI智能的开发范式

2026/9/15 3:15:29 拓冰建站 浏览量
superpowers协议:让IDE具备条件反射式AI智能的开发范式 1. 项目概述这不是一个工具而是一套“开发者认知增强系统”你最近在技术社区、GitHub Trending 或 Discord 开发者频道里反复刷到superpowers这个词——它不像 React 或 Docker 那样有明确的安装包、官网首页或 GitHub star 数却总和Claude Code、Antigravity、Codex CLI、Cursor这些名字绑在一起出现。有人在问“superpowers 怎么开”有人贴出报错unable to locate the codex cli binary or required runtime components还有人截图说“Cursor 设置里多了一个 Superpowers 开关但点了没反应”。这背后没有神秘组织也没有黑箱 API而是一场正在发生的、静默却深刻的开发范式迁移把大模型能力从“对话窗口”里解放出来嵌入到编辑器每一行代码的上下文里让 IDE 本身获得“超能力”。简单说superpowers 是一套可插拔的智能增强协议层它不替代任何编辑器而是为支持它的 IDE如 Cursor、Antigravity、VS Code 的 Claude Code 插件提供统一的能力注册与调用标准。它定义了“当用户光标停在函数名上时该触发什么分析”、“当右键选择‘重构这段逻辑’时该传哪些 AST 节点给模型”、“当保存文件前该自动检查哪些潜在漏洞模式”——这些不是功能菜单里的按钮而是编辑器内建的、无需手动唤起的“条件反射式智能”。我从去年底开始在三个主力项目中实测这套机制一个用 TypeScript 写的微服务网关、一个 Rust 编写的 CLI 工具、还有一个 Python 数据清洗 pipeline。最直观的感受是写代码的节奏变了——从“写完 → 手动 lint → 手动测试 → 手动查文档 → 手动改”变成了“写到一半IDE 已经把下一行可能的参数类型、潜在的空指针路径、甚至隔壁模块刚提交的兼容性变更提示以淡灰色注释形式浮现在你光标下方”。这不是科幻是基于 LSPLanguage Server Protocol扩展、AST 解析、本地模型调度与上下文向量化的一整套工程实践。它解决的不是“怎么让 AI 写代码”而是“怎么让 AI 成为开发者思维的自然延伸”。适合两类人一是每天被重复性调试、文档查找、边界条件补全折磨的中高级工程师二是想跳过“先学 prompt 再学编程”的新手——他们不需要记住claude: suggest refactoring for this function这类指令因为 superpowers 已经把意图映射成编辑器原生动作。接下来我会完全抛开营销话术只讲清楚它到底是什么、为什么必须用这套协议而不是直接调 API、怎么在真实项目里让它稳定跑起来以及那些官方文档绝不会写的、踩坑后才懂的硬核细节。2. 核心设计逻辑为什么需要 superpowers 协议而不是直接集成模型2.1 传统 AI 编程插件的三大死穴在 superpowers 出现前主流方案是“模型直连型”VS Code 安装一个 Claude Code 插件点击按钮就弹出聊天窗或者用 Copilot输入// TODO: parse JSON with error handling就生成代码块。这类方案在实际工程中暴露出三个无法绕过的瓶颈上下文割裂Copilot 生成的代码块常忽略当前文件的 import 规则、团队约定的错误处理模板、甚至变量命名风格。我试过让它补全一个 Go 的 HTTP handler它生成了log.Fatal()—— 而我们项目规范要求所有错误必须返回http.Error()并记录 structured log。模型根本不知道这个约束因为它只看到光标附近几十行看不到./internal/logging/目录下的全局 logger 初始化逻辑。响应不可控CtrlEnter唤起的补全本质是把当前选中文本 光标位置作为 prompt 发给远端 API。网络延迟、token 截断、模型随机性导致同一段代码连续按三次得到三个不同结果。有一次我让模型“给这个数组去重”第一次返回[...new Set(arr)]第二次返回arr.filter((v, i) arr.indexOf(v) i)第三次居然返回_.uniq(arr)—— 而项目里根本没引入 lodash。这不是模型不好是调用方式没绑定工程约束。能力无法沉淀你花一小时调教出一个精准的 prompt“请根据 JSDoc 注释生成 TypeScript 类型定义忽略 deprecated 标记使用 interface 而非 type”这个 prompt 只存在于你的聊天记录里。下次同事打开同一文件得重新描述需求。更糟的是它无法和 ESLint 规则联动——比如当模型生成的类型定义违反了typescript-eslint/no-explicit-any插件不会报错因为 lint 和 AI 是两条平行线。superpowers 的设计哲学就是把“AI 能力”变成像 ESLint 或 Prettier 那样的可配置、可验证、可复用的开发基础设施。它不追求“生成更多代码”而是确保“每次生成都符合工程契约”。2.2 superpowers 协议的三层架构从编辑器到模型的可信管道superpowers 不是一个二进制程序而是一组明确定义的接口规范分为三个协作层Editor Adapter 层编辑器适配器这是你安装的 Cursor 插件、Antigravity 内置模块或 VS Code 的 Claude Code 扩展。它的唯一职责是监听编辑器事件光标移动、文件保存、右键菜单触发将原始事件转换为 superpowers 协议要求的标准化 payload。例如当用户在 TypeScript 文件中把光标停在函数名getUserById上时Adapter 不会直接调用模型而是构造一个 JSON 对象{ event: hover, language: typescript, position: { line: 42, character: 15 }, document_uri: file:///home/user/project/src/api/user.ts, context: { function_signature: function getUserById(id: string): PromiseUser, import_statements: [import { User } from ../types;], project_config: { tsconfig_path: ./tsconfig.json } } }注意context字段不是简单截取文本而是由编辑器语言服务如 TypeScript Language Server解析 AST 后提取的结构化信息。这保证了模型收到的不是“乱码字符串”而是带语义的代码元数据。Runtime Layer运行时层这是 superpowers 的心脏通常以本地进程形式存在如codex-cli。它接收 Adapter 发来的标准化事件根据内置规则引擎决定调用哪个 Skill技能。Skill 不是 prompt 模板而是可执行的代码单元——可以是 Python 脚本调用本地 Ollama 模型也可以是 Shell 命令调用curl请求企业私有 API甚至是一个 Rust 编写的轻量级推理器。关键在于每个 Skill 必须声明其输入 schema 和输出 schema。例如type-inference-skill的输入必须包含function_signature字段输出必须是{type: string, confidence: 0.92}格式。Runtime 层强制校验拒绝任何 schema 不匹配的 Skill。Skill Registry技能注册中心这才是真正体现“超能力”的地方。Skill 是独立发布的 npm 包或 GitHub repo例如superpowers/ts-type-checker基于 TypeScript Compiler API 实时校验类型兼容性比 tsc 快 3 倍因只检查变更部分superpowers/sql-injection-detector静态扫描 SQL 字符串拼接识别query SELECT * FROM users WHERE id req.params.id这类危险模式superpowers/legacy-code-translator将 Java 8 的Stream.collect(Collectors.toList())自动转为 Java 17 的stream.toList()这些 Skill 可以被任意支持 superpowers 的编辑器加载。你不用在 Cursor 里装一个在 VS Code 里再装一个——只要编辑器实现了 Adapter就能共享整个 Skill 生态。这解决了传统插件生态碎片化的问题。提示很多人混淆Codex CLI和superpowers。Codex CLI 是 Antigravity 团队开源的、符合 superpowers 协议的 Reference Runtime 实现就像webpack是模块打包协议的实现。你可以用 Codex CLI也可以用自己用 Rust 写的my-superpowers-runtime只要它遵循同一套事件格式和 Skill 接口。2.3 为什么必须用协议而不是封装 SDK有人会问既然目标是调用模型为什么不直接在编辑器里写个 SDK封装好 API 调用、错误重试、token 管理答案是工程复杂度不在“调用模型”而在“理解代码”和“控制输出”。理解代码模型 API 接收纯文本但编辑器需要知道“这里是个 class 的 constructor参数config的类型定义在第 12 行的 interface 里”。这需要 AST 解析、符号表构建、跨文件引用追踪——这些是语言服务器LSP的领域不是模型 SDK 的责任。superpowers 协议强制 Adapter 层做这件事把结构化上下文交给 Runtime避免模型在 prompt 里堆砌冗余代码片段。控制输出一个 Skill 的输出必须能被编辑器直接消费。比如refactor-skill的输出不能是“建议把这段代码改成这样...”而必须是{ edits: [ { range: { start: { line: 5, character: 0 }, end: { line: 8, character: 0 } }, newText: const result await fetch(...); } ], metadata: { applied_rule: fetch-to-async-await } }编辑器拿到这个直接执行文本替换无需二次解析。如果用 SDK 直连模型返回自由文本编辑器就得写 NLP 模块去提取修改范围——这违背了“专注核心能力”的工程原则。安全隔离协议层天然形成沙箱。Skill 运行在独立进程中编辑器只通过 stdin/stdout 通信。即使某个 Skill比如调用公网 API 的崩溃或被注入恶意代码也不会导致编辑器主进程卡死。我在线上环境部署时曾把sql-injection-detectorSkill 的超时设为 200ms一旦超时Runtime 层直接 kill 进程并返回{error: timeout}编辑器 UI 仅显示“检测超时”而非整个 IDE 假死。3. 实操落地从零搭建一个稳定可用的 superpowers 环境3.1 环境准备避开那些“官网教程不会提”的依赖陷阱superpowers 的实操难点不在概念而在环境链路的脆弱性。我统计了过去三个月社区里 87% 的报错根源都在这三步Node.js 版本必须严格匹配Codex CLI 官方要求 Node.js 18.x但实际测试发现只有 v18.18.2 及以上版本能稳定加载 Skill 的 WASM 模块。我用 v18.17.0 时superpowers/rust-analyzerSkill 总是报WebAssembly.instantiate(): Import #0 moduleenv error: module is not an object or function。解决方案不是升级 Node而是用nvm精确锁定nvm install 18.18.2 nvm use 18.18.2 node -v # 确认输出 v18.18.2Python 环境隔离是刚需很多 Skill如superpowers/python-linter依赖特定版本的astroid或pylint。如果你系统 Python 是 3.11但 Skill 要求 3.9直接pip install会污染全局环境。正确做法是为每个 Skill 创建独立虚拟环境# 为 python-linter Skill 创建专用环境 python3.9 -m venv ~/.superpowers/skills/python-linter-venv source ~/.superpowers/skills/python-linter-venv/bin/activate pip install pylint2.17.5 astroid2.15.6 deactivate然后在 Skill 的配置文件中指定python_executable: ~/.superpowers/skills/python-linter-venv/bin/python。Linux 下的 libstdc 兼容性Codex CLI 的二进制包尤其是 ARM64 版本链接了较新的libstdc.so.6。在 CentOS 7 或 Ubuntu 18.04 上运行会报version GLIBCXX_3.4.29 not found。不要尝试升级系统 glibc风险极高而是用patchelf重定向# 下载并安装 patchelf wget https://github.com/NixOS/patchelf/releases/download/0.17.2/patchelf-0.17.2-x86_64.tar.gz tar -xzf patchelf-0.17.2-x86_64.tar.gz sudo cp patchelf-0.17.2-x86_64/bin/patchelf /usr/local/bin/ # 修改 codex-cli 二进制 patchelf --set-rpath $ORIGIN/../lib ~/.superpowers/codex-cli注意Antigravity IDE 的“一键安装”看似省事但它默认把 Codex CLI 和所有 Skill 装在~/antigravity/目录下。当你想在 VS Code 里复用同一套 Skill 时会遇到路径冲突。我的建议是永远手动安装 Codex CLI 到~/.superpowers/Skill 统一放在~/.superpowers/skills/然后在各编辑器配置中显式指向此路径。这样环境解耦升级、调试、回滚都可控。3.2 Codex CLI 安装与初始化不是npm install -g就完事Codex CLI 是 superpowers 协议最成熟的 Runtime 实现但它的安装流程远比npm install -g codex-cli复杂。以下是经过 12 次重装验证的完整步骤下载预编译二进制非 npmnpm 包只是启动脚本真正的核心二进制在 GitHub Releases。访问 Codex CLI Releases 下载对应平台的codex-cli-vX.X.X-{os}-{arch}.tar.gz。例如 macOS ARM64curl -L https://github.com/antigravity-ai/codex-cli/releases/download/v0.8.3/codex-cli-v0.8.3-darwin-arm64.tar.gz | tar -xz mv codex-cli ~/.superpowers/ chmod x ~/.superpowers/codex-cli初始化配置目录Codex CLI 不会自动创建配置文件必须手动初始化mkdir -p ~/.superpowers/config ~/.superpowers/codex-cli init --config-dir ~/.superpowers/config这会生成~/.superpowers/config/config.yaml内容类似runtime: timeout_ms: 5000 max_concurrent_skills: 3 skills: - name: superpowers/ts-type-checker version: 1.2.0 enabled: true config: tsconfig_path: ./tsconfig.json安装第一个 Skill以 ts-type-checker 为例不要直接npm installSkill 必须放在 Codex CLI 能扫描的目录。标准路径是~/.superpowers/skills/mkdir -p ~/.superpowers/skills cd ~/.superpowers/skills npm init -y npm install superpowers/ts-type-checker1.2.0安装后~/.superpowers/skills/node_modules/superpowers/ts-type-checker下会有skill.json文件定义了该 Skill 的入口、schema 和依赖。验证 Runtime 是否就绪运行健康检查~/.superpowers/codex-cli health-check --config-dir ~/.superpowers/config正常输出应包含✅ Runtime: OK (v0.8.3) ✅ Skills: 1 loaded (superpowers/ts-type-checker v1.2.0) ✅ Config: Valid如果报错unable to locate the codex cli binary or required runtime components90% 是因为codex-cli二进制不在$PATH或--config-dir路径错误。用绝对路径调用是最稳妥的。3.3 编辑器集成Cursor、VS Code、Antigravity 的差异化配置superpowers 的价值在于跨编辑器一致性但各编辑器的集成方式差异很大。以下是针对主流工具的实操配置Cursor推荐首选Cursor 原生支持 superpowers无需额外插件。关键配置在Settings Editor SuperpowersSuperpowers Runtime Path:/home/user/.superpowers/codex-cliLinux或/Users/user/.superpowers/codex-climacOSSuperpowers Config Directory:/home/user/.superpowers/configEnable Hover Analysis: ✅开启后光标悬停自动触发类型推断Enable Auto Refactor: ❌建议关闭初期先手动触发避免误操作实测发现Cursor 的 Adapter 层对 TypeScript 支持最成熟hover 分析延迟稳定在 120ms 内。但对 Python 的 AST 解析偶尔丢失__init__.py的包层级需在项目根目录添加pyproject.toml显式声明[tool.black]。VS Code需 Claude Code 插件安装官方 Claude Code 插件v2.4.0。配置在settings.json{ claudeCode.superpowers.runtimePath: /home/user/.superpowers/codex-cli, claudeCode.superpowers.configDir: /home/user/.superpowers/config, claudeCode.superpowers.enabled: true, claudeCode.superpowers.hoverDelayMs: 300 }注意VS Code 的 Adapter 由插件提供它会监听textDocument/hoverLSP 请求。因此必须确保你的项目已配置正确的语言服务器如TypeScript TSDK或Pylsp否则 Adapter 收不到结构化上下文只能传纯文本导致 Skill 效果打折。Antigravity IDE最简但最封闭Antigravity 内置 Codex CLI但 Skill 管理在 GUI 中。路径Settings Superpowers Manage Skills。它会把 Skill 安装到~/antigravity/superpowers/skills/。优势是开箱即用劣势是无法复用你已有的~/.superpowers/skills/且 Skill 更新需通过 IDE 内置更新器不能npm update。适合快速体验不适合生产环境。实操心得我在一个混合 TypeScript/Python 项目中同时用 Cursor 和 VS Code。为了 Skill 复用我把~/.superpowers/skills/设为符号链接# 在 Antigravity 的 skills 目录下 rm -rf ~/antigravity/superpowers/skills ln -s ~/.superpowers/skills ~/antigravity/superpowers/skills这样所有编辑器都加载同一套 Skill配置一次处处生效。3.4 技能Skill开发实战手写一个“HTTP 错误码自动补全” Skill理解 superpowers 的最好方式是亲手写一个 Skill。以下是一个真实可用的http-error-completer示例它能在你输入res.status(时自动补全常见 HTTP 状态码及对应描述创建 Skill 目录结构mkdir -p ~/.superpowers/skills/http-error-completer cd ~/.superpowers/skills/http-error-completer npm init -y编写skill.jsonSkill 的身份证{ name: superpowers/http-error-completer, version: 0.1.0, description: Auto-complete HTTP status codes with descriptions, entry: index.js, input_schema: { type: object, properties: { trigger_text: { type: string }, cursor_position: { type: number } } }, output_schema: { type: object, properties: { completions: { type: array, items: { type: object, properties: { label: { type: string }, insert_text: { type: string }, documentation: { type: string } } } } } } }实现index.js核心逻辑// index.js const httpStatuses [ { code: 200, desc: OK }, { code: 201, desc: Created }, { code: 400, desc: Bad Request }, { code: 401, desc: Unauthorized }, { code: 403, desc: Forbidden }, { code: 404, desc: Not Found }, { code: 500, desc: Internal Server Error } ]; // 从 stdin 读取 superpowers 事件 process.stdin.setEncoding(utf8); let input ; process.stdin.on(data, chunk input chunk); process.stdin.on(end, () { try { const event JSON.parse(input); const { trigger_text, cursor_position } event.context || {}; // 简单匹配检测是否在 res.status( 后 if (trigger_text trigger_text.includes(res.status()) { const completions httpStatuses.map(status ({ label: ${status.code} ${status.desc}, insert_text: status.code.toString(), documentation: HTTP ${status.code}: ${status.desc} })); // 输出符合 output_schema 的 JSON console.log(JSON.stringify({ completions }, null, 2)); } else { console.log(JSON.stringify({ completions: [] }, null, 2)); } } catch (e) { console.error(JSON.stringify({ error: e.message }, null, 2)); } });在config.yaml中启用skills: - name: superpowers/http-error-completer version: 0.1.0 enabled: true path: /home/user/.superpowers/skills/http-error-completer测试重启编辑器在 Express 路由中输入res.status(光标悬停或按CtrlSpace即可看到状态码补全列表。这个 Skill 只有 30 行代码但它体现了 superpowers 的精髓用最小代码解决具体问题且输出格式被 Runtime 强制校验确保编辑器能无歧义消费。你可以把它扩展为从 OpenAPI spec 动态读取项目专属状态码或集成http-errors库的完整枚举。4. 常见问题排查与稳定性优化那些让项目上线的关键细节4.1 典型报错速查表从现象定位根因报错信息根本原因解决方案unable to locate the codex cli binary or required runtime componentsCodex CLI 二进制路径错误或--config-dir指向不存在的目录用绝对路径调用~/.superpowers/codex-cli --config-dir ~/.superpowers/config health-check确认路径权限ls -l ~/.superpowers/codex-clichatgpt failed to start. unable to locate the codex cli binary or required r...编辑器配置中 Runtime Path 指向了目录而非可执行文件如填了/home/user/.superpowers/而非/home/user/.superpowers/codex-cli在编辑器设置中检查路径末尾必须是文件名不能是目录Antigravity login failed/Antigravity IDE login这是 Antigravity 云服务认证问题与 superpowers 协议无关。superpowers 本地运行无需登录关闭 Antigravity 的云同步功能Settings Account Disable Cloud Sync或使用离线模式Cursor 中文怎么设置/cursor怎么设置中文Cursor 的 UI 语言由系统 locale 决定与 superpowers 无关Linux:export LANGzh_CN.UTF-8后启动 CursormacOS:defaults write com.cursor.Cursor AppleLanguages (zh-CN)note: claude code might not be available in your country. check supported co这是 Claude Code 插件的远程 API 限制superpowers 的本地 Skill 不受影响确保claudeCode.superpowers.enabled为trueclaudeCode.remote.enabled为false强制走本地 superpowers 流程4.2 性能调优让 superpowers 响应快于人类眨眼superpowers 的体验上限取决于延迟。实测数据显示从光标悬停到补全提示出现用户容忍阈值是 300ms。超过此值开发者会下意识忽略提示回归手动查文档。以下是经过压测验证的调优策略Skill 进程复用Process Pool默认情况下每次事件都 fork 新进程执行 Skill启动开销达 150msNode.js V8 初始化。Codex CLI 支持进程池# ~/.superpowers/config/config.yaml runtime: skill_process_pool_size: 5 skill_process_reuse_timeout_ms: 30000这会让 Skill 进程常驻内存后续请求直接复用。实测 hover 延迟从 220ms 降至 65ms。上下文裁剪Context TrimmingAdapter 传来的context可能包含整个文件内容但 Skill 只需局部信息。在 Skill 代码中主动裁剪// index.js 中 const { document_uri, position, context } event; // 只提取光标所在函数的 AST 节点而非整个文件 const functionNode extractFunctionAtPosition(context.ast, position); const minimalContext { function_signature: functionNode.signature, imports: context.imports.slice(0, 5) // 限制导入数量 };本地模型量化Ollama GGUF对于需要大模型推理的 Skill如代码翻译避免调用公网 API。用 Ollama 运行量化模型# 拉取 4-bit 量化版 CodeLlama ollama pull codellama:7b-instruct-q4_K_M # 在 Skill 中调用 const response await fetch(http://localhost:11434/api/chat, { method: POST, body: JSON.stringify({ model: codellama:7b-instruct-q4_K_M, messages: [{ role: user, content: Translate to Python: ... }] }) });7B 模型在 M2 Mac 上推理延迟 800ms远低于公网 API 的 2s 波动。4.3 安全加固防止 Skill 成为供应链攻击入口superpowers 的开放性带来便利也引入风险。一个恶意 Skill 可以读取~/.ssh/id_rsa并上传到 C2 服务器在git commit前注入后门代码篡改node_modules中的依赖包Codex CLI 提供了基础防护但需手动启用沙箱模式Sandbox Mode启用 Linux user namespaces 隔离# 安装 bubblewrapUbuntu/Debian sudo apt install bubblewrap # 在 config.yaml 中启用 runtime: sandbox: true sandbox_allowed_paths: - /home/user/project/ - /home/user/.superpowers/skills/这样 Skill 进程只能访问白名单路径无法读取家目录其他文件。Skill 签名验证GPG对关键 Skill如superpowers/security-auditor要求 GPG 签名# 发布 Skill 时签名 gpg --clearsign skill.json # Codex CLI 验证 ~/.superpowers/codex-cli verify-skill --skill-path ~/.superpowers/skills/security-auditor --gpg-key /path/to/public.key配置config.yaml强制验证skills: - name: superpowers/security-auditor require_signature: true网络锁Network Lockdown禁止 Skill 发起任何网络请求# 启动 Codex CLI 时禁用网络 unshare -r -n ~/.superpowers/codex-cli --config-dir ~/.superpowers/configunshare -n创建独立网络 namespaceSkill 进程无网络栈。所有需要网络的 Skill如调用内部 API必须显式配置代理或白名单。我在金融客户项目中强制启用了全部三项。审计报告显示Skill 的平均 CPU 占用下降 40%且成功拦截了一次试图读取.env文件的可疑 Skill它未通过 GPG 验证被 Runtime 直接拒绝加载。5. 进阶应用超越代码补全的 superpowers 场景5.1 构建“团队知识图谱”把 Confluence 文档变成可编程 APIsuperpowers 最被低估的能力是将非代码资产转化为开发上下文。我们团队有 200 页 Confluence 文档涵盖 API 规范、数据库 Schema、部署流程。传统方式是开发者 CtrlF 查找效率低下。我们用 superpowers 实现了“文档即服务”Skill 设计superpowers/confluence-linker它监听hover事件当光标停在createOrder函数上时自动查询 Confluence REST API获取createOrder相关页面的摘要、字段定义、错误码列表并格式化为补全项。实现要点使用 Confluence 的content/searchAPI关键词为函数名 项目名结果缓存到本地 SQLite避免每次 hover 都请求网络~/.superpowers/cache/confluence.db输出completions包含documentation字段点击后直接在编辑器内打开 Markdown 预览效果开发者写orderService.createOrder(时补全提示不仅显示参数类型还显示“参考文档 订单创建规范 ”链接点击即展开 Confluence 页面关键段落。文档更新后缓存 1 小时自动刷新无需人工同步。5.2 重构助手基于 AST 的安全代码迁移Legacy 系统升级常面临“改一处崩一片”。我们用 superpowers 实现了零风险重构场景将 Java 8 的Optional链式调用迁移到 Java 17 的Optional.orElseThrow()旧代码user.getProfile().getPreferences().getTheme()新代码user.getProfile().orElseThrow().getPreferences().orElseThrow().getTheme()Skill 实现superpowers/java-optional-migrator解析 AST识别Optional.get()调用链生成orElseThrow()替换方案并验证替换后编译通过调用javac输出edits数组精确到字符范围集成方式在 Cursor 中右键菜单添加Migrate Optional Chain触发 Skill。它生成的修改被编辑器原生应用且自动运行mvn test验证。过去需 2 天的手动迁移现在 10 分钟完成零错误。5.3 “代码健康度”实时仪表盘superpowers 可以聚合多个 Skill 的结果生成可视化反馈Skill 组合superpowers/cyclomatic-complexity计算函数圈复杂度superpowers/test-coverage读取lcov.info获取行覆盖superpowers/dead-code-detector静态分析未引用的函数Dashboard Skillsuperpowers/health-dashboard它不直接修改代码而是监听textDocument/didSave事件收集所有 Skill 的输出生成一个浮动面板[File: api/user.ts] ⚠️ high complexity: getUserById() (CC12, limit10) ✅ test coverage: 92% (target: 85%) dead code: updateUser