implement-patch について
独立検証済みの問題を修正するためのスキルです。回帰テスト、不変条件に沿った変更、テスト結果の比較を導き、プッシュや PR 作成をせずにローカルコミットを記録します。
主な機能
- 01編集前に修正記録を検証
- 02修正前に失敗する回帰テストを追加
- 03指定範囲内で不変条件を修正
- 04プロジェクトのテストを実行・比較
- 05各変種を記録してローカルコミットを作成
活用シーン
- 01検証済みの不具合を修正
- 02回帰テストが修正前に失敗することを確認
- 03修正済み・未修正の変種を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trailofbits/ skills --skill implement-patchインストール後、Claude Code で/implement-patchを入力して読み込まれたか確認します。
詳細
パッチの実装
使用するタイミング
独立した検証で1つの主張が確認された後に使用します。 記録の仕様をお読みください。 対象のコマンドを実行する前に、そのプロジェクトのガイダンスに従ってください。
使用しないタイミング
推測に基づくバグ探し、パッチが完成したことの証明、またはローカルのコンパイラーやランタイムで実行できない変更には使用しないでください。
手順
-
編集する前に、記録バリデーターを使って
uv run --no-project <script> check --before-repair <run-dir>を実行します。このチェックに失敗した場合は、処理を中止し、そのエラーを返してINCONCLUSIVEレポートとします。このゲートでは、 使用可能なケース計画と一貫した試行回数を含むfinding.repair_scopeが必要です。 宣言されたスコープを修正内容の指示として使用します。破られている 不変条件を特定し、その境界内で同じ違反の事例をすべて探します。意図された動作を維持するために必要な場合のみ、脅威モデルを参照してください。これはゲートではありません。 -
プロジェクトの既存テストスイートを実行し、結果を記録します。報告されたバグと修正対象の各バリアントについて、ベースラインで失敗する回帰テストを作成します。失敗を確認します。修正内容の指示の範囲内で、不変条件を満たすための最小限でレビュー可能な変更を行います。
-
回帰テストと既存のテストスイート全体を再度実行します。修正前後の失敗を比較します。新たな失敗を修正するか、記録を根拠に既存の失敗であることを説明します。
-
各バリアントを、理由を添えて
fixedまたはnot_fixedとして記録します。ローカルコミットを正確に1つ作成します。プッシュもPRの作成もしないでください。ベースラインから、製品コードの変更をpatch/attempt-N/のfix.patchに、テストの変更をtests.patchに記録します。 -
2つのコミットSHA、変更したファイル数と行数、バリアント、テストスイートの結果、エージェントの識別情報を含む
patch.jsonを作成します。試行でコミットが作成されなかった場合は、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"
}
拒否すべき合理化
| 近道 | 必要な対応 |
|---|---|
| 報告された行だけが重要です。 | 同じ不変条件違反を探します。 |
| 最小限とは行数が最も少ないことです。 | 不変条件のレベルで、最小限のレビュー可能な修正を行います。 |
| パッチ適用後にテストが通ります。 | 回帰テストが適用前に失敗したことを示します。 |