评分明细
适用场景
diagnose 快速入门
用科学方法调 Bug:先假设,再找证据,再下结论,最后改代码——告别乱试。
这是什么?解决什么问题?
调 Bug 的”民间方法”通常是:猜。“我猜是 X 引起的,改改看”,不行再改改看,改到放弃或撞大运。这种方法在 5-10 行代码里能行,在 5 万-10 万行的系统里几乎注定失败。
Matt Pocock 的 diagnose Skill 把”科学调试法”打包成可被 AI 严格执行的流程:
- 复现:把 bug 稳定复现成最小用例;
- 观察:收集日志、变量值、调用栈,记录实际发生了什么;
- 假设:基于观察提出若干”如果……那么……”的假设;
- 验证:用最小实验(打印、断点、单元测试)逐一排除或证实;
- 根因:找到那个”满足所有观察”的唯一解释;
- 修复:改最小代码并加回归测试。 AI 在开启 diagnose 后,不允许直接动业务代码,必须先走完 1-5 步,得到清晰的根因报告后,才动第 6 步。这避免了大量”改了 5 个地方,bug 突然消失,但你不知道是哪个改好的”。 适合:中级以上工程师、复杂业务系统维护、on-call 同学。
准备工作
- 一个支持 SKILL.md 的 agent
- 一段有 bug 的代码 + 报错信息
- 5 分钟时间
- 一颗不浮躁的心(诊断不是改代码,慢一点)
3 步快速上手
第 1 步:克隆并软链
git clone https://github.com/mattpocock/skills.git
ln -sf "$(pwd)/skills/diagnose" ~/.claude/skills/diagnose
OpenCode 用户把目标路径改为 ~/.config/opencode/skills/,Cursor 用户改为 ~/.cursor/skills/。
第 2 步:验证 Skill 加载
ls ~/.claude/skills/diagnose/SKILL.md
head -30 ~/.claude/skills/diagnose/SKILL.md
应当能看到”复现 / 观察 / 假设 / 验证 / 根因 / 修复”6 个阶段。重启 agent,/skills list 看到 diagnose 即 OK。
第 3 步:用 Skill 调第一个真实 Bug
准备一个 bug 场景(下面给一个示范)。在 agent 对话里说:
[开 diagnose]
我的 Node.js 服务在收到 POST /api/login 请求时偶尔返回 502,
成功率和时间相关,白天 95% 晚上 30%。日志只有一行 upstream timeout。
请按 diagnose 流程帮我定位。
观察 AI 行为:
- 第 1 步,它会问”先复现,你能不能在测试环境稳定触发”或者”贴一段请求复现脚本”;
- 第 2 步,它会建议”在 4 个关键节点加日志”或”用 distributed trace”;
- 第 3 步,它会列出 3-5 个候选假设(下游慢 / 缓存击穿 / GC 暂停 / DNS 抖动 / 连接池耗尽);
- 第 4 步,它会为每个假设设计一个”一次只动一个变量”的实验;
- 第 5-6 步,在你确认根因后再改代码并加回归测试。 重点:AI 在第 5 步前不会动业务代码,这是这个 Skill 的精髓。
常见踩坑
- 跳过第 1 步”复现”:很多人直接说”线上有 bug 快调”,AI 拿不到最小复现,只能瞎猜。坚持”先复现再诊断”。
- 假设列得太少:3 个假设里几乎一定有一个是真因,列 5-8 个才稳,Skill 会主动催你”再列几个”。
- 验证实验一次动了两个变量:“我把超时从 3s 改成 5s,又重启了 2 台机器”——这种实验 0 信息量。Skill 会要求你一次只改一个变量。
- 不收集证据就改代码:看到 502 就直接重试/加超时,根因没找到。Skill 会一直停在”假设/验证”阶段。
- 根因找到后”顺便”重构:诊断归诊断,重构归重构,混在一起会引入新 bug。Skill 会要求先 fix,另开 PR 重构。
- 回归测试不写:“我改完没复现了” 不算 fix,必须有自动化测试覆盖这个 case,Skill 会强制要求。
初级用法
- 复现本地 bug:把生产报错信息贴进对话,先让 AI 帮你写一个最小复现脚本,再走诊断。
- Code Review 找潜在 bug:对一段新写的代码,跑 diagnose 的”假设”步骤,看 AI 能不能列出 5 个潜在失败模式。
高级玩法
- 跨服务调用链诊断:把 trace_id 喂给 AI,让它同时看 4 个服务的日志,做”分布式”诊断。
- 配合火焰图/Profiler:把
pprof输出、火焰图 SVG 一起贴进去,AI 能直接看到热点函数,跳过大量猜测。 - 知识库沉淀:把”根因报告”自动归档到 Notion / 飞书,长期形成”故障案例库”,新人入职直接看。
小技巧
- 假设阶段写”如果……那么……”句式,而不是”可能是 X”,后者不可证伪。
- 验证实验的代码,记得在
git stash后写,失败能秒回退。 - 一次只跑一个 Skill,不要同时开 tdd + diagnose,会冲突。
- 写完根因报告后,顺手写一个
POSTMORTEM.md,记录时间线、影响、根因、Action Items,团队复盘用。 - “根因”不是”症状”——连接池满不是根因,慢查询/慢下游是根因。多问一个”为什么”。
参考链接
- 仓库主页
- Matt Pocock 个人站
- 《Debugging: The 9 Indispensable Rules》
- 分布式追踪 OpenTelemetry
- pprof 文档
- 相关 Skill:tdd、grill-me、security-auditor
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
基本信息
| 项目 | 详情 |
|---|---|
| 来源仓库 | mattpocock/skills |
| 作者 | Matt Pocock |
| Stars | 68,000+ |
| 协议 | MIT |
| 适用工具 | Claude Code / Codex / Cursor 等 |
安装
npx skills@latest add mattpocock/skills
# 选 diagnose
安装后 /diagnose 调用。
为什么需要这个 Skill?
大多数开发者的调试方式:
1. 看到报错 → 2. 改一行 → 3. 还报错 → 4. 再改一行 → 5. 循环...
这是随机试错。对于简单 Bug 也许有用,但对于间歇性 Bug、复杂 Bug、跨模块 Bug,完全无效。
diagnose 用科学方法论替代直觉:
1. 观察现象 → 2. 形成假设 → 3. 设计验证 → 4. 收集证据 → 5. 锁定根因 → 6. 修复
工作流程示例
你: /diagnose 用户登录后偶尔被踢回首页,但不是每次都发生
AI:
【Step 1: 现象精确化】
❓ 被踢回首页前有什么共同点?刷新?跳转?超时?
❓ 频率如何?每天几次还是每小时几次?
❓ 最近改过认证相关代码吗?
你: 大概每小时 3-4 次,刷新页面就触发。上周改过 token 刷新逻辑。
AI:
【Step 2: 形成假设】
假设 A: Token 刷新有竞态条件 — 可能性高(最近改动)
假设 B: Session 过期时间配置问题 — 可能性中
假设 C: Nginx 负载均衡丢失 session — 可能性低
【Step 3: 验证假设 A】
添加日志记录 token 刷新时间戳,观察是否在刷新期间请求了旧 token。
[AI 自动添加诊断日志代码]
结果:日志显示被踢出时,token 确实刚过期 2 秒,但刷新还没完成。
【Step 4: 锁定根因 + 修复】
根因:token 刷新是异步的,中间存在空窗期。
修复:添加刷新锁 + 请求队列,防止并发刷新。
核心价值
不是”AI 帮你改代码”,而是 AI 带你走一遍专业的调试流程。即使你最终手动修复,这个过程本身已经锻炼了你的调试能力。
适用场景
| 场景 | diagnose 效果 |
|---|---|
| 间歇性 Bug | 最佳 — 随机试错完全无效 |
| 复杂跨模块 Bug | 理清依赖链,缩小范围 |
| 你完全不懂的代码 | AI 带你分析,边调边学 |
| 紧急线上问题 | 快速定位根因,不浪费时间试错 |
与其他 Skills 组合
遇到 Bug → /diagnose(定位根因)
→ 确定修复方案
→ /tdd(写测试防止回归)
→ /grill-me(确认修复范围)
注意事项
- diagnose 过程可能比直接改代码慢,但解决率远高
- 第一次形成假设时需要你提供信息(现象描述)
- 适合复杂问题,简单拼写错误直接用
参考资料
📊 评分与标签
评分说明
总分 8.0/10 · P_优选
📊 可观测社区指标(数据核验日期:2026-07-23)
- 官方仓库与维护入口:mattpocock/skills。GitHub API 核验时触发限流,未记录无法再次确认的 Stars/Forks 精确快照,避免用估算值替代事实。
📦 可安装性 2.0/2.5
- 官方来源提供可复制的 Skill、MCP 或 Markdown 目录;安装前仍需按 README 配置宿主客户端、运行时和最小权限凭据。
- 来源:官方仓库
- 与 Anthropic Skills、OpenCode Skills 对比,本项遵循开放目录思路,但插件命令、脚本依赖和更新方式并不完全统一。
🎯 实用性 2.0/2.5
- 用假设、证据和根因验证进行结构化调试;这里只确认官方材料明确描述的范围,未把未经实测的准确率、性能或生产收益计入评分。
- 来源:官方功能说明
- 与 GitHub CLI、Zapier 等专用工具对比,Skill 更适合把操作步骤交给 Agent 复用,不能替代完整运行时、监控和人工验收。
📖 文档质量 1.6/2.0
- README、技能目录或官方参考页可核对安装、能力和约束;未发现统一的端到端性能基准,因此采用保守文档分。
- 来源:官方文档
- 与 Vercel Agent Skills、Obra Superpowers 对比,目标任务说明直接,但版本迁移、失败恢复和跨平台案例仍依赖上游维护。
👥 社区活跃 1.1/1.5
- 仓库公开提交历史、Issue 与 Pull Request 入口可追踪维护;因 API 限流未写入易变精确计数,社区分不依据未经复核的热度数字。
- 来源:官方维护入口
- 与 anthropics/skills、obra/superpowers 对比,具备公开协作入口,但不能据此推导响应时效、长期承诺或企业支持等级。
🔗 兼容性 1.3/1.5
- 可在能够读取 Skills/MCP 指令并具备相应工具权限的 Agent 环境使用;API、Token、浏览器和本地工具链会形成额外约束。
- 来源:官方兼容性依据
- 与 Claude Code、Codex、Cursor 的原生扩展对比,开放文件格式便于迁移,但触发、脚本执行和资源加载行为存在客户端差异。
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
🏷️ 标签说明
- 免费: 公开来源可访问;外部服务费用不计入 Skill 本身。来源:官方来源
- 编程: 核心能力与“用假设、证据和根因验证进行结构化调试”直接对应。来源:官方来源
- 测试: 官方材料显示其面向该使用方式。来源:官方来源
局限说明:本次为官方仓库与文档核验,未执行跨客户端、跨操作系统端到端基准测试;外部 API 配额、授权和价格可能变化,应以上游最新说明为准。
📋 来源与核验记录
- ✅ 官方仓库页面已核验:https://github.com/mattpocock/skills
- ✅ 官方文档或功能页已核验:https://github.com/mattpocock/skills
- ⚠️ 未验证(访问限制):GitHub REST API 于 2026-07-23 返回限流,未采用无法复核的精确 Stars/Forks 数值
- ⚠️ 间接来源(二手数据):未用于核心功能与维度评分
- ❌ 已删除死链:无