mcpField
D
diagnose

diagnose

github.com/akillness开发5356 次安装今天更新
代码仓库

关于 diagnose

用于排查棘手、间歇性或性能相关 Bug 的六阶段技能,优先建立快速且确定的反馈循环,再验证假设并修复问题。

主要功能

  1. 01建立快速通过/失败反馈循环
  2. 02稳定复现故障
  3. 03排列可证伪的假设
  4. 04针对假设添加检查
  5. 05验证修复与回归
  6. 06记录原因及预防措施

适用场景

  1. 01调查难以快速修复的 Bug
  2. 02查明性能退化原因
  3. 03收集间歇性故障的证据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/akillness/jeo-skills --skill diagnose

安装后在 Claude Code 中输入/diagnose确认已加载。

详细介绍

诊断

用于系统性调查 Bug 的六阶段循环。关键在于:在阶段 1 投入不成比例的精力。有了可靠的反馈循环后,阶段 2–6 就会变成机械流程。

何时使用此技能

  • 难以快速修复的疑难 Bug
  • 根本原因不明的性能回退
  • 需要通过重复运行收集证据的不稳定故障
  • 之前的修复尝试均未成功的故障

何时不使用此技能

  • 根本原因明确、可快速定点修复的问题 → 使用 debugging
  • 从症状入手的日志分诊 → 使用 log-analysis
  • 广泛的测试策略设计 → 使用 testing-strategies

六个阶段

阶段 1 — 建立反馈循环(优先投入精力)

为该 Bug 创建快速、确定且自动化的通过/失败信号。

Goal: < 10 second feedback cycle
Signal: automated pass/fail, not manual inspection
Determinism: same input → same result every time

问问自己:“我能否运行一条命令,并在 10 秒内知道 Bug 是否存在?”

  • 如果还没有失败测试,就编写一个
  • 创建最小复现脚本
  • 将触发条件缩减到尽可能小的输入
  • 让故障明显且可观察

在反馈循环可靠之前,不要进入阶段 2。

阶段 2 — 复现

在受控条件下确认故障可复现。

  • 多次运行反馈循环,确认结果具有确定性
  • 记录确切的输入、环境和步骤
  • 判断这是新出现的行为(回归),还是一直存在的问题
阶段 3 — 提出假设

按可能性排序,提出有关根本原因的假设。

  • 列出 2–4 个候选原因,按可能性排序
  • 每个假设都必须可证伪
  • 从最可能的原因入手,而不是最有趣的原因
H1 (most likely): [specific cause]
H2: [alternative cause]
H3: [edge case cause]
阶段 4 — 添加检测手段

针对每个假设,运行一项有区分力的检查。

  • 在最精确且有用的位置添加日志、断言或断点
  • 使用反馈循环快速测试每个假设
  • 记录证据:已确认/已证伪/无法确定
  • 如果某个假设被证伪,就转向下一个假设
阶段 5 — 修复并测试

应用修复并验证问题已解决。

  • 如果可能,先于修复编写回归测试
  • 应用能够解决根本原因的最小改动
  • 运行完整测试套件,而不只是目标测试
  • 确认反馈循环现已通过
阶段 6 — 清理与事后复盘
  • 移除用于诊断的检测代码
  • 记录根本原因,以及它为何出人意料
  • 查找代码库中的其他类似模式
  • 考虑添加预防性检查(Lint 规则、测试、断言),以自动捕获此类 Bug

快速参考

# Phase 1: make the feedback loop
# Write a failing test or minimal repro script

# Phase 4: instrument at the narrowest point
console.error('[diagnose] value at boundary:', value)

# Phase 5: verify fix closes the loop
npm test -- --testPathPattern=failing-test

说明

  1. 确定任务触发条件和预期输出。
  2. 从上到下遵循此技能中的工作流步骤。
  3. 验证输出后再进入下一步。
  4. 如果任何步骤失败,记录阻碍因素和备用方案。

示例

  • 示例:先在小范围内应用此技能,验证通过后再扩展到完整范围。

最佳实践

  • 确保输出具有确定性且可审计。
  • 优先进行小型、可逆的改动,避免大范围、高风险的编辑。
  • 明确记录假设。

参考资料

  • 项目规范:.agent-skills/skill-standardization/SKILL.md
  • 验证脚本:.agent-skills/skill-standardization/scripts/validate_skill.sh

评论

支持 Markdown