mcpField
I
implement-patch

implement-patch

github.com/trailofbits开发7.9k168 次安装今天更新
代码仓库

关于 implement-patch

用于在独立验证缺陷后实施修复的技能,指导编写回归测试、修正不变量并比较测试结果;要求记录本地提交,不推送或创建 PR。

主要功能

  1. 01编辑前验证修复记录
  2. 02添加基线版本失败的回归测试
  3. 03在声明范围内修正不变量
  4. 04运行并比较项目测试套件
  5. 05记录变体并创建本地提交

适用场景

  1. 01实施已验证缺陷的修复
  2. 02确认回归测试在修复前失败
  3. 03记录已修复与未修复的变体

安装

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

$npx skills add https://github.com/trailofbits/skills --skill implement-patch

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

详细介绍

实施补丁

适用场景

在独立验证确认某项声明后使用。阅读 记录约定。 运行目标命令前,请遵循其中的项目指南。

不适用场景

不要用于推测性地查找 Bug、证明补丁已完成,或处理无法通过本地编译器或运行时验证的更改。

流程

  1. 编辑前,运行 uv run --no-project <script> check --before-repair <run-dir> 并使用记录验证器。如果检查失败, 请停止并返回错误,以便生成 INCONCLUSIVE 报告。此门禁要求提供 finding.repair_scope,其中包含可用的案例计划和一致的尝试次数。 将声明的范围用作修复说明。找出被破坏的不变量,并在其边界内查找所有 相同违规的实例。阅读威胁模型仅用于保留预期行为;它 不是门禁条件。

  2. 运行项目现有的测试套件并记录结果。编写一个回归测试,确保针对所述 Bug 及任何已修复变体,该测试在基线上会失败。观察失败情况。在修复说明范围内, 以最小且便于审查的更改修复该不变量。

  3. 再次运行回归测试和完整的现有测试套件。比较修复前后的失败情况。修复新增的 失败,或根据凭据解释预先存在的失败。

  4. 将每个变体记录为 fixed 或 not_fixed,并说明原因。只创建一个本地提交。 切勿推送或创建 PR。从基线开始,在 patch/attempt-N/ 中为生产更改编写 fix.patch,为测试更改编写 tests.patch。

  5. 在 patch.json 中写入两个提交 SHA、更改的文件数和行数、变体、测试套件结果 以及 Agent 身份。如果此次尝试未生成提交,记录 patch_commit: null 并将其 作为失败返回。使用以下命令清单化整个尝试目录,包括两个补丁文件和记录: uv run --no-project <script> manifest <patch-attempt-dir>。使用 记录验证器检查。

    补丁记录架构:

{
  "schema_version": 1,
  "attempt": 1,
  "baseline_commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "patch_commit": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "files_changed": 2,
  "lines_added": 3,
  "lines_removed": 1,
  "variants": [],
  "suite_before": {"command": "pytest", "passed": 9, "failed": 1, "skipped": 0},
  "suite_after": {"command": "pytest", "passed": 10, "failed": 0, "skipped": 0},
  "agent": "patcher-1"
}

应当拒绝的借口

捷径必须采取的行动
只有报告中指出的那一行才重要。搜索相同的不变量违规。
最小化意味着行数最少。以最小且便于审查的方式修复不变量。
补丁应用后测试通过了。证明回归测试在应用补丁前失败。

评论

支持 Markdown