graph
Whole-codebase structural map of the codanna index as one self-contained HTML disc. Wedges…
Deep codebase exploration using semantic search and relationship mapping. Use when you need to understand the current codebase.
$ npx -y skills add bartolli/codanna --skill x-ray --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/x-rayContext preview
The summary Claude sees to decide when to auto-load this skill.
Deep codebase exploration using semantic search and relationship mapping. Use when you need to understand the current codebase.
name: x-ray description: Deep codebase exploration using semantic search and relationship mapping. Use when you need to understand the current codebase. allowed-tools: Bash(codanna:*), Bash(sed:*), Bash(rg:*), Bash(node:*), Read, Grep, Glob
LITERAL: "$ARGUMENTS"
OptimizedQuery: _{written against INTENT}_
---
1. SEARCH(OptimizedQuery) 2. For each RESULT with SCORE > 0.6:
3. Picture incomplete → REFINE with what you learned 4. INTENT answered → stop
LOCATION `src/io/exit_code.rs:108-120` →
---
This skill is EXPLORE, not ACT.
INTENT answered → present findings → await user direction. Do not transition to ACT inside this skill.
---
EXPLORE-legal: derives a read-only view, does not modify source.
When TRAVERSE reveals dense, multi-directional RELATIONSHIPS, visualize. All pages share the design tokens with the sibling `graph` skill: dark by default, light/dark toggle top-right, `--light` opens light.
# codanna >= 0.14 (has `codanna dump`): one index read, then the neighborhood in memory
node ${CLAUDE_SKILL_DIR}/visualize-dump.js <symbol_id:ID | name> [depth]
# older binaries: one `retrieve describe` per node (3D force view only)
node ${CLAUDE_SKILL_DIR}/visualize-graph.js <symbol_id:ID> [depth]rest, deterministic; hover a name to light incoming (accent) / outgoing (red) edges; dashed edges are cycle edges; click a node to open its file
neighbourhood; `--layout force|td|lr|radialout` implies it); `--all` renders the whole index and is always 3D (`--bake` / `--no-bake` control the server-side pinned layout, on by default above 2000 nodes)
none), `--from graph.jsonl` reuses a saved dump, `--binary PATH`, `--no-open`, `--relation calls|defines|uses|implements|extends` filters `--all`, `--self-contained` inlines the 3D vendor libs (the DAG page always is)
Structure and flow over the same dump:
# structure: collapsible left-to-right tree (drill-down); --radial for the poster IMAGE
node ${CLAUDE_SKILL_DIR}/visualize-tree.js [--root crate::indexing] [--depth N] [--kinds Function,Method,...] [--radial]
# dependencies on the structure: hierarchical edge bundling (Calls by default)
node ${CLAUDE_SKILL_DIR}/visualize-bundle.js [--root crate::indexing] [--depth N] [--relation calls|uses|implements|extends]-> `visualize-dump.js` (call DAG); "how is this module organized / let me explore" -> `visualize-tree.js` (expand/collapse like a file explorer -- the NAVIGATION surface for structure); "which modules call which, inside one scope, on a printable page" -> `visualize-bundle.js --depth N` (arcs aggregate to collapsed leaves, width ~ log count; hover: callers blue, callees red)
scope's containment shape for docs, slides, and side-by-side scope comparison. Without an explicit `--depth` it auto-collapses deep levels into counted ancestors (<= ~1200 rendered leaves). Never reach for it when the user wants to explore -- that is the collapsible tree's job
file:span, relation groups with go-navigation where the view supports it); opening the source is the explicit Open-file action inside the panel, never the click itself -- file:// opens in the browser, not the editor
modules talk, history over time" -> the siblin
Local code intelligence MCP server and CLI for AI coding agents
Repo: bartolli/codanna