开发与工程 workflowdebuggingroot-causesuperpowers

Systematic Debugging(系统化调试)

任何 bug 都必须先完成根因排查再提修复方案,明确禁止「先随手改一下试试」

FollowSkills 评估 · FSRS-1.0
谨慎使用
63/ 100
价值适配17 / 20

为测试失败、生产缺陷、构建失败、性能问题和集成异常提供了清晰的四阶段根因调查流程,能减少猜测式修复和回归风险。适用范围明确,但“任何技术问题都必须先完成全部阶段”的绝对规则可能不适合紧急缓解、已知简单故障或需要先恢复服务的场景;其相对收益主要来自文档主张,缺少独立验证。

可靠性14 / 20

步骤结构化、检查点明确,并规定单一假设、最小化测试、失败后重新分析以及三次失败后质疑架构。提供了根因追踪、条件等待、纵深防御和污染测试脚本等配套材料。证据不足之处包括未证明这些材料在不同语言、测试框架、平台或实际项目中可复现;脚本依赖 Bash、find 和 npm test,且会忽略单个测试命令失败,可能掩盖诊断问题。

安全性13 / 25

技能本身不自动执行外部操作,也没有要求联网、凭据读取或数据外传,因此直接权限风险较低。但示例明确记录环境变量、密钥可用性、密钥链身份和调用栈,缺少敏感信息脱敏、最小日志范围、存储期限和删除要求;调试中的 git init、测试运行和文件状态检查也缺少明确的用户确认、隔离和回滚规范。绝对禁止先缓解再调查的规则在生产事故中可能扩大业务损失。

证据8 / 15

SKILL.md 和配套文件提供了可追踪的步骤、示例和测试场景;CREATION-LOG.md 声称四项验证测试全部通过,并声称有实际测试结果和影响数据。但本次仅进行静态审查,无法确认这些测试确实执行、测试环境、样本、版本或结果;“95%”“60%到100%”“1847 tests passed”等数字没有独立证据,事实与作者总结未充分区分。

易用性7 / 10

触发条件、阶段划分、反模式、成功标准和若干命令示例较清晰,读者可直接形成调查清单。缺口包括没有统一的输入输出模板、诊断记录格式、适配不同语言和工具链的说明,也没有系统说明日志敏感性、成本控制、并行测试影响、权限要求和无法完成某阶段时的退出或升级路径;相关技能引用也假定其他技能可用。

维护性4 / 10

仓库提供 MIT 许可证、包版本 6.1.1、创建日志和贡献/更新说明,具备一定治理线索。选定技能自身没有版本号、变更历史、维护责任人、兼容性矩阵或明确的技能级更新路径;创建日志日期为 2025-10-03,但不能据此确认当前有效性。发布者未经过 FollowSkills 企业注册表验证,因此身份和治理责任只能视为未知,不能额外加分。

证据充分度: 评估于 2026年7月15日 审查版本 d884ae04edeb
使用前请注意
  • 不要直接复制示例中的环境变量、密钥链身份或凭据可用性日志;先脱敏、限制范围并确认日志不会进入共享或持久化系统。
  • 生产事故中应由人工决定是否先采取有回滚的临时缓解措施;不要把“无根因不得修复”当作无条件替代事件响应策略。
  • 运行 find-polluter.sh 前应在隔离工作区确认测试副作用、命令权限和清理方案;该脚本会逐个运行测试并忽略测试命令错误。
  • 创建日志中的测试通过和效果数字仅是未验证的作者声明,不应视为独立质量证明。
查看完整评分方法 →

它能做什么 & 适用场景

把调试拆成四个必须依次完成的阶段:根因排查、模式分析、假设与验证、实施修复,铁律是「没做完第一阶段就不能提修复方案」。文档收录了大量真实场景下的「合理化借口」原句(比如「问题看起来很简单」「先随便试一下改这个」)并逐条给出反驳,还内置一条「连续 3 次修复都失败要停下来质疑架构本身」的规则,防止在错误方向上无限打补丁。

Phase 1 根因排查:完整读错误信息和堆栈、确认能稳定复现、检查最近改动、多组件系统要在每个组件边界加诊断日志定位故障发生在哪一层;Phase 2 模式分析:找同代码库里能正常工作的类似例子、逐条列出和故障代码的差异;Phase 3 假设与验证:只提一个明确假设、做最小改动验证、不行就换新假设而不是在旧修复上叠加新修复;Phase 4 实施:先写一个能复现问题的失败测试(结合 test-driven-development skill)、只做一处改动、验证通过且没有连带破坏其他测试。如果同一问题连续 3 次修复失败,规则要求停下来跟人讨论是不是架构本身有问题,而不是继续尝试第 4 次修复。

  1. 测试失败、生产环境报 bug、性能异常等任何技术问题排查的默认前置步骤
  2. 跨组件的问题(比如 CI → 构建 → 签名这种多层系统)先加诊断日志定位到底哪一层出的问题,而不是凭直觉猜
  3. 同一个 bug 已经改了两次没解决,第三次修复失败后触发「停下来质疑架构」的规则,而不是继续硬着头皮改第四次

