mcpField
D
dead-code

dead-code

github.com/terrylica開発283 回インストール1 日前に更新
リポジトリ

dead-code について

dead-codeは、GitNexusのナレッジグラフでファイル間の関係を調べ、未使用の可能性があるコードを探すコマンドラインスキルです。コードベースの整理、リファクタリング後の確認、リリース前の点検に向いており、MCPサーバーは提供しません。

主な機能

  1. 01呼び出し元のない関数を検出
  2. 02信頼度の低いインポートを確認
  3. 03到達不能なコードを特定
  4. 04インポート関係のないファイルを検出
  5. 05誤検出を除外して分類レポートを作成

活用シーン

  1. 01定期的なコードベースの整理
  2. 02リファクタリング後の孤立コード確認
  3. 03リリース前のコード範囲の見直し

MCP 対応

GitNexus CLIを使うスキルで、MCPサーバーはありません。READMEでは`gitnexus://` URIを使ったMCPリソースの読み取りを明示的に禁止しています。

インストール

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

$npx skills add https://github.com/terrylica/cc-skills --skill dead-code

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

詳細

GitNexus デッドコード検出器

CLI のみ — MCP サーバーは存在しません。gitnexus:// URI に対して readMcpResource を絶対に使用しないでください。

GitNexus ナレッジグラフを使って、孤立した関数、宙ぶらりんのインポート、孤立したファイル、到達不能なコードを検出します。

自己進化型スキル:このスキルは使用を通じて改善されます。指示が間違っている場合、パラメーターにずれが生じた場合、または回避策が必要になった場合は、先送りせず、このファイルをすぐに修正してください。実際に再現できる問題に対してのみ更新してください。

使用する場面

  • 定期的なコードベースの整理
  • 対象範囲を縮小するためのメジャーリリース前
  • リファクタリング後に新たに孤立したコードを探すとき
  • 「使われていない関数はありますか?」

言語固有のデッドコードツール(vulture、knip、clippy)を使用する場合は、代わりに quality-tools:dead-code-detector を使用してください。このスキルでは、ファイル間の構造分析に GitNexus グラフを使用します。

ワークフロー

ステップ 0:事前確認 — CLI を呼び出せることを確認する

gitnexus バイナリは npm/mise 経由でインストールされます。現在のプロジェクトで node が有効になっていない場合、mise のシムが失敗することがあります。gitnexus コマンドを実行する前に、この事前確認を実行してください。

# Test if gitnexus is actually callable (not just a broken shim)
gitnexus --version 2>/dev/null || mise use [email protected]

以下のすべてのコマンドはリポジトリのルートから実行します。ワークスペース内に複数のリポジトリがインデックスされている場合は、対象を指定するために --repo <repo-name> を追加してください。それ以外の場合、--repo は省略できます。

ステップ 1:インデックスが古い場合は自動で再インデックスする
gitnexus status

古い場合(インデックスされたコミット ≠ HEAD)、処理を続ける前に自動で再インデックスしてください。ユーザーに尋ねないでください。

gitnexus analyze

その後、インデックスが最新であることを確認するため、ステータスを再確認してください。

ステップ 2:Cypher クエリを実行する

以下の 4 つのクエリを実行し、さまざまな種類のデッドコードを検出します。

孤立した関数

CALLS エッジの入力がなく、どのプロセスにも参加していない関数:

gitnexus cypher "MATCH (f:Function) WHERE NOT EXISTS { MATCH ()-[:CALLS]->(f) } AND NOT EXISTS { MATCH ()-[:STEP_IN_PROCESS]->(f) } RETURN f.name, f.file, f.line ORDER BY f.file LIMIT 50"
宙ぶらりんのインポート

信頼度が低い(< 0.5)インポートエッジ。参照が壊れている可能性があります。

gitnexus cypher "MATCH (a)-[r:IMPORTS]->(b) WHERE r.confidence < 0.5 RETURN a.name, b.name, r.confidence, a.file ORDER BY r.confidence LIMIT 30"
デッドコード(到達不能)

どのエントリーポイントからも到達できない関数。呼び出し元がなく、どのプロセスにも属していません。

gitnexus cypher "MATCH (f:Function) WHERE NOT EXISTS { MATCH ()-[:CALLS]->(f) } AND NOT EXISTS { MATCH ()-[:STEP_IN_PROCESS]->(f) } AND NOT f.name STARTS WITH '_' AND NOT f.name STARTS WITH 'test_' RETURN f.name, f.file, f.line ORDER BY f.file LIMIT 50"
孤立したファイル

インポートの入力も出力もないファイル:

gitnexus cypher "MATCH (f:File) WHERE NOT EXISTS { MATCH (f)-[:IMPORTS]->() } AND NOT EXISTS { MATCH ()-[:IMPORTS]->(f) } RETURN f.path ORDER BY f.path LIMIT 30"
ステップ 3:結果を絞り込む

誤検出を除外します。

  • テストファイル(**/test_*、**/tests/*、**/*_test.*)— テスト関数は正当に「呼び出されていない」場合があります
  • __init__ ファイル — 正当に空である場合や、再エクスポートに使われている場合があります
  • エントリーポイント(main、cli、__main__)— 他のコードではなく、ランタイムから呼び出されます
  • _ で始まるプライベートヘルパー — 動的ディスパッチ経由で使われている場合があります
ステップ 4:構造化レポート

モジュール/ディレクトリごとに分類して提示します。

## Dead Code Report

### Orphan Functions (N found)
| Function | File | Line |
|----------|------|------|
| ...      | ...  | ...  |

### Dangling Imports (N found)
| Source | Target | Confidence |
|--------|--------|------------|
| ...    | ...    | ...        |

### Isolated Files (N found)
- path/to/file.py
- ...

### Summary
- Total orphans: N
- Total dangling: N
- Total isolated: N

注意事項

  • 結果はインデックスの鮮度に依存します。結果が正しくないように見える場合は、再インデックスしてください
  • グラフが取得するのは静的な関係のみです。動的ディスパッチ、リフレクション、プラグインの読み込みによって誤検出が発生する場合があります
  • この構造的な分析を補完する言語固有の分析(vulture、knip、clippy)には、quality-tools:dead-code-detector を使用してください

実行後の振り返り

このスキルの完了後、タスクを終了する前に振り返ってください。

  1. 自分の場所を特定する。 — 編集する前に、この SKILL.md の正式なパスを見つけてください。
  2. 何が失敗したか? — 原因となった指示を修正してください。
  3. 予想以上にうまくいったことは? — 推奨される実践方法として取り入れてください。
  4. 何にずれが生じたか? — 現状に合わなくなったスクリプト、参照、依存関係を修正してください。
  5. 記録する。 — きっかけ、修正内容、根拠を含む進化ログのエントリーを追加してください。

先送りしないでください。次回の実行では、ここに残した状態が引き継がれます。

コメント