understand
Analyze a codebase to produce an interactive knowledge graph for understanding architecture, components, and relationships
Skill by Egonex-AI
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/egonex-ai-understand
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documentation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/understand
What's inside
- Skill name
understand- Description
- Analyze a codebase to produce an interactive knowledge graph for understanding architecture, components, and relationships
- License
- MIT
- Instructions
- 927 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- body: 927 lines (spec recommends under 500)
Files (55)
- SKILL.md
- build-fingerprints.mjs
- compute-batches.mjs
- extract-import-map.mjs
- extract-structure-result.mjs
- extract-structure.mjs
- finalize-incremental.mjs
- django.md · frameworks/
- express.md · frameworks/
- fastapi.md · frameworks/
- flask.md · frameworks/
- gin.md · frameworks/
- nextjs.md · frameworks/
- rails.md · frameworks/
- react.md · frameworks/
- spring.md · frameworks/
- vue.md · frameworks/
- generate-ignore.mjs
- cpp.md · languages/
- csharp.md · languages/
- css.md · languages/
- dockerfile.md · languages/
- go.md · languages/
- graphql.md · languages/
- html.md · languages/
- java.md · languages/
- javascript.md · languages/
- json.md · languages/
- kotlin.md · languages/
- markdown.md · languages/
- php.md · languages/
- protobuf.md · languages/
- python.md · languages/
- ruby.md · languages/
- rust.md · languages/
- scala.md · languages/
- shell.md · languages/
- sql.md · languages/
- swift.md · languages/
- terraform.md · languages/
- typescript.md · languages/
- yaml.md · languages/
- en.md · locales/
- ja.md · locales/
- ko.md · locales/
- ru.md · locales/
- vi.md · locales/
- zh-TW.md · locales/
- zh.md · locales/
- merge-batch-graphs.py
- merge-subdomain-graphs.py
- prepare-incremental.mjs
- prepare-symbol-retry.mjs
- scan-project.mjs
- validate-incremental-symbols.mjs
SKILL.md (first lines)
# /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)
if [ -n "$COMMON_ABS" ] && [ "$COMMON_ABS" != "$GIT_ABS" ]; then
MAIN_ROOT=$(dirname "$COMMON_ABS")
if [ -d "$MAIN_ROOT" ] && [ "${UNDERSTAND_NO_WORKTREE_REDIRECT:-0}" != "1" ]; then
echo "[understand] Detected git worktree at $PROJECT_ROOT"
echo "[understand] Redirecting output to main repo root: $MAIN_ROOT"
echo "[understand] (Set UNDERSTAND_NO_WORKTREE_REDIRECT=1 to keep PROJECT_ROOT as the worktree.)"
PROJECT_ROOT="$MAIN_ROOT"
fi
fi
fi
```
Set `UNDERSTAND_NO_WORKTREE_REDIRECT=1` if you intentionally want a per-worktree graph (rare — most users want the redirect).
1.5. **Ensure the plugin is built.** Later phases invoke Node scripts that import `@understand-anything/core`. On a fresh install `packages/core/dist/` does not exist yet — build once.
**Important:** do **not** assume the plugin root is simply two directories above the skill path string. In many installations `~/.agents/skills/understand` is a symlink into the real plugin checkout. Prefer runtime-provided plugin roots first (for Claude), then fall back to universal symlinks, skill symlink resolution, and common clone-based install paths.
Resolve the plugin root like this:
```bash
SKILL_REAL=$(realpath ~/.agents/skills/understand 2>/dev/null || readlink -f ~/.agents/skills/understand 2>/dev/null || echo "")
SELF_RELATIVE=$([ -n "$SKILL_REAL" ] && cd "$SKILL_REAL/../.." 2>/dev/null && pwd || echo "")
COPILOT_SKILL_REAL=$(realpath ~/.copilot/skills/understand 2>/dev/null || readlink -f ~/.copilot/skills/understand 2>/dev/null || echo "")
COPILOT_SELF_RELATIVE=$([ -n "$COPILOT_SKILL_REAL" ] && cd "$COPILOT_SKILL_REAL/../.." 2>/dev/null && pwd || echo "")
PLUGIN_ROOT=""
for candidate in \
"${CLAUDE_PLUGIN_ROOT}" \
"$HOME/.understand-anything-plugin" \
"$SELF_RELATIVE" \
"$COPILOT_SELF_RELATIVE" \
"$HOME/.codex/understand-anything/understand-anything-plugin" \
"$HOME/.opencode/understand-anything/understand-anything-plugin" \
"$HOME/.pi/understand-anything/understand-anything-plugin" \
"$HOME/understand-anything/understand-anything-plugin"; do
if [ -n "$candidate" ] && [ -f "$candidate/package.json" ] && [ -f "$candidate/pnpm-workspace.yaml" ]; then
PLUGIN_ROOT="$candidate"
break
fi
done
if [ -z "$PLUGIN_ROOT" ]; then
echo "Error: Cannot find the understand-anything plugin root."
echo "Checked:"
echo " - ${CLAUDE_PLUGIN_ROOT:-<unset CLAUDE_PLUGIN_ROOT>}"
echo " - $HOME/.understand-anything-plugin"
echo " - ${SELF_RELATIVE:-<unresolved path derived from ~/.agents/skills/understand>}"
echo " - ${COPILOT_SELF_RELATIVE:-<unresolved path derived from ~/.copilot/skills/understand>}"
echo " - $HOME/.codex/understand-anything/understand-anything-plugin"
echo " - $HOME/.opencode/understand-anything/understand-anything-plugin"
echo " - $HOME/.pi/understand-anything/understand-anything-plugin"
echo " - $HOME/understand-anything/understand-anything-plugin"
echo "Make sure the plugin is installed correctly."
exit 1
fi
if [ ! -f "$PLUGIN_ROOT/packages/core/dist/index.js" ]; then
cd "$PLUGIN_ROOT" && (pnpm install --frozen-lockfile 2>/dev/null || pnpm install) && pnpm --filter @understand-anything/core build
fi
```
If `pnpm` is missing, report to the user: "Install Node.js ≥ 22 and pnpm ≥ 10, then re-run `/understand`."
1.7. **Resolve the data directory `$UA_DIR`.** All Understand-Anything artifacts live in the project's data directory. Resolve it once, now that `$PROJECT_ROOT` is known, and reuse `$UA_DIR` for every read and write in later phases:
```bashFrom Egonex-AI/Understand-Anything, MIT.
More from Egonex-AI/Understand-Anything
- 0.836score
understand-onboard
Egonex-AI
Use when you need to generate an onboarding guide for new team members joining a project
SkillBFreshness: B★ 88KClaude Code +9 - 0.779score
understand-diff
Egonex-AI
Use when you need to analyze git diffs or pull requests to understand what changed, affected components, and risks
SkillCFreshness: C★ 88KClaude Code +9 - 0.779score
understand-explain
Egonex-AI
Use when you need a deep-dive explanation of a specific file, function, or module in the codebase
SkillCFreshness: C★ 88KClaude Code +9 - 0.779score
understand-chat
Egonex-AI
Use when you need to ask questions about a codebase or understand code using a knowledge graph
SkillCFreshness: C★ 88KClaude Code +9 - 0.777score
understand-figma
Egonex-AI
Analyze a Figma file via the Figma REST API and generate an interactive design knowledge graph (pages, screens, components, component sets, instances, design…
SkillCFreshness: C★ 88KClaude Code +9 - 0.777score
understand-knowledge
Egonex-AI
Analyze a Karpathy-pattern LLM wiki knowledge base and generate an interactive knowledge graph with entity extraction, implicit relationships, and topic…
SkillCFreshness: C★ 88KClaude Code +9 - 0.777score
understand-domain
Egonex-AI
Extract business domain knowledge from a codebase and generate an interactive domain flow graph.
SkillCFreshness: C★ 88KClaude Code +9 - 0.773score
understand-dashboard
Egonex-AI
Launch the interactive web dashboard to visualize a codebase's knowledge graph
SkillCFreshness: C★ 88KClaude Code +9 - 0.655score
CLAUDE.md · Egonex-AI/Understand-Anything
Egonex-AI
CLAUDE.md from Egonex-AI/Understand-Anything: 103 lines covering Project Overview, Prerequisites, Architecture, Dashboard and more.
TemplateCFreshness: C★ 88KClaude Code
Compare and alternatives
Signals
- Stars
- 88,048
- Forks
- 7,430
- Open issues
- 124
- Last commit (this folder)
- Oct 16, 2026 (11 days ago)
- Last release
- Jul 10, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Egonex-AI/Understand-Anything
- Website
- understand-anything.com/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Egonex-AI
- 0.836score
understand-onboard
Egonex-AI
Use when you need to generate an onboarding guide for new team members joining a project
SkillBFreshness: B★ 88KClaude Code +9 - 0.779score
understand-diff
Egonex-AI
Use when you need to analyze git diffs or pull requests to understand what changed, affected components, and risks
SkillCFreshness: C★ 88KClaude Code +9 - 0.779score
understand-explain
Egonex-AI
Use when you need a deep-dive explanation of a specific file, function, or module in the codebase
SkillCFreshness: C★ 88KClaude Code +9 - 0.779score
understand-chat
Egonex-AI
Use when you need to ask questions about a codebase or understand code using a knowledge graph
SkillCFreshness: C★ 88KClaude Code +9 - 0.777score
understand-domain
Egonex-AI
Extract business domain knowledge from a codebase and generate an interactive domain flow graph.
SkillCFreshness: C★ 88KClaude Code +9 - 0.777score
understand-figma
Egonex-AI
Analyze a Figma file via the Figma REST API and generate an interactive design knowledge graph (pages, screens, components, component sets, instances, design…
SkillCFreshness: C★ 88KClaude Code +9
Cite this page
understand skill. Agent Mart. https://agentmart.dev/skills/egonex-ai-understand (last updated 2026-10-24)