blast-radius について
Blast Radius Analysisは、コード変更の影響を評価するスキルです。gauntletのグラフを利用し、利用できない場合はsemまたは手動追跡に切り替え、テスト不足やセキュリティ上の懸念を含めて影響箇所をリスク順に整理します。
主な機能
- 01コードグラフによる変更影響の分析
- 02semまたは手動追跡への切り替え
- 03影響を受けるノードのリスク順表示
- 04影響を受ける未テスト関数の特定
- 05全体リスクと推奨アクションの提示
活用シーン
- 01コード変更のマージ前に影響を評価
- 02差分の影響を受ける未テスト関数の特定
- 03セキュリティ関連の変更を優先的にレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ athola/ claude-night-market --skill blast-radiusインストール後、Claude Code で/blast-radiusを入力して読み込まれたか確認します。
詳細
影響範囲分析
コードナレッジグラフを使用して、現在のコード変更の影響を分析します。
使用しない場合
- 変更されたコードの欠陥を確認する場合(
pensive:bug-reviewを使用) - コードグラフが存在しない、または古い場合(
gauntlet:graph-buildを使用)
前提条件
このスキルでは、グラフデータに gauntlet プラグインが必要です。利用可能かどうかを確認してください。
GRAPH_QUERY=$(find ~/.claude/plugins -name "graph_query.py" -path "*/gauntlet/*" 2>/dev/null | head -1)
gauntlet がインストールされていない場合(GRAPH_QUERY が空の場合):
git diff と grep を使用してインポートと呼び出し箇所を追跡し、手動で影響を分析します。グラフを使う手順は省略し、手動モードでステップ 3 に進みます。
gauntlet はインストールされているが、graph.db が存在しない場合:
ユーザーに「まず /gauntlet-graph build を実行してください」と伝えます。
手順
-
現在の変更を表示する:
git diff --statを実行し、変更されたファイルをユーザーに示します。 -
影響分析を実行する(gauntlet が必要です):
python3 "$GRAPH_QUERY" \ --action impact --base-ref HEAD --depth 2フォールバック第 1 段階(sem は利用可能、gauntlet はなし): ファイル間の依存関係を追跡するには、sem を使用します。
if command -v sem &>/dev/null; then sem impact --json <changed-file> fiこれにより、ファイル名の照合ではなく、実際の関数レベルの依存関係を追跡します。検出パターンについては、
leyline:sem-integrationを参照してください。フォールバック第 2 段階(sem も gauntlet もなし):変更された関数の呼び出し元を rg(または grep)で追跡します。
# Prefer rg for speed; fall back to grep if command -v rg &>/dev/null; then git diff --name-only HEAD | while read f; do stem="${f%.*}"; stem="${stem##*/}" [ -z "$stem" ] && continue # skip dotfiles (.gitignore etc.) rg -l "$stem" . 2>/dev/null done | sort -u else git diff --name-only HEAD | while read f; do stem="${f%.*}"; stem="${stem##*/}" [ -z "$stem" ] && continue # skip dotfiles (.gitignore etc.) grep -rl "$stem" . 2>/dev/null done | sort -u fi注:これはすべてのファイル形式を検索します。Python のみを使用するプロジェクトでは、誤検出を減らすため、
rgに--type pyを追加するか、grepに--include="*.py"を追加してください。 -
結果を優先度順に表示する:
出力を次の表形式にします。
Risk | Node | File | Anchor | Reason 0.85 | auth.py::verify_token | auth.py:45 | `def verify_token(token):` | untested, security 0.62 | db.py::execute_query | db.py:112 | `cursor.execute(query, params)` | high fan-in 0.41 | api.py::handle_request | api.py:78 | `def handle_request(req):` | flow participantAnchor列には、引用した行にあるソーステキストがそのまま記載されます。 これにより、レビュー担当者はツールを再実行せずに指摘内容を確認できます。 -
テストされていない関数を強調表示する:テストカバレッジがない(TESTED_BY エッジがない)影響対象の関数を一覧表示します。
-
全体的なリスクを表示する:最大リスクスコアに基づいて、全体的なリスクレベル(low/medium/high)を表示します。
-
対応策を提案する:
- 高リスクノードの場合:「マージ前にテストの追加を検討してください」
- セキュリティ上重要なノードの場合:「認証および認可のロジックを慎重に確認してください」
- ファンインが多いノードの場合:「この変更は多くの呼び出し元に影響します。後方互換性を確認してください」
指摘内容の根拠を確認する(blast-radius:findings-verified)
指摘内容を .review/findings.json に書き込み、引用検証ツール(Skill(imbue:review-core) のステップ 5)を実行します。検証ツールが却下したものは削除するか、UNVERIFIED とラベル付けしてください。
完了条件
- 結果の表に、影響を受けるすべてのノードと
File(file:line)、およびソーステキストそのままのAnchor列が記載されている。 - 最大リスクスコアに基づく全体的なリスクレベル(low/medium/high)が表示されている。
- 報告されたすべての指摘に、
citation_verifier.py(終了コード0)で確認済みのLocationとソーステキストそのままのAnchorが付いているか、未検証の指摘が削除またはUNVERIFIEDとラベル付けされている。
リスクスコアリングモデル
5 つの加重要因(合計の上限は 1.0):
| 要因 | 重み | 意味 |
|---|---|---|
| テスト不足 | 0.30 | テストカバレッジがない |
| セキュリティ | 0.20 | 認証/暗号/SQL のキーワード |
| フローへの関与 | 0.25 | 実行フローの一部である |
| モジュール間依存 | 0.15 | 他のモジュールから呼び出されている |
| 呼び出し元の数 | 0.10 | ファンインの多い関数 |