Generate interactive architecture tours for any codebase. Understand repos in minutes, not days.
RepoNav provides 7 well-intentioned static analysis tools with detailed descriptions (194 - 500 chars, above baseline 194 avg). All tools have input schemas with type definitions and descriptions. However, critical gaps exist: (1) No output schemas documented, LLMs cannot predict return structure for chaining; (2) No error handling guidance, tools return raw analysis without recovery hints; (3) Tool names lack action verbs (analyze, layer-violations, blast-radius are descriptive but not verb_noun pattern); (4) No pagination/limit enforcement on list-like tools (layer-violations, dead-code, coupling, flows return unbounded results); (5) No tool annotations (readOnlyHint present in Risk field but not in MCP schema). Descriptions are strong (50 - 500 chars, LLM-optimized) but parameter descriptions are minimal (10 - 30 chars, below 72 char baseline). Output is READ_ONLY for all tools, which is correct, but this is not formally declared in schemas.
Run Tier 0 + Tier 1 static analysis on a repository. summary format (~200-500 tokens, DEFAULT): first orientation surface with explicit architecture/risk/confidence sections, scope/completeness truth, preserved legacy fields, and slice-2 risk signals such as ownership concentration and dangerous hotspots when temporal data is available. Start here. toon format (~1-2K tokens): preferred for agent consumption — 60-65% smaller than markdown at 100% fidelity on key counts (verified by scripts/bench/toon-vs-markdown.mjs, 2026-04-30). Use when summary is insufficient but you do not need full json. compact format (~20K tokens): all per-file metrics, frameworks, entry points, circular deps. json format (~114K tokens): full dependency graph, file classifications, layer violations, boundary roles. Use tier parameter to control depth (0-6). Tier 5 includes multi-repo federation. Tier 6 includes temporal intelligence (git history).
Compute which files depend (directly or transitively) on a given file. Uses the import graph edges — paths must be relative to the repo root (e.g. src/analyzers/index.ts).
Identify file pairs that change together frequently (co-change coupling). Returns pairs ranked by change frequency.
Identify files that are never imported by any other file in the repository. Returns a list of dead-code files with their metrics.
No output schemas documented. LLMs cannot predict return structure (fields, types, nesting) for downstream chaining or data extraction. Analyze returns ~114K tokens of JSON but structure is opaque to the agent.
No error handling guidance. Tools return raw analysis or implicit failures without recovery hints. E.g., if repo path is invalid, does it return empty results or an error? How should the LLM retry?
Tool names lack action verbs. 'analyze', 'layer-violations', 'blast-radius' are descriptive but not verb_noun pattern (e.g., 'analyze_repository', 'list_layer_violations', 'compute_blast_radius'). LLMs infer intent from names, ambiguous names reduce tool selection confidence.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Detect and return data flow sequences through the codebase. Traces how data moves from entry points through function calls and returns.
Estimate the impact of changes to a file by computing how many other files would be affected (direct and transitive dependents).
Return architectural layer violations: files that import from a higher or skipped layer. Use top to cap output (default: all). Each violation is ~200 tokens; this repo has ~114 violations.
No pagination or result limits enforced. layer-violations, dead-code, coupling, flows accept 'top' param but default to 'all'. Returning 114+ violations or unbounded flow sequences blows context windows. Descriptions mention counts but do not enforce caps.
Parameter descriptions are minimal (10 - 30 chars, below 72 char baseline). E.g., 'repo' is 'Absolute or relative path to the repository root' (50 chars) but lacks format hints, validation rules, or examples. 'top' lacks min/max bounds or default behavior when omitted.