Skip to main content

x-ray

Deep codebase exploration using semantic search and relationship mapping. Use when you need to understand the current codebase.

설치로 이동

소스 정보

저장소
bartolli/codanna
최근 소스 활동
2026년 8월 28일 20:22
감지된 SKILL.md 언어
영어
스타
742
포크
70

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
25 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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
## Reframe LITERAL: "$ARGUMENTS" ### Definitions - LITERAL — what the user typed - INTENT — what they mean, given SESSION_CONTEXT - SESSION_CONTEXT — recent work; held by you, not by the index - BRIDGE — your job: LITERAL + SESSION_CONTEXT → INTENT → query ### Rules - Search INTENT, not LITERAL. - Context disambiguates → NARROW. - Context insufficient → BROAD. Vague beats confidently-wrong-narrow. ### Transforms (LITERAL → INTENT) - VAGUE → specify ("that parsing thing" → "language parser implementation") - QUESTION → keywords ("how does parsing work?" → "parsing implementation process") - CONVERSATIONAL → technical ("stuff that handles languages" → "language handler processor") - BROAD → contextualize ("errors" → "error handling exception management") - CONTEXTUAL → reconstruct ("the logging" → "prompt eval logging", when SESSION_CONTEXT = prompt eval work) OptimizedQuery: _{written against INTENT}_ --- ## Loop ### Definitions - SEARCH — `codanna mcp semantic_search_with_context query:"<q>" limit:5` - INSPECT — read source at a LOCATION (Read tool or `sed -n 'A,Bp' file`) - TRAVERSE — `codanna retrieve describe <name|symbol_id:N>` on a RELATIONSHIP - REFINE — return to SEARCH with a new OptimizedQuery - RESULT — one hit from SEARCH; carries SCORE, signature, doc, LOCATION, RELATIONSHIPS - SCORE — relevance ∈ [0,1]; focus on SCORE > 0.6 - LOCATION — `file_path:start_line-end_line` - RELATIONSHIPS — calls, called_by, implements, defines ### Default flow 1. SEARCH(OptimizedQuery) 2. For each RESULT with SCORE > 0.6: - INSPECT if signature/doc is insufficient - TRAVERSE 1–2 RELATIONSHIPS that look load-bearing 3. Picture incomplete → REFINE with what you learned 4. INTENT answered → stop ### INSPECT mechanics LOCATION `src/io/exit_code.rs:108-120` → - Read tool: `file_path=<env.cwd>/src/io/exit_code.rs, offset=108, limit=13` - limit formula: `end_line - start_line + 1` - sed (Unix only): `sed -n '108,120p' src/io/exit_code.rs` ### TRAVERSE heuristics - RELATIONSHIPS appearing across multiple RESULTs are load-bearing — follow first - 1–2 per RESULT is usually enough - Prefer `symbol_id:N` over name when shown — avoids ambiguity --- ## Mode This skill is EXPLORE, not ACT. - EXPLORE: build understanding, surface patterns, identify integration points - ACT: modify code, refactor, implement INTENT answered → present findings → await user direction. Do not transition to ACT inside this skill. --- ## Graph 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. ```bash # 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] ``` - Default view: a 2D layered call DAG -- callers above, callees below, labels at rest, deterministic; hover a name to light incoming (accent) / outgoing (red) edges; dashed edges are cycle edges; click a node to open its file - `--3d` keeps the 3D force view (the 5-second gestalt of a tangled 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) - Flags: depth default 2 (positional), `--cap N` per-level cap (default 5, 0 = 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) - Output: `.codanna/visualizations/graph-{name}-{timestamp}.html` Structure and flow over the same dump: ```bash # 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] ``` - Pick by question: "what depends on this symbol / what breaks if I change it" -> `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) - `--radial` is a POSTER, not a navigation surface: one all-at-once image of a 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 - Every 2D view opens the same detail panel on click (signature, kind chips, 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 - "what is the shape of the WHOLE codebase -- module shares, hubs, which modules talk, history over time" -> the sibling `graph` skill (`node ${CLAUDE_SKILL_DIR}/../graph/graph.mjs`): the disc is the living whole-map these views zoom into. The division: the disc owns whole-codebase RELATIONSHIP shape (edge webs, hubs, git-date timeline); x-ray owns scoped CONTAINMENT structure and single-symbol neighbourhoods. When both could answer, prefer the disc for whole-codebase questions and x-ray for scoped ones -- never render both for one question - `--depth` collapses deeper levels into counted labels; `--root` scopes to a module prefix (edges crossing the root are dropped and counted); symbols without a module path hang off their file path; Field/Variable/Parameter out by default (`--kinds` to include) - Shared pieces: `graph/dump.js` (dump reader), `graph/hierarchy.js` (tree builder + symbol-to-leaf map), the renderers under `graph/`, and `graph/theme.js` + `graph/tokens.mjs` (design tokens; node >= 22.12) ### Suggest when - RESULT has 3+ RELATIONSHIPS in multiple directions - User asks about connections, dependencies, or topology - TRAVERSE across RESULTs reveals a tangled web ### Skip when - 0-2 RELATIONSHIPS (TRAVERSE is sufficient) - User asks about implementation, not structure --- ## Budget Approximate per-operation cost: - SEARCH — ~500 tokens - TRAVERSE — ~300 tokens - INSPECT — ~100–500 tokens (depends on range) Prefer fewer high-value operations over many cheap ones. Three SEARCHes with deliberate REFINE beats ten with drift. --- ## Filters Add `lang:rust` (or `lang:python`, `lang:typescript`, …) to SEARCH to narrow by language in multi-language projects.
GitHub에서 보기