Understand Anything plugin
A plugin that builds a knowledge graph of a codebase or wiki and opens an interactive dashboard with search, tours and diff impact
- 88,827 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- 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
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add plugins/understand-anythingDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- 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
This 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.
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.
Discussion
No questions or reviews yet.
Related
PluginsThe /graphify skill builds a knowledge graph of a project's code, docs and PDFs so the agent queries the graph instead of grepping
A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review
codesight maps a project in one run: routes, DB models, dependencies, env vars. It gives the map to an agent as files or through an MCP server
Gives the agent an understanding of your repository: it indexes the code and answers questions about it in Claude Code, Cursor, Codex, Windsurf and more
Indexes a codebase into a knowledge graph and gives the agent call chains, change blast radius and code search over MCP
A plugin marketplace and installer for the full dev loop: task selection, review, cleanup, PRs and releases
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.
README badge
Original 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)