关于 reproduce-bug
reproduce-bug 是用于在本地基线检出版本中测试已报告错误的技能。它将构建和复现证据记录为结构化包,并区分已复现、未复现和受阻结果。
主要功能
- 01构建项目基线
- 02编辑前测试指定输入
- 03记录进程输出与耗时
- 04打包 PoC、收据和结果记录
适用场景
- 01根据 PoC 复现运行时错误
- 02依据诊断信息验证编译器失败
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trailofbits/ skills --skill reproduce-bug安装后在 Claude Code 中输入/reproduce-bug确认已加载。
详细介绍
重现 Bug
适用场景
当你要使用一份 finding.json 和本地基线检出,执行 patching-bugs 的重现步骤时使用。请阅读记录约定。
执行目标命令前,请遵循其项目指南。
不适用场景
不要用于发现 Bug、修补 Bug,或验证无法在本地运行的声明。如果构建或环境无法验证该声明,请报告阻碍因素。
流程
-
从记录约定中选择
failure_type。使用项目自身的命令构建当前基线。在进行任何编辑前,使用计划中的限定输入进行验证,并保留观察结果,包括有效的对照样例。保存原始 stdout、stderr、退出状态和耗时。如果有可信证据表明问题未出现,请报告not_reproduced;如果设置或观察结果不可靠,请报告blocked。 -
运行时:使用 PoC 验证已构建的
target_artifact,并按照约定记录PATCH_LOADED,然后在断言之前立即输出PATCH_REACHED。Bug 存在时以非零状态退出,否则以零状态退出;设置阶段崩溃不具结论性。 编译:记录编译器调用失败时目标expected_diagnostic;使用空的poc_argv和 nulltarget_artifact。 -
将任何未更改的 PoC 源代码保存到
reproduce/poc/,并将原始凭据保存到reproduce/receipts/。编写reproduce.json,其中包含基线提交、命令参数数组、制品路径、观察结果、结论和你的 Agent 身份。根据结果将finding.status设为reproduced或not_reproduced。如果重现被blocked,请将finding.status保持为hypothesis。
{
"schema_version": 1,
"failure_type": "runtime",
"outcome": "reproduced",
"baseline_commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"build_argv": ["python", "build.py"],
"poc_argv": ["python", "poc.py"],
"target_artifact": "dist/app.py",
"observed": "The PoC wrote outside uploads after PATCH_REACHED.",
"blocker": null,
"agent": "reproducer-1"
}
- 使用记录辅助工具为完整的
reproduce/目录(包括 PoC 和记录)生成清单:运行uv run --no-project <script> manifest <reproduce-step-dir>。然后在交接前检查记录。如果构建或设置导致无法有效运行,请根据实际故障说明blocked。
应拒绝的借口
| 走捷径 | 必须采取的操作 |
|---|---|
| 单元测试模拟了 Bug。 | 验证目标编译器或已构建的运行时制品。 |
| 非零退出状态证明重现成功。 | 必须有目标诊断,或运行时标记和断言。 |