impact-check について
impact-checkは、関数、クラス、変数、設定キーを変更する前に、コードベース内の依存関係を調べるスキルです。コードは変更せず、直接・間接参照やテスト参照、未文書化のシンボルを報告します。
主な機能
- 01インポート、呼び出し、参照を検索
- 02依存を直接・間接に分類
- 03テスト参照を分けて列挙
- 04ファイルパスと行番号を記録
- 05Wiki未記載のシンボルを指摘
- 06レポート草案を出力する読み取り専用分析
活用シーン
- 01共有ユーティリティ変更前に呼び出し元を確認
- 02シンボルの改名・削除前に依存先を追跡
- 03変更後に更新が必要なテストを特定
- 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 の信頼できる情報源):
- 変更する正確なシンボルを特定します。
- コードベース全体を検索し、各シンボルへのすべてのインポート、呼び出し、参照を探します。
- 各参照について、ファイルパス、行番号、シンボルの使用方法を記録します。
- 各参照を分類します。
- Direct — シンボル自体を呼び出す、またはインポートする
- Indirect — シンボルが生成する動作に依存する(例:その出力を読み取る)
- すべての参照を報告します。ファイル外で参照が見つからなかった場合は、明記します。
- テストファイル内の参照は別途示します。更新しないと、誤った安心感につながります。
- シンボルがまだ
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のような表示のみのモード)に限り、スキップします。
コメント
Markdown 対応