Understand Anything
A plugin that builds a knowledge graph of a codebase or wiki and opens an interactive dashboard with search, tours and diff impact
Install
/plugin marketplace add Egonex-AI/Understand-Anything
/plugin install understand-anythingThis is third-party code. Review the repository files before installing.
What it does
The /understand command runs a multi-agent pipeline that scans the project and builds a graph of files, functions, classes and dependencies in .ua/knowledge-graph.json. /understand-dashboard opens a web dashboard color-coded by layer, with fuzzy and semantic search and node explanations. There are commands for code Q&A, change impact analysis, onboarding guides, business domains and Karpathy-style wikis. Later runs are incremental, and descriptions can be generated in Russian.
Who it is for. Developers ramping up on a large unfamiliar codebase and tech leads preparing onboarding.
Good fit when
- You joined a project with hundreds of thousands of lines and do not know where to start
- You need to see which parts of the system your diff affects
- You are preparing an onboarding guide for new hires
- You want business logic mapped into domains and flows
Not a fit when
- A small project that is easier to read in full
- A tight token budget: the first analysis of a large project uses a lot
Example request
/understand-chat How does the payment flow work in this projectLimitations
The first /understand run on a large project uses a significant number of tokens, and the authors suggest a subscription or a local model. For huge monorepos analysis can be scoped to a subfolder. Graphs over 10 MB are best tracked with git-lfs.
How to disable. Remove the plugin in Claude Code. For other platforms run ./install.sh --uninstall with the platform name. Disable graph auto-update with /understand --no-auto-update.
Security check
- Installation for several platforms runs via curl | bash
- The --auto-update flag installs a post-commit hook
- Analysis sends large amounts of code to the model
README in short
Understand Anything is a Claude Code plugin from Egonex that turns a codebase or docs into an interactive knowledge graph. The README covers dashboard features, a step-by-step quick start and installation for many platforms via install.sh. A section explains committing the graph and viewing it without an LLM. MIT license.
SKILL.md
---
name: understand
description: Analyze a codebase to produce an interactive knowledge graph for understanding architecture, components, and relationships
argument-hint: ["[path] [--full|--auto-update|--no-auto-update|--review|--language <lang>|--exclude <patterns>]"]
---
# /understand
Analyze the current codebase and produce a `knowledge-graph.json` file in the project's data directory (`.ua/`, or the legacy `.understand-anything/` when it already exists). This file powers the interactive dashboard for exploring the project's architecture.
## Options
- `$ARGUMENTS` may contain:
- `--full` — Force a full rebuild, ignoring any existing graph
- `--auto-update` — Enable automatic graph updates on commit (writes `autoUpdate: true` to `$UA_DIR/config.json`)
- `--no-auto-update` — Disable automatic graph updates (writes `autoUpdate: false` to `$UA_DIR/config.json`)
- `--review` — Run full LLM graph-reviewer instead of inline deterministic validation
- `--language <lang>` — Generate all textual content (summaries, descriptions, tags, titles, languageNotes, languageLesson) in the specified language. Accepts ISO 639-1 codes (`zh`, `ja`, `ko`, `en`, `es`, `fr`, `de`, etc.) or friendly names (`chinese`, `japanese`, `korean`, `english`, `spanish`, etc.). Locale variants supported: `zh-TW`, `zh-HK`, etc. Defaults to `en` (English). Stores preference in `$UA_DIR/config.json` for consistency across incremental updates.
- `--exclude <patterns>` — Comma-separated glob patterns for additional files/directories to exclude from analysis (e.g., `--exclude "tests/*,docs/*"`). These patterns take highest priority over built-in defaults and `.understandignore` rules. Supports gitignore syntax including `!` negation.
- A directory path (e.g. `/path/to/repo` or `../other-project`) — Analyze the given directory instead of the current working directory
---
## Progress Reporting
Throughout execution, report progress to the user at each phase transition and during batch processing. This keeps users informed on large codebases where analysis can take a long time.
- **Phase transitions:** At the start of each phase, print a status line:
> `[Phase N/7] <phase name>...`
>
> Example: `[Phase 2/7] Analyzing files (12 batches)...`
- **Batch progress:** During Phase 2, report each batch with its index and total:
> `Analyzing batch X/N (files: foo.ts, bar.ts, ...)` (list up to 3 filenames, then `...` if more)
- **Phase completion:** When a phase finishes, briefly confirm:
> `Phase N complete. <one-line summary of result>`
>
> Example: `Phase 1 complete. Found 247 files across 3 languages.`
---
## Phase 0 — Pre-flight
Determine whether to run a full analysis or incremental update.
1. **Resolve `PROJECT_ROOT`:**
- Parse `$ARGUMENTS` for a non-flag token (any argument that does not start with `--`). If found, treat it as the target directory path.
- If the path is relative, resolve it against the current working directory.
- Verify the resolved path exists and is a directory (run `test -d <path>`). If it does not exist or is not a directory, report an error to the user and **STOP**.
- Set `PROJECT_ROOT` to the resolved absolute path.
- If no directory path argument is found, set `PROJECT_ROOT` to the current working directory.
- **Worktree redirect.** If `PROJECT_ROOT` is inside a git worktree (not the main checkout), redirect output to the main repository root. Worktrees managed by Claude Code are ephemeral — the data directory (`.ua/`, or legacy `.understand-anything/`) written there is destroyed when the session ends, taking the knowledge graph with it (issue #133). Detect a worktree by comparing `git rev-parse --git-dir` against `git rev-parse --git-common-dir`; in a normal checkout or submodule they resolve to the same path, in a worktree they differ and the parent of `--git-common-dir` is the main repo root.
```bash
COMMON_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-common-dir 2>/dev/null)
GIT_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-dir 2>/dev/null)
if [ -n "$COMMON_DIR" ] && [ -n "$GIT_DIR" ]; then
COMMON_ABS=$(cd "$PROJECT_ROOT" && cd "$COMMON_DIR" 2>/dev/null && pwd -P)
GIT_ABS=$(cd "$PROJECT_ROOT" && cd "$GIT_DIR" 2>/dev/null && pwd -P)FAQ
Can I open the graph without Claude Code?
Yes, once the graph is committed teammates can open the dashboard via npx with the viewer package from releases. Only Node.js 18+ is needed, no LLM or keys.
Which languages are supported for output?
en, zh, zh-TW, ja, ko and ru via the --language flag.
Related
A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review
Skills for real engineers by Matt Pocock
Skills For Real Engineers
Small composable skills for engineering with agents: plan grilling, TDD, bug diagnosis, code review and architecture
Reference MCP servers
Model Context Protocol servers
Official reference MCP servers: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time and Everything
Up-to-date, version-specific library docs and code examples in your agent's context, via MCP or a CLI plus skill