Code Understand — On-Demand Architecture Focus Map
You are about to work in a codebase you don't fully know yet. Instead of grepping around or
reading files at random, ask the local extractor for a focus map: the ranked symbols the
architecture hangs on, each with a file:line citation and evidence type. Read only what it
points at — this is a map, not a substitute for reading the actual code it cites.
When to reach for this
- Before editing an unfamiliar module — see what calls it and what it calls before changing its shape.
- The user asks "how does X work", "what's the impact of changing Y", "who else uses this function" for a codebase, not the wiki.
- You're about to do a large refactor and want a ranked list of load-bearing files instead of reading the whole tree.
- You already have a diff or a set of changed files and want to know their blast radius before finishing the change.
Not for: summarizing what a project does for the wiki (that's wiki-update Step 3b, which
calls this same command as part of a bigger sync flow) — use this skill directly only when you
need the focus map for your own immediate work, not to persist knowledge.
Running it
obsidian-wiki code-understand --project <dir> [--backend auto|builtin|codegraph] \
[--changed <file>...] [--since <sha>] [--max-symbols N] [--pretty]
--project— defaults to the current directory.- No
--changed/--since— seeds from every tracked file (full-project scan). --changed <file>(repeatable) — seed from specific files you already know are relevant (e.g. files in the diff you're about to make).--since <sha>— seed from everything changed since a git ref (e.g.--since HEAD~5or a base branch).--backend—auto(default) uses CodeGraph when installed, falls back to the builtin extractor otherwise; forcebuiltinfor the dependency-free path, orcodegraphto require the enhanced backend (fails loudly if it's not installed rather than silently degrading).--max-symbols— cap the focus map size (default 50); keep this small for a quick orientation pass, raise it for a thorough one.
GUARD: if the command is unavailable or errors, skip it and fall back to your normal exploration (grep/read) — this is an accelerant, not a dependency. Don't block work on it.
Reading the output
- Evidence type matters. When
backend: codegraph, focus-map entries are structural facts (real call-graph edges) — cite them directly. Whenbackend: builtin,defines/imports/changed-fileentries are facts, butrg-referenceentries are text-match evidence only — open the file and confirm before treating it as a real relationship. - Open what it cites, nothing else first. The focus map tells you where to read; it
never contains source bodies. Go read those
file:linelocations before forming an opinion on the architecture. - Cite it in your own output. If you explain the architecture back to the user or write
it into a PR description/commit message, keep the
(file:lines)citations from the focus map or from the source you opened — don't assert structure without a pointer to it. - It's a cache, not a deliverable. Never write the raw JSON or
.codegraph/into the wiki vault, a PR description, or committed docs — it's a disposable sidecar in the project repo (git-ignored). Re-run it fresh next time rather than treating old output as durable.
If CodeGraph isn't installed
auto/builtin still work with zero setup (uses the regex AST extractor + rg). If you want
the enhanced cross-file call-graph evidence and the user is fine with installing something:
npm install -g @colbymchenry/codegraph
or point CODE_UNDERSTANDING_CODEGRAPH_BIN at an existing binary. Never install without the
user's go-ahead — ask first, then re-run the command.
Check obsidian-wiki doctor --project <dir> for the code-understanding.* capability lines
(builtin, rg, codegraph, codegraph-index, codegraph-fresh, codegraph-gitignore) to
see what's available before deciding which backend to request explicitly.