用途
bugfix 是一个自主端到端缺陷修复技能,用于处理缺陷报告、失败测试、堆栈跟踪或 CI 失败等需要诊断与修复的任务。其目标是:从证据出发诊断问题、定位根因、实施最小化修复、验证并提交。
主要能力
- 自主诊断:不轻易向用户索要更多信息,除非缺陷描述完全含糊不清,否则应使用工具自行查找。
- 根因分类:在写任何代码前先判定问题类型,并采用对应修复方式。
- 代码缺陷:逻辑错误、错误查询、错误比较——修复实现。
- 测试缺陷:期望与文档化契约矛盾——修复测试并解释为何原测试有误。
- Mock 接线:未遵循 mockReset: true 模式、Mock 状态陈旧——使用 CLAUDE.md 中的正确 Mock 模式。
- 类型错误:TypeScript 编译失败——修复类型,而非测试。
- 导入错误:包路径错误、缺少导出——修复导入解析。
- 若属于 Mock 接线问题,需先阅读 CLAUDE.md 中的 Mock 模式,其中包含三种不同模式(转发、对象袋、基于计数器的序列)。
- 证据优先思维:先收集再假设。
- 运行失败测试,查看确切错误输出而非仅看描述。
- 阅读失败测试,理解其期望。
- 阅读被测源码。
- 使用 git log --oneline -10 -- <file> 查看该文件近期是否被改动。
- 对于运行时错误:检查日志、路由/插件/服务代码。
- 在写代码前明确陈述假设,例如:“测试失败是因为 X,由 Y 导致。”
使用方式
技能提供以下脚本:
bash scripts/collect-bugfix-context.sh apps/api/src/tests/routes/auth.test.ts
bash scripts/run-targeted-test.sh apps/api/src/tests/routes/auth.test.ts
bash scripts/run-targeted-test.sh apps/api/src/tests/routes/auth.test.ts "returns 500"
参数 $ARGUMENTS 可接受:错误消息、失败测试路径、CI 日志 URL 或复现步骤。若为空,则询问错误或失败测试名称。
验证顺序:
- 运行特定失败测试——必须通过。
- 运行完整工作区测试套件——不得出现新失败。
- 对受影响工作区运行类型检查(npx tsc --noEmit)。
- 使用 git diff --name-only 验证每个改动文件都与该缺陷相关;无关改动应还原。
提交格式:
fix(scope): what was broken and how it was fixed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
适用场景
- 收到缺陷报告、失败测试、堆栈跟踪或 CI 失败,需要诊断与修复。
- 需要自主定位根因并实施最小化修复的自动化流程。
限制与约束
- 除非缺陷描述完全含糊不清,否则绝不向用户索要更多信息。
- 修复缺陷时绝不重构无关代码——范围蔓延会破坏回归隔离。
- 修复目标缺陷时绝不顺手修复注意到的其他缺陷——应新建任务。
- 绝不使用 git add -A——只暂存自己改动的文件。
- 修复后绝不跳过运行完整工作区测试套件——目标测试通过不代表没有回归。
- 在受影响工作区类型检查通过前绝不提交。
中止条件(停下并询问用户):
- 缺陷位于安全敏感区域(认证、RBAC、IDOR)——先确认修复方案。
- 修复需要改动超过 5 个文件——可能是架构问题。
- 根因需要变更整个测试套件的 Mock 策略。