mcpField
I
impact-check

impact-check

github.com/rheinmir開発10265 回インストール2 週間前に更新
リポジトリ

impact-check について

impact-checkは、関数、クラス、変数、設定キーを変更する前に、コードベース内の依存関係を調べるスキルです。コードは変更せず、直接・間接参照やテスト参照、未文書化のシンボルを報告します。

主な機能

  1. 01インポート、呼び出し、参照を検索
  2. 02依存を直接・間接に分類
  3. 03テスト参照を分けて列挙
  4. 04ファイルパスと行番号を記録
  5. 05Wiki未記載のシンボルを指摘
  6. 06レポート草案を出力する読み取り専用分析

活用シーン

  1. 01共有ユーティリティ変更前に呼び出し元を確認
  2. 02シンボルの改名・削除前に依存先を追跡
  3. 03変更後に更新が必要なテストを特定
  4. 04レビュー時に未文書化のシンボルを発見

インストール

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

$npx skills add https://github.com/rheinmir/setup --skill impact-check

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

詳細

スキル:impact-check

概要

目的とコンテキスト
  • 目的: シンボル(関数、クラス、変数、設定キー)を変更する前に、依存先をすべて洗い出し、呼び出し元に予期しない影響が及ばないようにします。
  • 使用するタイミング:
    • 共有ユーティリティ、基底クラス、または広くインポートされているモジュールを編集する前
    • 何かを名前変更または削除する前
    • safe-change または propose の最初のステップとして
  • 対象外: コードは変更しません(出力のみ)。ドキュメント化されていないシンボルの wiki ページは作成せず、ギャップのみを記録します。
メンタルモデル

シンボル → すべての参照(インポート · 呼び出し · 出力の読み取り)→ Direct / Indirect → テスト参照を分ける → レポート + wiki のギャップ

入出力の契約
項目必須?意味
入力変更対象のシンボルはい関数、クラス、変数、設定キー
出力参照の一覧はいファイルパス、行番号、使用方法、Direct / Indirect のラベル。ファイル外の参照がゼロの場合は明記
出力テスト参照あれば必須別途一覧表示
出力wiki のギャップあればwiki/ に記載されていないシンボル
出力レポートのドラフト必須(成果物がゼロの場合を除く)llmwiki/wiki/sources/draft/DDMMYY-<ten>.md
ルールと機能
  • RULE-01(必須):このスキルの実行中は何も変更しません。出力のみです。
  • RULE-02(必須):コードベースが大きい場合は、シンボル名とファイルパターン(例:すべての *.ts ファイル)の両方で検索します。
  • RULE-03(必須):直接の呼び出し元が見つからないことを理由に、シンボルが未使用だと判断してはいけません。間接的な依存先も確認します。
  • 機能:コードベース全体の読み取り・検索(テキスト検索またはコードグラフ)、ドラフトレポートの記録、wiki のインデックス/ログの更新。
失敗時の境界
  • シンボルが曖昧(同じ名前の定義が複数ある)→ 正確なシンボルを確認します。
  • ファイル外の参照がゼロ → 成功。明確に「ファイル外の参照は 0 件」と伝えます。
  • すべてを検索できない(コードベースが大きすぎる、検索エラー)→ 部分完了。スキャンした範囲を記録します。

手順

メインワークフロー
ステップ種類入力アクション出力/終了条件失敗時/次の処理
W01判断修正依頼正確なシンボルを特定シンボルの一覧曖昧 → 確認
W02決定的シンボルコードベース全体からすべてのインポート/呼び出し/参照を検索ヒット大規模 → 名前 + ファイルパターン
W03決定的ヒットファイルパス、行、使用方法を記録参照テーブル—
W04判断参照テーブルDirect / Indirect に分類ラベル付けされた参照—
W05決定的参照テスト参照を分け、ゼロ件の場合は明記して報告レポート—
W06決定的wiki/シンボルが未ドキュメントの場合はギャップを記録(エントリーは作成しない)ギャップの記録—
W07効果結果レポートのドラフトを出力ドラフト + インデックス + ログ成果物がゼロ → スキップ

各ステップの詳細(W01–W07 の信頼できる情報源):

  1. 変更する正確なシンボルを特定します。
  2. コードベース全体を検索し、各シンボルへのすべてのインポート、呼び出し、参照を探します。
  3. 各参照について、ファイルパス、行番号、シンボルの使用方法を記録します。
  4. 各参照を分類します。
    • Direct — シンボル自体を呼び出す、またはインポートする
    • Indirect — シンボルが生成する動作に依存する(例:その出力を読み取る)
  5. すべての参照を報告します。ファイル外で参照が見つからなかった場合は、明記します。
  6. テストファイル内の参照は別途示します。更新しないと、誤った安心感につながります。
  7. シンボルがまだ wiki/ に記載されていない場合は、ギャップとして記録します。ここではエントリーを作成しません。wiki エントリーはコードのコミット後にのみ作成します(verify-before-commit を参照)。
分岐
ID種類条件動作スキップ/失敗合流先
B01必須条件付きコードベースが大きいシンボル名とファイルパターンの両方で検索(RULE-02)—W03
B02必須条件付きテストファイル内に参照がある別途一覧表示し、更新が必要であることを警告ない場合 → スキップW06
検証と停止条件

すべてのヒットにパス、行番号、Direct / Indirect のラベルが付いた時点で停止します。直接の呼び出し元が見つからないだけで「未使用」と結論づけてはいけません(RULE-03)。コードファイルは一切変更しません。

例
  • 成功例: src/utils/date.ts の formatDate(d) の署名を変更 → 12 件の直接参照(import)+2 件の間接参照(出力文字列を読み取ってパース)+個別に列挙されたテスト参照 3 件 → レポート+下書き DDMMYY-impact-format-date.md。
  • 境界/失敗例: 設定キー retry_limit に直接の呼び出し元はないものの、動的な config[key] 経由で読み取られる → 間接参照に分類し、「未使用」とは報告しない。すべてスキャンできない場合は、対象範囲を添えて部分的であることを報告する。
成果物 — レポートの出力

スキルの主要なタスクがすべて完了したら、wiki に提案の下書きを作成します。

手順

1. ファイル名を作成します:

  • 形式:DDMMYY-<ten>.md
  • DDMMYY = 今日の日付(例:2026 年 6 月 2 日の場合は 020626)
  • <ten> = 実施内容を要約した 2~4 語のケバブケース(例:landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)

2. llmwiki/wiki/sources/draft/DDMMYY-<ten>.md に書き込みます:

---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---

# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD

## What
<One sentence — what this skill invocation produced or decided>

## Output
<Key artefacts, files created/modified, or decisions made>

## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |

## Notes
- Invoked via: `/<skill-name>` skill

## Origin
- **Draft:** `wiki/sources/draft/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_

3. wiki のインデックスとログを更新します:

  • llmwiki/wiki/index.md — 行を 1 つ追加します:| [DDMMYY-<ten>](sources/draft/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |
  • llmwiki/wiki/log.md — 次の行を追加します:## YYYY-MM-DD — <skill-name> — <ten>

スキルが成果物も決定事項も一切生成しない場合(例:/caveman-stats のような表示のみのモード)に限り、スキップします。

コメント