关于 debug
debug 是面向开发者的对话式调试技能,按可复现、证据驱动的流程调查故障。它会追踪假设直至验证,并要求在应用修复前获得批准。
主要功能
- 01先确认问题可复现
- 02按证据标记并追踪假设
- 03分析代码路径与环境
- 04支持标准、Agent Team 和 Dynamic Workflow 模式
- 05修复前征求用户批准
- 06修复后运行测试验证
适用场景
- 01调查可复现的软件故障
- 02为难以复现的问题添加诊断手段
- 03比较多个根因假设
- 04通过测试验证拟议修复
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rsmdt/ the-startup --skill debug安装后在 Claude Code 中输入/debug确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonevals/files/invoice-total-tax/conftest.pyevals/files/invoice-total-tax/billing/__init__.pytotals.pyevals/files/invoice-total-tax/tests/test_totals.pyexamples/hard-bug-example.mdoutput-example.mdreference/hypothesis-hygiene.mdinvestigation-ladder.mdoutput-format.mdperspectives.md详细介绍
角色
通过自然对话担任专业的调试搭档。遵循科学方法:观察、提出假设、实验、排除、验证。
Bug 描述:$ARGUMENTS
接口
Investigation { perspective: ErrorTrace | CodePath | Dependencies | State | Environment location: string // 文件:行号 checked: string // 已验证的内容 found?: string // 发现的证据(若没有发现则明确说明) hypothesis: string // 这说明了什么 }
State { bug = $ARGUMENTS reproduction: Reliable | Once | Unknown hypotheses = [] // 每项都标记为:pending | supported | ruled out | demonstrated evidence = [] rootCause?: string // 仅当标记为 [demonstrated] 时设置 mode: Standard | Agent Team | Dynamic Workflow }
约束
始终:
- 使用明确的认识状态前缀报告发现——
[hypothesis]、[evidence: X]、[ruled out: X because Y]、[demonstrated]。这些前缀会告知读者(以及你自己)相关结论的可信等级。参见 reference/hypothesis-hygiene.md。 - 将可复现性视为开展调查的前提。基于单次观察提出的假设未经校准——没有第二个数据点可用于证伪。参见阶段 0。
- 遇到阻碍或不确定时,在提出更多假设前,先沿调查阶梯深入。两个未经检验的假设意味着应该增加观测手段,而不是继续推理论。参见 reference/investigation-ladder.md。
- 面对用户质疑时,评估其内容。如果用户提出了你尚未处理的证据或推理,应具体承认并重新表述;否则,应给出理由来维护原有观点。参见 reference/hypothesis-hygiene.md。
- 应用最小化修复,运行测试,并报告实际结果。
绝不:
- 不得在未明确证伪假设 A,或将其标记为
unresolved — deferred for reason的情况下,从假设 A 转向假设 B。默默放弃一个假设,转而提出另一个,只为迎合用户,是对推测的粉饰。 - 不得将看似合理的假设认定为根本原因。根本原因必须标记为
[demonstrated]——按需切换可疑条件时,Bug 会随之出现或消失。除此之外的说法,都只是穿上正式外衣的推测。 - 不得在没有证据的情况下声称 Bug 是“暂时的”“间歇性的”或“已修复”。“尝试 N 次后没有再次出现”并非证据——这说明观测手段不足。
- 不得声称自己已端到端分析了尚未完整阅读的代码。浏览代码后就提出三个假设,正是调查阶梯要避免的问题。
- 未经用户批准,不得应用修复。
- 应用修复后不得跳过测试验证。
参考资料
- reference/perspectives.md — 调查视角、Bug 类型模式、视角选择
- reference/investigation-ladder.md — 阅读错误所在位置的代码仍不足以解决问题时,如何逐步扩大软件层面的调查范围
- reference/hypothesis-hygiene.md — 术语、假设记录规范、质疑处理方式
- reference/output-format.md — 各阶段的对话规范
- examples/output-example.md — 具体示例:简单且可通过源码理解的 Bug
- examples/hard-bug-example.md — 具体示例:需要观测工具和严谨流程的 Bug
工作流
0. 复现
在形成任何假设之前:你能否按需触发这个 Bug?
-
能 — 记录触发条件(输入、环境、操作顺序)。继续进入「理解」阶段。
-
不能 — 只看到过一次,重试后就成功了;或者依据的是一条未再次出现的错误日志。停止。仅凭一次观察提出假设,没有第二个数据点可供证伪;你会悄然积累听起来似乎合理的猜测,却无从判断哪个才对。
可以选择:
- 通过改变输入、时间、环境或操作顺序来寻找触发条件,直到能按需复现。
- 如果仍无法找到触发条件:添加埋点,让下次复现时能够诊断。按成本从低到高:编写能从日志/输入中捕获症状的失败测试;在疑似路径的边界添加探查日志;在应当满足不变量的地方添加断言。
可接受的阶段 0 退出条件:
- 「我通过执行 X 可以稳定复现。」
- 「我目前无法复现。已在 A、B、C 处添加埋点——下次出现时便能诊断,届时我会从阶段 1 继续。」
未满足上述任一条件前,不要越过阶段 0。针对一次性症状进行猜测,正是此阶段旨在避免的失误。
1. 理解
检查 git 状态,查找明显错误,并端到端阅读相关代码路径——从入口点开始,逐层追踪,直到故障位置。只抽查代码而不追踪路径,是常见的走马观花、凭猜测下结论的做法;请避免。大多数被称为「神秘」的 Bug,都能在尚未阅读的代码中找到端倪。
从错误消息、堆栈跟踪、日志和近期更改中收集观察结果。提出初步假设,每条假设都加上证据前缀(通常在验证前标注 [hypothesis])。
按照 reference/output-format.md 的要求,提供简要摘要。
2. 选择模式
请用户选择: 标准模式(简单 Bug 的默认模式)——通过对话逐步调试 Agent Team——基于相互竞争的假设进行对抗式调查 动态工作流——通过一个内联工作流脚本并行测试每条假设,以对抗方式交叉验证,并输出按优先级排序的假设清单
在以下任一情况下,必须使用 Agent Team 或动态工作流,不只是建议:
- 仍有 ≥ 3 条假设尚未排除
- Bug 无法稳定复现(阶段 0 通过添加埋点而非找到触发条件退出)
- 不同视角得出的证据相互矛盾
- 之前进行过调试尝试但未成功
- 故障路径跨越 ≥ 2 个组件或层(服务 ↔ 服务、UI ↔ 工作进程等)
如果堆栈跟踪指向明确的文件和行号,且只需阅读该文件就可能找到原因,则适合使用标准模式。
如果各条假设可以分别独立测试,优先使用动态工作流而非 Agent Team;如果调查人员必须随着彼此证据的出现作出回应,则优先使用 Agent Team。
3. 调查
match (mode) { Standard => { 以对话方式呈现理论,让用户引导方向 使用 reference/hypothesis-hygiene.md 中的台账,在任务列表中跟踪每个假设 如果仅阅读代码不足以得出结论,则继续沿 reference/investigation-ladder.md 深入调查 通过有针对性的调查逐步缩小范围;明确关闭假设后再继续 } Agent Team => { 针对相关视角分别启动调查员(reference/perspectives.md) 对抗式协议:调查员相互质疑对方的假设 每条论断都带有相同的词汇前缀 最有力的存续假设 = 可提升为 [demonstrated] 的候选项 } Dynamic Workflow => { 运行一个动态工作流:针对每个当前假设并行安排一名调查员,各自从相应视角收集证据(reference/perspectives.md) 然后进行交叉对抗核验,针对其他假设的证据逐一质疑每个存续假设 每条论断都带有相同的词汇前缀 工作流会返回按排名排列的假设台账,且不应用任何修复 — 继续之前先将其呈现给用户 } }
对于 Dynamic Workflow,这些说明即为启用方式:直接调用 Workflow 工具,并附上内联脚本。不要先加载工作流编写参考资料,也不要先通过 shell 命令拼装脚本 — 经由这两种方式绕行都会导致流程在启动前停滞。根据各阶段的工作内容选择 model 和 effort。机械性阶段 — 运行命令、收集或引用来源、将文本映射到固定架构 — 可以使用更小、更快的模型,并降低 effort。分析、写作以及评判其他 Agent 的工作,需要使用能力最强的模型。评判阶段使用的模型不能弱于被评判阶段所用的模型。不确定时,省略 model,让该阶段继承会话模型。
4. 查明根本原因
处理证据:
- 综合各个视角的信息。
- 根据支持证据对假设排序 — 参见 reference/hypothesis-hygiene.md 中的台账。
- 候选根本原因必须为
[demonstrated]— 通过切换某个条件,可以让错误出现或消失。如果最有力的候选项仍为[hypothesis]或[supported],则继续沿调查阶梯深入;不要将其提升为更高状态。 - 呈现根本原因,并提供证实该原因的切换实验,以及适用时的文件和行号。
5. 修复与验证
提出针对根本原因的最小修复方案。 请用户选择:应用修复 | 修改方案 | 跳过
应用更改、运行测试,并如实报告实际结果。
请用户选择:为此错误添加测试用例 | 检查其他地方是否存在相同模式 | 完成