| name | understand-anything-knowledge-graph |
| description | Turn any codebase into an interactive knowledge graph using Claude Code skills — explore, search, and ask questions about any project visually. |
| triggers | ["analyze my codebase with understand anything","build a knowledge graph of this project","help me understand this codebase","install understand anything plugin","explore codebase visually","explain how this code is structured","run understand-dashboard","generate onboarding guide for my project"] |
Understand Anything — Codebase Knowledge Graph
Skill by ara.so — Daily 2026 Skills collection.
Understand Anything is a Claude Code plugin that runs a multi-agent pipeline over your project, builds a knowledge graph of every file, function, class, and dependency, and opens an interactive React dashboard for visual exploration. It produces plain-English summaries of every node so anyone — developer, PM, or designer — can understand the codebase.
Installation
Via Claude Code plugin marketplace
/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything
From source (development)
git clone https://github.com/Lum1104/Understand-Anything
cd Understand-Anything
pnpm install
pnpm --filter @understand-anything/core build
pnpm --filter @understand-anything/skill build
pnpm --filter @understand-anything/dashboard build
Core Skills / Commands
| Command | What it does |
|---|
/understand | Run the full multi-agent analysis pipeline on the current project |
/understand-dashboard | Open the interactive knowledge graph dashboard |
/understand-chat <question> | Ask anything about the codebase in natural language |
/understand-diff | Analyze impact of current uncommitted changes |
/understand-explain <path> | Deep-dive explanation of a specific file or function |
/understand-onboard | Generate an onboarding guide for new team members |
Typical Workflow
1. Analyze a project
/understand
This orchestrates 5 agents in sequence (with file-analyzers running up to 3 concurrent):
- project-scanner — discovers files, detects languages/frameworks
- file-analyzer — extracts functions, classes, imports; builds graph nodes and edges
- architecture-analyzer — groups nodes into architectural layers (API, Service, Data, UI, Utility)
- tour-builder — generates ordered learning tours
- graph-reviewer — validates referential integrity
Output is saved to .understand-anything/knowledge-graph.json in your project root.
2. Open the dashboard
/understand-dashboard
The React + Vite dashboard opens in your browser. Features:
- Graph view — React Flow canvas, color-coded by layer, zoom/pan
- Node inspector — click any node for code, relationships, LLM summary
- Search — fuzzy + semantic search across all nodes
- Tours — guided walkthroughs ordered by dependency
- Persona mode — toggle detail level (Junior Dev / PM / Power User)
3. Ask questions
/understand-chat How does authentication work in this project?
/understand-chat What calls the payment service?
/understand-chat Which files are most depended on?
4. Review diff impact before committing
/understand-diff
Returns a list of affected nodes in the knowledge graph — shows ripple effects before you push.
5. Explain a specific file
/understand-explain src/auth/login.ts
/understand-explain src/services/PaymentService.ts
Knowledge Graph Schema
The graph is stored at .understand-anything/knowledge-graph.json. Key types (from packages/core):
interface GraphNode {
id: string;
type: "file" | "function" | "class" | "module";
name: string;
filePath: string;
layer: ArchitectureLayer;
summary: string;
code?: string;
language?: string;
concepts?: LanguageConcept[];
metadata?: Record<string, unknown>;
}
interface GraphEdge {
id: string;
source: string;
target: string;
type: "imports" | "calls" | "extends" | "implements" | "uses";
label?: string;
}
interface KnowledgeGraph {
version: string;
generatedAt: string;
projectRoot: string;
nodes: GraphNode[];
edges: GraphEdge[];
tours: GuidedTour[];
}
type ArchitectureLayer = "api" | "service" | "data" | "ui" | "utility" | "unknown";
type LanguageConcept =
| "generics"
| "closures"
| "decorators"
| "async-await"
| "interfaces"
| "higher-order-functions"
| "dependency-injection"
| "observers"
| "iterators"
| "pattern-matching"
| "monads"
| "currying";
Working with the Core Package Programmatically
import { loadKnowledgeGraph, searchGraph, buildTour } from "@understand-anything/core";
const graph = await loadKnowledgeGraph(".understand-anything/knowledge-graph.json");
const results = searchGraph(graph, "payment processing");
console.log(results.map(r => `${r.type}:${r.name} (${r.filePath})`));
const paymentNode = graph.nodes.find(n => n.name === "processPayment");
const callers = graph.edges
.filter(e => e.target === paymentNode?.id && e.type === "calls")
.map(e => graph.nodes.find(n => n.id === e.source));
const serviceNodes = graph.nodes.filter(n => n.layer === "service");
const tour = buildTour(graph, { startNodeId: "file:src/index.ts" });
tour.steps.forEach((step, i) => {
console.log(`Step ${i + 1}: ${step.node.name} — ${step.node.summary}`);
});
Dashboard Development
pnpm dev:dashboard
pnpm --filter @understand-anything/dashboard build
The dashboard is a Vite + React 18 app using:
- React Flow — graph canvas rendering
- Zustand — graph state management
- TailwindCSS v4 — styling
- Fuse.js — fuzzy search
- web-tree-sitter — in-browser AST parsing
- Dagre — automatic graph layout
Project Structure
understand-anything-plugin/
├── .claude-plugin/ # Plugin manifest (read by Claude Code)
├── agents/ # Agent definitions (project-scanner, file-analyzer, etc.)
├── skills/ # Skill definitions (/understand, /understand-chat, etc.)
├── src/ # Plugin TypeScript source
│ ├── context-builder.ts # Builds LLM context from the graph
│ └── diff-analyzer.ts # Git diff → affected nodes
├── packages/
│ ├── core/ # Analysis engine
│ │ ├── src/
│ │ │ ├── types.ts # GraphNode, GraphEdge, KnowledgeGraph
│ │ │ ├── persistence.ts
│ │ │ ├── search.ts # Fuzzy + semantic search
│ │ │ ├── tours.ts # Tour generation
│ │ │ ├── schema.ts # Zod validation schemas
│ │ │ └── tree-sitter.ts
│ │ └── tests/
│ └── dashboard/ # React dashboard app
│ └── src/
Incremental Updates
Re-running /understand only re-analyzes files that changed since the last run (based on mtime and content hash stored in the graph metadata). For large monorepos this makes subsequent runs fast.
To force a full re-analysis:
rm -rf .understand-anything/
/understand
Development Commands
pnpm install
pnpm --filter @understand-anything/core build
pnpm --filter @understand-anything/core test
pnpm --filter @understand-anything/skill build
pnpm --filter @understand-anything/skill test
pnpm --filter @understand-anything/dashboard build
pnpm dev:dashboard
Common Patterns
Before a code review
/understand-diff
Onboarding a new engineer
/understand-onboard
Researching a feature area
/understand-chat What are all the entry points for the GraphQL API?
/understand-explain src/graphql/resolvers/
Understanding an unfamiliar module
/understand-explain src/workers/queue-processor.ts
Troubleshooting
/understand times out on large repos
- The file-analyzer runs up to 3 workers concurrently. Very large repos (>50k files) may need patience. Delete
.understand-anything/ and re-run if a previous run was interrupted.
Dashboard doesn't open
- Run
pnpm --filter @understand-anything/dashboard build first if working from source, then retry /understand-dashboard.
Stale graph after major refactor
- Delete
.understand-anything/knowledge-graph.json to force full re-analysis: rm .understand-anything/knowledge-graph.json && /understand
pnpm install fails with workspace errors
- Ensure you are using pnpm v8+:
pnpm --version. The project uses pnpm workspaces defined in pnpm-workspace.yaml.
Search returns no results
- Confirm the graph was generated:
cat .understand-anything/knowledge-graph.json | head -5. If empty or missing, run /understand first.
Contributing
git checkout -b feature/my-feature
pnpm --filter @understand-anything/core test
License: MIT © Lum1104