疑难 Bug 诊断法
针对硬 Bug 和性能回退的结构化调试循环:复现 → 最小化 → 假设 → 插桩 → 修复 → 回归测试。
技能明确要求在执行命令、展示输出前对机密进行脱敏(<REDACTED>),并建议将凭据保存在环境中而非输出中,体现了数据流透明性和最小权限原则。然而,技能允许在必要时添加生产环境临时仪表(阶段1),但未明确要求用户确认或提供回滚计划,存在潜在风险。发布者身份未经验证,但来源归属在README和许可证中明确标识为Matt Pocock。扣分点:生产仪表添加前未明确要求用户确认,且缺乏明确的回滚机制。
技能提供了结构化的分阶段调试流程,包括反馈循环构建、最小化、假设、仪器化、修复和清理,逻辑自洽。然而,静态审查无法验证实际运行效果,且技能依赖用户提供环境和人工介入(如HITL脚本),错误处理和失败反馈机制仅在无法构建循环时提及,缺乏详细指导。扣分点:无测试证明关键路径可行性,失败反馈描述不够详细。
技能明确定义了适用场景(硬bug和性能回归)和触发条件(用户说'diagnose'/'debug'时),并提供了详细的操作流程。但技能未明确声明非适用场景(如简单bug、无代码环境),且对环境适配(如中国大陆网络可达性)没有提及。扣分点:非适用场景边界模糊,缺乏对中国大陆环境适配的说明。
技能文件结构清晰,包含描述、元数据、阶段划分和检查清单,信息架构合理。有许可(MIT)、版本管理(package.json和changesets)和发布工作流(release.yml),维护责任明确(Matt Pocock)。但缺少安装/依赖说明(如运行技能所需的环境变量),以及常见问题和已知限制部分不完整。扣分点:依赖说明和故障排除部分不足。
技能提供了详细的调试方法论,有望高效解决硬bug。但静态审查无法验证实际输出是否直接可用,且技能输出高度依赖用户环境和代码库情况,边际价值难以量化。扣分点:缺少代表性输出示例,无法验证实际效果。
仓库包含CI工作流(release.yml),但该工作流仅处理版本发布,不包含针对技能内容的测试。缺少独立第三方验证证据,技能核心内容无法通过静态审查独立复现。扣分点:无测试套件或第三方执行证据。
- 技能允许在生产环境添加临时仪表,但未明确要求用户确认和提供回滚计划,实施时需谨慎并先征得同意。
- 技能高度依赖本地环境和代码库,可能不适用于无代码或远程环境,且未提及对中国大陆网络环境的适配。
- 静态审查无法验证技能的实际效果,建议在实际项目中试用并验证其调试循环的有效性。
这个 Skill 能做什么,适合哪些场景?
该技能把调试难题提炼为一个六阶段纪律流程,核心是构建一个紧致、可复现的反馈循环:先让 bug 稳定红,再最小化复现,列出可证伪的假设,用定向插桩验证,写出回归测试,最后清理并复盘。它强调在提出假设之前必须有一个能变红的命令,并要求在展示输出前对所有秘密进行编辑。它适用于任意编程语言,且与仓库中的其他技能配合使用(如 /tdd、/improve-codebase-architecture)。该技能来自 mattpocock/skills 合集,该合集中包含 35 个技能,采用 MIT 许可。
该技能提供逐步调试协议:第一阶段优先构建反馈循环(失败测试、curl 脚本、Playwright、捕获的轨迹、临时 harness、模糊测试、git bisect harness、对比循环或 human-in-the-loop 脚本),并要求循环具备 'red-capable'、确定性、快速且可由 agent 自动运行。它指引阅读 CONTEXT.md 和 ADR,在展示前对命令输出、捕获的工件和认证头进行编辑,生成 3-5 个可证伪的假设并在测试前向用户展示,使用带唯一前缀的日志(如 [DEBUG-a4f2]),在性能回退时测量基线,在修复前编写回归测试,并在完成后清理所有调试痕迹并记录正确的假设。
- 当用户报告一个随机崩溃或数据损坏 bug,没有任何明显的复现步骤时,开发人员使用该技能构建系统化的反馈循环。
- 当 CI 测试偶尔失败(flaky)时,工程师应用该技能提高复现率,直到可调试。
- 当生产环境中的某个端点出现性能回退时,开发者使用性能分支:先测量基线,再进行二分。
- 当 agent 在修复 bug 前倾向于猜测时,该技能通过在允许假设之前要求一个可复现的命令来阻止这种行为。
- 当需要在代码库中安全调试且不泄露敏感信息时,该技能内置了编辑规则。
- 当修复 bug 后需要确保不会再次出现时,该技能指导在正确的 seam 处编写回归测试。
这个 Skill 有哪些优点和局限?
- 强制先构建反馈循环,避免过早猜测。
- 可操作且指标驱动:明确定义了 'tight' 和 'red-capable' 的标准。
- 内置编辑规则,安全处理敏感信息。
- 引导生成多个可证伪的假设,并通过用户检查来重新排序。
- 包括系统性的回归测试和清理协议,降低重复 bug 的风险。
- 专为 agent 自动执行而设计,支持有限的人类介入。
- 对快速修复或简单 bug 而言过于繁琐,会跳过阶段。
- 严重依赖用户提供环境和访问权限来构建反馈循环;如果缺少这些,技能会停滞。
- 未包含任何测试套件或 CI 来验证技能本身的效果。
- 一些建议(如 HITL 脚本)尚未在仓库中实作,需要用户自行创建。
- 并未覆盖非代码调试场景(如基础设施问题)。
如何安装这个 Skill?
通过 skills.sh 安装整个合集:运行 npx skills@latest add mattpocock/skills 并选择要安装的技能以及目标 agent(确保选择 /setup-matt-pocock-skills)。或者,作为 Claude Code 插件安装:在 Claude Code 中运行 /plugin marketplace add mattpocock/skills 和 /plugin install mattpocock-skills@mattpocock。然后每个仓库运行一次 /setup-matt-pocock-skills 进行配置。
如何使用这个 Skill?
当用户说 'diagnose' 或 'debug this',或报告代码抛出异常、失败或运行缓慢时,该技能会自动触发。或者手动调用它。然后在仓库中执行 SKILL.md 中的阶段:阅读现有的 CONTEXT.md 和 ADR,在 Phase 1 中构建一个紧致的反馈循环(如果无法构建,请明确说明并请求用户提供资源),再进行 repro-minimise-hypothesise-instrument-fix-regression-test 循环,最后遵循清理清单。