优缺点一览

优点
  • 把「随手改改试试」这种最常见的低效调试模式,用铁律+合理化借口对照表的形式明确禁止,而不是泛泛建议「要仔细排查」
  • 「连续 3 次修复失败要质疑架构」这条规则很有实际价值,能防止在错误方向上无限投入时间
  • 文档给出了「95% 的『找不到根因』其实是排查不彻底」这类具体判断标准,而不是含糊的经验之谈
局限
  • 只在会自动读取和遵循 SKILL.md 指令的 harness 里可靠工作(Claude Code、Codex CLI 等);纯聊天式界面里等于一份说明文档,需要人工照做。
  • 四阶段流程对真正简单的 bug(比如明显的拼写错误)也要求走完整套排查步骤,在这类场景下略显繁琐
  • 多组件诊断日志的方法需要能实际执行命令、读日志输出的环境,纯静态代码分析场景用不上

如何安装

作为 obra/superpowers 插件的一部分安装,不能单独安装某一个 skill:

  1. Claude Code:官方市场 /plugin install superpowers@claude-plugins-official;或先注册 Superpowers 自建市场 /plugin marketplace add obra/superpowers-marketplace,再 /plugin install superpowers@superpowers-marketplace
  2. 也支持 Antigravity、Codex App/CLI、Cursor、Factory Droid、GitHub Copilot CLI、Kimi Code、OpenCode、Pi 等 harness,具体命令见仓库 README

装好后这个 skill 会和其余 13 个 Superpowers skill 一起启用,由 using-superpowers 统一引导、按场景自动触发,无需单独调用。

如何使用

遇到任何 bug、测试失败或非预期行为时自动触发,提出修复方案之前会先走完根因排查流程;时间紧张、看起来是「简单问题」时反而更强调不能跳过(红旗清单里专门列了这类合理化借口)。

对比同类

跟没有这个 skill、直接让模型看到报错就试着改代码相比,这套四阶段流程加了强制的根因确认步骤,实测能显著降低「改了但没真的修好」和引入新 bug 的概率(文档给出的数字是系统化排查 15-30 分钟对比乱改 2-3 小时,首次修复成功率 95% 对比 40%,但这是作者自述的经验数据,不是本站复测验证过的结果)。

常见问题

为什么要在多组件系统里逐层加诊断日志?
深层调用栈或多组件系统(比如 API→服务→数据库)里,问题可能出在任意一层;先在每个边界记录进出数据,跑一次收集证据,再根据证据判断具体是哪一层出问题,比凭经验直接猜某一层更可靠。

同仓库的其他 Skills

均来自 obra/superpowers

开发与工程

Test-Driven Development(测试驱动开发)

铁律:没有先写失败测试就不能写生产代码,写了也要删掉重来,不允许「补测试」

开发与工程

Brainstorming(需求澄清与设计)

写代码前先把需求逼问清楚,禁止在没有确认设计前直接动手实现

开发与工程

Verification Before Completion(完成前必须验证)

没有当次运行过的验证证据,就不能说「完成了」「测试通过了」——包括「应该」「看起来」这类措辞

开发与工程

Finishing a Development Branch(收尾开发分支)

开发完成后先验证测试通过,再用固定的 4 选项菜单让人决定合并/PR/保留/丢弃,并按规则清理 worktree

开发与工程

Receiving Code Review(接收代码评审反馈)

禁止「你说得对!」式的表演性附和,要求先核实反馈再决定实施还是据理反驳

开发与工程

Requesting Code Review(发起代码评审)

派一个独立上下文的评审子代理来审查改动,而不是让主会话自己一边写一边给自己打分

开发与工程

Writing Plans(撰写实现计划)

把需求拆成假设执行者对代码库一无所知也能照做的、每步 2-5 分钟的具体任务,杜绝「TBD」「补充细节」类占位符

开发与工程

Subagent-Driven Development(子代理驱动开发)

同一会话内为每个任务派发全新子代理实现,配两阶段审查,用进度台账防止压缩后重复劳动

开发与工程

Executing Plans(分会话执行实现计划)

在没有子代理能力的场景下,按人工检查点批量执行一份已写好的实现计划

开发与工程

Using Git Worktrees(隔离工作区管理)

开始新功能开发前,优先用平台原生隔离工具,没有的话再退回手动 git worktree

开发与工程

Dispatching Parallel Agents(并行子代理调度)

面对多个互不依赖的问题时,一次性并行派发多个子代理分别处理,而不是串行排队

开发与工程

Writing Skills(撰写与测试 Skill 本身)

把 TDD 的红绿重构套用到「写 Skill 文档」这件事上:先用无 skill 基线测试暴露真实失败模式,再针对性写文档,而不是凭直觉写

开发与工程

Using Superpowers(Superpowers 入口引导)

整套 Superpowers 方法论的启动引导 skill,规定「只要有 1% 可能相关就必须调用对应 skill」

相关 Skills