Claude Code Plugins

Community-maintained marketplace

Feedback

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name impact-analysis
description コード変更の影響範囲分析スキル。変更が引き起こし得る影響を影響面(code/interface/data/external/config/runtime/security/observability)ごとに整理し、「どこをレビューし、何をテストし、何を観測すべきか」を根拠つきで提示する。 トリガー条件: - 「影響範囲を分析して」「この変更の影響は?」「どこまで波及する?」 - PRレビュー依頼時、リファクタ/仕様変更時 - 障害対応で「原因箇所の周辺影響」を確認したい時 注意: 変更の是非の最終判断は行わない。実行時にしか分からない挙動は推定と不確実性を提示する。

Impact Analysis(影響範囲分析)

コード変更(差分・設計変更・設定変更)が引き起こし得る影響を、影響面ごとに漏れにくく整理し、「どこをレビューし、何をテストし、何を観測すべきか」を根拠つきで提示する。

Non-Goals(このスキルがやらないこと)

  • 変更の是非の最終判断(意思決定は人間が行う)
  • 実行時にしか分からない挙動の断定(断定ではなく推定と不確実性を提示)
  • すべてのファイルを無差別に列挙(探索境界と優先度ルールに従う)

設計原則

原則 説明
Traceability 各impactに根拠(参照種別・該当箇所)を付ける
Uncertainty-aware 静的に断定できない影響は "推定" として出す
Surface-based 呼び出し関係+公開IF+データ+設定+外部+非機能を同列に扱う
Actionable テスト/観測/ロールアウトまで落とし込む(根拠とセット)
Bounded 探索の深さ/優先ルールを定義し、境界を明示

入力

impact_analysis_input:
  change_set:
    diff: optional<string>           # 可能ならdiff
    changed_files: optional<list>    # 変更ファイル一覧
    commit_or_pr: optional<string>   # コミットSHA or PR番号
    change_summary: optional<string> # 変更の説明

  target:                            # 指定があれば優先
    - file: optional<string>
      symbol: optional<string>
      kind: optional<function|class|method|module|endpoint|sql|config>
      location: optional<string>     # "path:line"

  context:
    language: optional<string>       # ts/go/java...
    framework: optional<string>      # express/nest/next...
    architecture: optional<string>   # monolith/microservices...
    entrypoints_hint: optional<list> # routes, handlers, jobs
    risk_profile: optional<string>   # "auth/payment" 等の重要領域
    constraints:
      max_graph_depth: optional<int> # default 3
      max_items_per_section: optional<int> # default 20

出力

詳細なスキーマは references/output-schema.md を参照。

出力構造概要

impact_analysis:
  meta:
    schema_version: "2.0"
    confidence:
      overall: 0.0-1.0
      notes: ["静的解析で追えないDIがある"]

  change_overview:
    summary: "<何が変わるか>"
    change_type: <behavior_change|refactor|bugfix|perf|security|config|data_migration|unknown>
    risk_domain_tags: ["auth", "session"]
    blast_radius_hint: <local|module|service|system|unknown>

  targets: [...]           # 変更対象のエンティティ

  impacts:
    code:                  # 呼び出し関係
      direct: [...]
      transitive: [...]
    interface:             # 公開IF・契約
      exports: [...]
      api_endpoints: [...]
    data:                  # データストア
      stores: [...]
    external:              # 外部依存
      dependencies: [...]
    config:                # 設定・環境
      items: [...]
    runtime_quality:       # 性能・可用性
      performance: [...]
      availability: [...]
    security_privacy:      # セキュリティ
      concerns: [...]

  risk_assessment:         # リスク評価(因子ベース)
    overall:
      level: <high|medium|low>
      score: 0-100
    applied_factors: [...]
    matrix: {high: N, medium: N, low: N}

  recommended_verification:  # 検証計画
    tests_to_run: [...]
    tests_to_add_or_update: [...]
    rollout_and_safety: [...]

  observation_plan:          # 観測計画
    logs: [...]
    metrics: [...]
    traces: [...]

  unknowns_and_assumptions:  # 不確実性
    unknowns: [...]
    assumptions: [...]
    suggested_followups: [...]

影響面(Impact Surfaces)

詳細は references/impact-surfaces.md を参照。

8つの影響面

影響面 説明 分析対象
code 呼び出し関係 caller/callee/importer/override/implements
interface 公開IF・契約 export/API/イベント/型
data データストア DB/キャッシュ/ファイル
external 外部依存 外部API/SaaS/メッセージング
config 設定・環境 env/feature flag/権限/timeout
runtime_quality 性能・可用性 レイテンシ/障害時挙動
security_privacy セキュリティ 認証/認可/PII/インジェクション
observability 観測性 ログ/メトリクス/トレース

