Loading...
Loading...
Turn any codebase into an interactive knowledge graph using Claude Code skills — explore, search, and ask questions about any project visually.
npx skill4agent add aradotso/trending-skills understand-anything-knowledge-graphSkill by ara.so — Daily 2026 Skills collection.
/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anythinggit 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| Command | What it does |
|---|---|
| Run the full multi-agent analysis pipeline on the current project |
| Open the interactive knowledge graph dashboard |
| Ask anything about the codebase in natural language |
| Analyze impact of current uncommitted changes |
| Deep-dive explanation of a specific file or function |
| Generate an onboarding guide for new team members |
# Inside any project directory, in Claude Code:
/understand.understand-anything/knowledge-graph.json/understand-dashboard/understand-chat How does authentication work in this project?
/understand-chat What calls the payment service?
/understand-chat Which files are most depended on?# After making changes:
/understand-diff/understand-explain src/auth/login.ts
/understand-explain src/services/PaymentService.ts.understand-anything/knowledge-graph.jsonpackages/core// packages/core/src/types.ts
interface GraphNode {
id: string; // unique: "file:src/auth/login.ts"
type: "file" | "function" | "class" | "module";
name: string;
filePath: string;
layer: ArchitectureLayer; // "api" | "service" | "data" | "ui" | "utility"
summary: string; // LLM-generated plain-English description
code?: string; // raw source snippet
language?: string;
concepts?: LanguageConcept[]; // e.g. "generics", "closures", "decorators"
metadata?: Record<string, unknown>;
}
interface GraphEdge {
id: string;
source: string; // node id
target: string; // node id
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";import { loadKnowledgeGraph, searchGraph, buildTour } from "@understand-anything/core";
// Load the persisted graph
const graph = await loadKnowledgeGraph(".understand-anything/knowledge-graph.json");
// Fuzzy search across all nodes
const results = searchGraph(graph, "payment processing");
console.log(results.map(r => `${r.type}:${r.name} (${r.filePath})`));
// Find all callers of a function
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));
// Get all nodes in the service layer
const serviceNodes = graph.nodes.filter(n => n.layer === "service");
// Build a guided tour starting from a specific node
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}`);
});# Start the dashboard dev server (hot reload)
pnpm dev:dashboard
# Build for production
pnpm --filter @understand-anything/dashboard buildunderstand-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//understandrm -rf .understand-anything/
/understandpnpm install # Install all dependencies
pnpm --filter @understand-anything/core build # Build core package
pnpm --filter @understand-anything/core test # Run core tests
pnpm --filter @understand-anything/skill build # Build plugin package
pnpm --filter @understand-anything/skill test # Run plugin tests
pnpm --filter @understand-anything/dashboard build # Build dashboard
pnpm dev:dashboard # Dashboard dev server with HMR# See what your diff actually touches in the architecture
/understand-diff# Generate a structured onboarding doc grounded in the real code
/understand-onboard/understand-chat What are all the entry points for the GraphQL API?
/understand-explain src/graphql/resolvers//understand-explain src/workers/queue-processor.ts
# Returns: summary, key functions, what calls it, what it calls, concepts used/understand.understand-anything/pnpm --filter @understand-anything/dashboard build/understand-dashboard.understand-anything/knowledge-graph.jsonrm .understand-anything/knowledge-graph.json && /understandpnpm installpnpm --versionpnpm-workspace.yamlcat .understand-anything/knowledge-graph.json | head -5/understand# Fork, then:
git checkout -b feature/my-feature
pnpm --filter @understand-anything/core test # must pass
# open a PR — file an issue first for major changes