
This one helps you query codebases through a knowledge graph instead of grepping raw files. It assumes you've already generated a graph at `.understand-anything/knowledge-graph.json` with nodes for files, functions, classes, and edges showing imports, calls, and dependencies. The clever bit is it doesn't dump the entire graph into context. It uses grep to search for relevant nodes by name or tags, then pulls just the connected subgraph around your query. So if you ask about authentication, it finds those nodes and their immediate dependencies rather than loading everything. Works best when you need to understand how components relate without reading through dozens of files manually.
$ npx -y skills add egonex-ai/understand-anything --skill understand-chat --agent claude-codeInstalls into .claude/skills of the current project.
Answer questions about this codebase using the knowledge graph in the project's data directory (.ua/knowledge-graph.json, or the legacy .understand-anything/knowledge-graph.json when that directory is present).
The knowledge graph JSON has this structure:
project — {name, description, languages, frameworks, analyzedAt, gitCommitHash}nodes[] — each has {id, type, name, filePath?, summary, tags[], complexity, languageNotes?}
file:path, function:path:name, config:path, article:pathedges[] — each has {source, target, type, direction, weight}
layers[] — each has {id, name, description, nodeIds[]}tour[] — each has {order, title, description, nodeIds[]}Resolve the data directory $UA_DIR. Run UA_DIR=$([ -d .understand-anything ] && echo .understand-anything || echo .ua) — this is the legacy .understand-anything/ when it already exists, otherwise the new .ua/. Check that $UA_DIR/knowledge-graph.json exists in the current project root. If not, tell the user to run /understand first.
Check graph freshness before using graph-derived context:
project.gitCommitHash from the graph metadata as GRAPH_COMMIT_RAW. Resolve it as a commit before using it in any Git diff, then compare it with git rev-parse HEAD and inspect project-scoped committed and working-tree changes from the project root:
GRAPH_COMMIT=$(git rev-parse --verify --end-of-options "${GRAPH_COMMIT_RAW}^{commit}" 2>/dev/null)
git rev-parse HEAD
git diff --name-only "$GRAPH_COMMIT" HEAD -- .
git diff --cached --name-only -- .
git diff --name-only -- .
git ls-files --others --exclude-standard -- .
-- . pathspec is required: commits that only touch a sibling monorepo project must not make this graph stale. A hash mismatch alone is not stale when the project diff is empty..ua/ or legacy .understand-anything/) in every command's output because it contains generated graph artifacts, not project source drift./understand to refresh the graph.GRAPH_COMMIT_RAW resolves successfully. If the graph commit or Git metadata is missing, invalid, or unavailable, give a brief best-effort warning and continue instead of blocking.Read project metadata only — use Grep or Read with a line limit to extract just the "project" section from the top of the file for context (name, description, languages, frameworks).
Search for relevant nodes — use Grep to search the knowledge graph file for the user's query keywords: "$ARGUMENTS"
"name" fields: grep -i "query_keyword" in the graph file"summary" fields for semantic matches"tags" arrays for topic matchesid values of all matching nodesFind connected edges — for each matched node ID, Grep for that ID in the edges section to find:
Read layer context — Grep for "layers" to understand which architectural layers the matched nodes belong to.
Answer the query using only the relevant subgraph:
Sponsors