リスク評価

詳細は references/risk-scoring.md を参照。

スコアリング因子

因子 重み 説明
security_critical_path 25 認証/認可/決済等のクリティカルパス
data_write 20 データ書き込み・更新・削除
public_interface_change 15 公開APIや型の変更
fanout_large 10 多数の呼び出し元がある
low_test_coverage 15 テストカバレッジが低い
unknowns_present 15 静的解析で追えない経路がある

リスクレベル

score level
70-100 high
40-69 medium
0-39 low

処理フロー

Step 1: 入力の正規化

diff/変更ファイル/説明/ターゲットを統合し「変更集合」を作る。

Step 2: ターゲット抽出

変更箇所からシンボル・公開IF・設定キー・SQLを候補化。

Step 3: 依存グラフ探索(複線)

  • 呼び出しグラフ(caller/callee)
  • import/型依存(type_depends)
  • ルーティング・ミドルウェア・DIなど"ランタイム経路"の推定

Step 4: 副作用・データフロー分析

DB操作、キャッシュ、メッセージング、外部API、ファイルI/O。

Step 5: 影響面ごとに分類

8つの影響面(code/interface/data/external/config/runtime/security/observability)に分類。

Step 6: 根拠と確度付与

各impactに根拠(evidence)と確度(confidence)を付与。断定可能か推定かを明確化。

Step 7: リスク評価

定義済み因子でスコア化し、上位因子を説明可能な形で出す。

Step 8: 検証計画

テスト(層・優先度・目的)、ロールアウト安全策、観測プランへ接続。

Step 9: 探索境界の明示

深さ上限、列挙上限、解析不能領域(unknowns)を必ず出す。

根拠(Evidence)の記載

各impactには必ず根拠を付与する。

impact:
  ref: "src/middleware/auth.ts:45"
  relation: "caller"
  risk_level: "high"
  confidence: 0.85
  evidence:
    - "authenticateUser() を直接呼び出している"
    - "import { authenticateUser } from '../auth/login'"

関係タイプ(relation)

relation 説明
caller 対象を呼び出している
callee 対象から呼び出されている
importer 対象をimportしている
override 対象をオーバーライドしている
implements 対象インターフェースを実装
type_depends 型として依存
route_maps_to ルーティングで対応
di_binds_to DIでバインド

不確実性の明示

静的解析で追えない影響は必ずunknownsに記載。

unknowns_and_assumptions:
  unknowns:
    - "動的ディスパッチによる呼び出し経路が追跡不能"
    - "文字列ベースのルーティングで静的解析不可"
    - "設定値依存の分岐は実行時まで不明"

  assumptions:
    - "DIコンテナの設定は本番と同一と仮定"
    - "Feature Flagは全てONと仮定"

  suggested_followups:
    - "DIバインディング設定の確認"
    - "実行時ログで呼び出し経路を確認"

ガードレール

  1. 根拠なしのimpactを出さない: 必ずevidenceを付与
  2. 過剰確信の禁止: 静的解析の限界を認め、confidence/unknownsで表現
  3. 探索境界の明示: max_graph_depthを超えた探索は行わない
  4. 網羅より精度: 大量列挙より、根拠のある影響を優先

使用例

User: この変更の影響範囲を分析して
[diff: src/auth/login.ts の修正]

Claude:
## Impact Analysis

### Change Overview
- summary: "認証関数のnullチェック追加"
- change_type: bugfix
- risk_domain_tags: ["auth", "session"]
- blast_radius_hint: module

### Targets
| file | symbol | kind | role |
|------|--------|------|------|
| src/auth/login.ts | authenticateUser | function | modified |

### Impacts

#### Code (Direct)
| ref | relation | risk | confidence | evidence |
|-----|----------|------|------------|----------|
| src/middleware/auth.ts:45 | caller | high | 0.90 | authenticateUser()を直接呼び出し |
| src/api/session.ts:23 | caller | medium | 0.85 | ログイン時にセッション作成 |

#### Data
| store | entity | operation | risk | evidence |
|-------|--------|-----------|------|----------|
| postgres | users | read | medium | SELECT FROM users |
| redis | sessions | write | high | セッション書き込み |

### Risk Assessment
- overall: medium (score: 55)
- applied_factors:
  - security_critical_path: 25 (認証フロー)
  - data_write: 20 (セッション書き込み)
  - unknowns_present: 10 (DI経路)

### Recommended Verification
| test | layer | priority | purpose |
|------|-------|----------|---------|
| login.test.ts | unit | p0 | nullケースのカバー |
| auth.integration.ts | integration | p0 | E2Eログインフロー |

### Unknowns
- "DIコンテナ経由の呼び出しは静的解析不可"
- "Feature Flag状態による分岐は実行時依存"

リファレンス