Understand Anything
LLM + 静的解析でコードベースをインタラクティブなナレッジグラフに変換する Claude Code プラグイン
What it is
Understand Anything は、Claude(Sonnet / Opus)と web-tree-sitter による静的解析を組み合わせ、任意のコードベースをインタラクティブなナレッジグラフに変換する Claude Code プラグイン。200,000 行規模のリポジトリでも「どこから読めばいいか」を即座に可視化し、ファイル・関数・クラス・依存関係をグラフのノードとして描画、自然言語の説明を付与する。
分析結果は .understand-anything/knowledge-graph.json に保存され、React Flow 製ダッシュボードで閲覧できる。Git 差分ベースのインクリメンタル更新にも対応。Claude Code 以外に Cursor / Codex / OpenCode も利用可能。
6+コマンド
18エッジ型
5アーキレイヤー
3ペルソナ
対象ユーザー
Junior
新規参加の開発者向け。ガイドツアーでコードベースの全体像を素早く把握できる。
PM / Designer
コードを読まない職種向け。アーキテクチャレイヤーを視覚的に確認できる。
PowerUser
AI 開発者向け。自然言語クエリ・差分分析・影響範囲の即時確認。
モノレポ構成
Plugin Core
understand-anything-plugin/
エージェント定義(
.md)・スキル定義・TypeScript ソース(コンテキスト構築・差分分析)Shared Engine
packages/core/
型定義・Zod スキーマ・Fuse.js 検索・セマンティック検索・静的解析・Gitスタールネス管理
Dashboard UI
packages/dashboard/
React 18 + Vite + TailwindCSS v4。React Flow でグラフ描画。Zustand で状態管理。
Static Analysis
web-tree-sitter (WASM)
darwin/arm64 + Node.js 24 でネイティブ tree-sitter が動かないため WASM ビルドを採用。
packages/core のモジュール
| モジュール | 役割 |
|---|---|
types.ts | コアデータ型 — KnowledgeGraph, GraphNode, GraphEdge など |
schema.ts | Zod スキーマ + validateGraph() バリデーション |
search.ts | Fuse.js によるファジー検索エンジン |
embedding-search.ts | コサイン類似度によるセマンティック検索 |
staleness.ts | Git コミット差分によるグラフ鮮度チェック + 差分マージ |
analyzer/graph-builder.ts | ノード・エッジの組み立てエンジン |
analyzer/llm-analyzer.ts | LLM へのプロンプト構築 & レスポンスパース |
analyzer/layer-detector.ts | アーキレイヤー検出(API / Service / Data / UI / Utility) |
analyzer/tour-generator.ts | 依存順序のガイドツアー生成 |
plugins/tree-sitter-plugin.ts | tree-sitter(WASM版)を使った静的構文解析 |
/understand 実行時のパイプライン
flowchart TD
A["/understand コマンド実行"] --> B
B["project-scanner\n(Claude Sonnet)\nファイル探索・言語検出"] --> C
C["file-analyzer × 最大3並列\n(Claude Opus)\ntree-sitter で静的抽出\n→ LLM でサマリー生成\n→ 中間ファイル書き出し"] --> D
D["architecture-analyzer\n(Claude Opus)\nAPI / Service / Data / UI / Utility\nレイヤー分類"] --> E
E["tour-builder\n(Claude Opus)\n依存順ガイドツアー生成"] --> F
F["graph-reviewer\n(Claude Sonnet)\n完全性・参照整合性を検証"] --> G
G["knowledge-graph.json 保存\n中間ファイルをクリーンアップ"] --> H
H["/understand-dashboard\nReact ダッシュボード自動起動"]
style A fill:#0891b2,color:#fff,stroke:none
style H fill:#0891b2,color:#fff,stroke:none
style G fill:#0369a1,color:#fff,stroke:none
インクリメンタル更新:
git diff <last-commit>..HEAD で変更ファイルを検出 → 該当ノード・エッジのみ削除・再解析 → mergeGraphUpdate() でグラフをマージ。大規模リポジトリでも全量再解析を避けられる。
ユーザー向けコマンド
| コマンド | 機能 | モデル |
|---|---|---|
/understand |
コードベース全体を解析してナレッジグラフを生成 | Sonnet + Opus |
/understand-dashboard |
ブラウザで React Flow ダッシュボードを起動 | — |
/understand-chat <質問> |
コードベースへの自然言語質問(グラフコンテキスト付き) | Sonnet |
/understand-diff |
現在の変更影響範囲をグラフ上で分析 | Sonnet |
/understand-explain <パス> |
特定ファイル・関数の詳細解説を生成 | Opus |
/understand-onboard |
新メンバー向けオンボーディングガイドを生成 | Opus |
KnowledgeGraph ルート
interface KnowledgeGraph {
version: string;
project: ProjectMeta;
nodes: GraphNode[]; // file / function / class / module / concept
edges: GraphEdge[]; // 18 種類のエッジ型
layers: Layer[]; // アーキレイヤー (API/Service/Data/UI/Utility)
tour: TourStep[]; // ガイドツアーステップ
}
エッジ型一覧(18 種)
| カテゴリ | エッジ型 |
|---|---|
| 構造 | imports exports contains inherits implements |
| 制御フロー | calls subscribes publishes middleware |
| データ | reads_from writes_to transforms validates |
| メタ | depends_on tested_by configures |
| 意味的 | related similar_to |
スキル層の公開 API
プラグインの understand-anything-plugin/src/index.ts からエクスポートされるコンテキスト構築関数:
| 関数 | 用途 |
|---|---|
buildChatContext() | /understand-chat 用 — グラフを自然言語QA向けに要約 |
buildDiffContext() | /understand-diff 用 — 変更差分の影響ノードを列挙 |
buildExplainContext() | /understand-explain 用 — 対象の周辺グラフを抽出 |
buildOnboardingGuide() | /understand-onboard 用 — ツアーステップをガイド形式に整形 |
Claude Code(ネイティブ)
/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything
/understand # 解析開始
Cursor
Cursor は .cursor-plugin/plugin.json を自動検出する仕組みを使う。スキル・エージェント定義が相対パスで書かれているため、Understand-Anything リポジトリ自体を Cursor のワークスペースに含める必要がある。
手順
- 任意の場所にリポジトリをクローンする(例:
~/tools/以下など、プロジェクトとは別でOK) - Cursor で解析したいプロジェクトを開く
- メニュー File › Add Folder to Workspace… で、クローンした
Understand-Anything/フォルダを追加する - Cursor が
.cursor-plugin/plugin.jsonを検出し、コマンドが使えるようになる /understandを実行して解析開始
# 1. クローン(場所はどこでも可)
git clone https://github.com/Lum1104/Understand-Anything ~/tools/understand-anything
# 2. Cursor でワークスペースに追加後、解析を実行
/understand
なぜワークスペースに追加するの? plugin.json 内のスキル・エージェント定義が
./understand-anything-plugin/skills/ という相対パスで書かれているため、Cursor がそのパスを解決できる場所にリポジトリが必要。プロジェクトのコードを汚染しないよう、別フォルダにクローンして追加するのがおすすめ。
ローカル開発
前提: Node.js ≥ 22、pnpm ≥ 10
# 依存インストール
pnpm install
# core パッケージをビルド(ダッシュボードが依存)
pnpm --filter @understand-anything/core build
# ダッシュボード開発サーバー
pnpm dev:dashboard
# テスト
pnpm --filter @understand-anything/core test
# Lint
pnpm lint
tree-sitter に注意: darwin/arm64 + Node.js 24 ではネイティブビルドが失敗するため、
web-tree-sitter(WASM版)を採用。ネイティブ tree-sitter へ置き換えた場合は動作しない。
公式・関連
- GitHub: Lum1104/Understand-Anything — 本体リポジトリ
- README.md — インストール・使い方の公式ドキュメント
- types.ts — コアデータ型定義
- React Flow — ダッシュボードのグラフ描画ライブラリ
- tree-sitter — 静的構文解析エンジン(WASM版を採用)