mcpField
R
reproduce-bug

reproduce-bug

github.com/trailofbitsテスト・品質7.9k216 回インストール2 日前に更新
リポジトリ

reproduce-bug について

reproduce-bug は、ローカルのベースラインチェックアウトで報告されたバグを検証するスキルです。ビルドと再現の証拠を構造化パッケージに記録し、再現、未再現、ブロックの結果を区別します。

主な機能

  1. 01プロジェクトのベースラインをビルド
  2. 02編集前に対象入力を実行
  3. 03プロセス出力と所要時間を記録
  4. 04PoC、レシート、結果記録をパッケージ化

活用シーン

  1. 01PoCを使ったランタイムバグの再現
  2. 02診断情報によるコンパイラ失敗の検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/trailofbits/skills --skill reproduce-bug

インストール後、Claude Code で/reproduce-bugを入力して読み込まれたか確認します。

詳細

バグの再現

使用する場面

finding.json とローカルのベースラインチェックアウトを使って、patching-bugs の再現手順を実行する場合に使用します。レコードの仕様を確認してください。対象コマンドを実行する前に、プロジェクトのガイダンスに従ってください。

使用しない場面

バグの発見、パッチの適用、またはローカルで検証できない主張には使用しないでください。ビルドまたは環境で主張を検証できない場合は、ブロッカーとして報告してください。

手順

  1. レコードの仕様から failure_type を選択します。プロジェクト独自のコマンドで現在のベースラインをビルドします。編集を行う前に、予定している対象範囲の入力を検証し、有効な対照例を含む観察結果を保持します。標準出力、標準エラー、終了ステータス、実行時間を生のまま保存します。信頼できる証拠があり、その動作が確認されない場合は not_reproduced を報告します。セットアップまたは観察結果の信頼性が低い場合は blocked を報告します。

  2. 実行時:ビルドした target_artifact を、仕様で定義されている PATCH_LOADED を記録し、アサーションの直前に PATCH_REACHED を出力する PoC で検証します。バグがある場合はゼロ以外、それ以外の場合はゼロを返します。セットアップ時のクラッシュでは結論を出せません。 コンパイル時:コンパイラーの呼び出しが失敗した際の、対象の expected_diagnostic を記録します。poc_argv は空、target_artifact は null にします。

  3. 変更していない 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"
}
  1. レコードヘルパーを使用して、PoC とレコードを含む reproduce/ ディレクトリ全体をマニフェスト化します。uv run --no-project <script> manifest <reproduce-step-dir> を実行します。その後、引き継ぎの前にレコードを確認してください。ビルドまたはセットアップによって有効な実行が妨げられた場合は、実際に発生した失敗を添えて blocked と記載します。

却下すべき誤った理由付け

近道必要な対応
単体テストでバグを模倣します。対象のコンパイラーまたはビルド済みの実行時アーティファクトを検証します。
終了コードがゼロ以外なら再現したことになります。対象の診断、または実行時マーカーとアサーションを必須とします。

コメント