graphify について
graphifyは、ソースファイル、シンボル、その関係を構造化して索引化する、コマンドラインベースのエージェントスキルです。開発者やコーディングエージェントは索引を検索してコードを特定し、編集後に手動で更新できます。
主な機能
- 01ASTベースのコード構造インデックス作成
- 02大文字と小文字を区別しないシンボル検索
- 03差分およびGit変更に基づく更新
- 0413種類のプログラミング言語に対応
活用シーン
- 01不慣れなコードベースでシンボルを探す
- 02広範なテキスト検索の前にコードを特定する
- 03コード編集後にインデックスを更新する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ howell5/ willhong-skills --skill graphifyインストール後、Claude Code で/graphifyを入力して読み込まれたか確認します。
詳細
graphify — コードナビゲーションレイヤー
コードベースの構造インデックスです。grep を使う前に、何があり、どこにあり、どのようにつながっているかを把握できます。
CLI が必要です: npm i -g graphify-ts(Bun ランタイムを使用します)。
更新は手動のみです。 グラフは自動では更新されません。最新のインデックスが必要なときは、ユーザー自身が graphify update または graphify build を実行します。これにより、git worktree やその他の複数セッション環境での書き込み競合を回避できます。
初回セットアップ(マシンごとに1回)
npm i -g graphify-ts # install CLI
その後、プロジェクトごとに1回実行します:
graphify build .
以降、インデックスとコードにずれが生じたら、手動で更新します(下記の graphify update を参照)。
コマンド
/graphify build — インデックスを構築(初回、または全体を再構築する場合)
graphify build .
すべてのソースファイルをスキャンし、AST 構造を抽出して graphify-out/graph.json に保存します。
レポート:「{files} 個のファイル、{nodes} 個のシンボル、{edges} 個の関係をインデックス化しました」
/graphify query <name> — シンボルを検索
graphify query graphify-out/graph.json <name>
大文字と小文字を区別せずに検索します。一致するシンボルとファイルの場所を返します。
/graphify update <files...> — 編集後に増分更新
graphify update graphify-out/graph.json <file1> [file2...]
指定したファイルのみを再抽出します。同じセッション内で再度グラフを検索する場合は、コードを編集した後に実行してください。
/graphify auto-update — git diff から一括更新
graphify auto-update [dir]
git diff と未追跡ファイルを使って変更されたコードファイルを特定し、updateIndex を呼び出します。更新するものがない場合は何も表示しません。各ファイルを指定せずに、編集をまとめて行った後に更新できる便利なコマンドです。
使用するタイミング
コードを検索する前: graphify-out/graph.json がある場合は、Glob や Grep を使う前にクエリを実行してください。グラフを使うと、どのファイルにどのシンボルがあるかがわかります。これが主な利点です。手当たり次第のキーワード検索を、構造化された検索に置き換えられます。
編集した後: 同じセッション内で再びグラフを検索する場合は、graphify update <edited-files>(複数ファイルをまとめて更新する場合は graphify auto-update)を実行してください。それ以外の場合はそのままにしておきます。次回の graphify build または更新時に反映されます。
不慣れなコードを調べるとき: /graphify query <concept> を実行すると、ファイル名を推測せずにエントリーポイントを見つけられます。
対応言語
Python、JavaScript、TypeScript(JSX/TSX)、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP
グラフ出力
graphify-out/graph.json に保存されます:
{
"nodes": [{ "id": "main::app", "label": "App", "sourceFile": "main.py", "sourceLocation": "main.py:5" }],
"edges": [{ "source": "file::main", "target": "main::app", "relation": "contains", "confidence": "EXTRACTED" }],
"metadata": { "files": 10, "nodes": 45, "edges": 62 }
}
エッジの関係:contains、method、imports、imports_from、calls(推論)、inherits