kg-extract について
kg-extractは、ソースコードやドキュメントからエンティティと関係を抽出し、AgentDBに保存するスキルです。コード構造や依存関係、変更の影響を分析でき、TypeScriptの型専用インポートも値のインポートと区別します。
主な機能
- 01コードとドキュメントのエンティティ抽出
- 02インポート、継承、呼び出し、依存関係のマッピング
- 03型専用インポートと値のインポートの区別
- 04エンティティと関係のAgentDBへの保存
- 05エンティティ数と関係数の報告
活用シーン
- 01ソースファイルからナレッジグラフを構築
- 02コード構造と依存関係の分析
- 03コード変更の影響評価
MCP 対応
RufloのMCPツールを使い、エンティティと因果エッジをAgentDBに保存します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill kg-extractインストール後、Claude Code で/kg-extractを入力して読み込まれたか確認します。
詳細
KG Extract
ソースファイルからエンティティ(クラス、関数、モジュール、型、概念)とその関係(インポート、継承、実装、依存、呼び出し)を抽出し、AgentDB にナレッジグラフとして保存します。
使用する場面
ソースコードやドキュメントからナレッジグラフを構築または更新する必要がある場合に使用します。コードベースの構造、依存関係の分析、影響評価の把握に役立ちます。
手順
-
ファイルをスキャンする --
GlobとReadを使用して、指定されたパスにあるソースファイルを列挙し、読み込みます -
エンティティを特定する -- 各ファイルからクラス、関数、モジュール、型、設定参照を抽出します
-
関係をマッピングする -- 各エンティティについて、他のエンティティとの関係を特定します。重要:TypeScript の
import typeとインラインのtype指定子(import { type Foo, bar })はコンパイル時に消去されるため、値のインポートとして数えてはなりません。これらは別個の、より弱い関係です。誤分類すると、実行時には存在しない循環依存が生じます(ruvnet/ruflo#2049 を参照)。imports:値のインポート(import { x } from '...'、require(...)) -- 重み0.9type-depends-on:TypeScript の型のみのインポート(import type { Foo } from '...'とimport { type Foo, value } from '...') -- 重み0.1、循環検出や実行時の影響分析には決して使用しませんextends:クラスの継承 -- 重み0.9implements:インターフェースの実装 -- 重み0.7depends-on:コンストラクターの依存関係、注入されたサービス -- 重み0.8calls:関数/メソッドの呼び出し -- 重み0.7references:ドキュメント内の言及、コメント -- 重み0.3
TS インポートを分類するための正規表現のヒント(単純な
from '...'の grep で両者を混同しないため):^\s*import\s+type\s+ → type-depends-on (entire import is type-only) ^\s*import\s*\{[^}]*\btype\s+\w+ → split: type specifiers → type-depends-on, value specifiers → imports ^\s*import\s+[^{]*\bfrom\s+ → imports (value) -
AgentDB に保存する -- メタデータ(name、type、file、line、description)を指定して、各エンティティについて
mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-storeを呼び出します -
エッジを作成する -- 各関係について、source、target、relation type、weight を指定して
mcp__plugin_ruflo-core_ruflo__agentdb_causal-edgeを呼び出します -
報告する -- エンティティのタイプ別合計数、関係のタイプ別合計数、スキャンしたファイルを要約します
CLI の代替手段
npx @claude-flow/cli@latest memory store --namespace knowledge-graph --key "entity-NAME" --value "METADATA_JSON"
npx @claude-flow/cli@latest memory search --query "entities in auth module" --namespace knowledge-graph