reproduce-bug について
reproduce-bug は、ローカルのベースラインチェックアウトで報告されたバグを検証するスキルです。ビルドと再現の証拠を構造化パッケージに記録し、再現、未再現、ブロックの結果を区別します。
主な機能
- 01プロジェクトのベースラインをビルド
- 02編集前に対象入力を実行
- 03プロセス出力と所要時間を記録
- 04PoC、レシート、結果記録をパッケージ化
活用シーン
- 01PoCを使ったランタイムバグの再現
- 02診断情報によるコンパイラ失敗の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trailofbits/ skills --skill reproduce-bugインストール後、Claude Code で/reproduce-bugを入力して読み込まれたか確認します。
詳細
バグの再現
使用する場面
finding.json とローカルのベースラインチェックアウトを使って、patching-bugs の再現手順を実行する場合に使用します。レコードの仕様を確認してください。対象コマンドを実行する前に、プロジェクトのガイダンスに従ってください。
使用しない場面
バグの発見、パッチの適用、またはローカルで検証できない主張には使用しないでください。ビルドまたは環境で主張を検証できない場合は、ブロッカーとして報告してください。
手順
-
レコードの仕様から
failure_typeを選択します。プロジェクト独自のコマンドで現在のベースラインをビルドします。編集を行う前に、予定している対象範囲の入力を検証し、有効な対照例を含む観察結果を保持します。標準出力、標準エラー、終了ステータス、実行時間を生のまま保存します。信頼できる証拠があり、その動作が確認されない場合はnot_reproducedを報告します。セットアップまたは観察結果の信頼性が低い場合はblockedを報告します。 -
実行時:ビルドした
target_artifactを、仕様で定義されているPATCH_LOADEDを記録し、アサーションの直前にPATCH_REACHEDを出力する PoC で検証します。バグがある場合はゼロ以外、それ以外の場合はゼロを返します。セットアップ時のクラッシュでは結論を出せません。 コンパイル時:コンパイラーの呼び出しが失敗した際の、対象のexpected_diagnosticを記録します。poc_argvは空、target_artifactは null にします。 -
変更していない PoC ソースがあれば
reproduce/poc/に、生の実行記録はreproduce/receipts/に保存します。ベースラインのコミット、コマンド引数の配列、アーティファクトのパス、観察結果、結果、エージェントの識別情報を含むreproduce.jsonを作成します。結果に基づいて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"
}
- レコードヘルパーを使用して、PoC とレコードを含む
reproduce/ディレクトリ全体をマニフェスト化します。uv run --no-project <script> manifest <reproduce-step-dir>を実行します。その後、引き継ぎの前にレコードを確認してください。ビルドまたはセットアップによって有効な実行が妨げられた場合は、実際に発生した失敗を添えてblockedと記載します。
却下すべき誤った理由付け
| 近道 | 必要な対応 |
|---|---|
| 単体テストでバグを模倣します。 | 対象のコンパイラーまたはビルド済みの実行時アーティファクトを検証します。 |
| 終了コードがゼロ以外なら再現したことになります。 | 対象の診断、または実行時マーカーとアサーションを必須とします。 |