Skip to main content

Persistent incremental knowledge graph for token-efficient, context-aware code reviews with Claude Code

Project description

code-review-graph

Stop burning tokens. Start reviewing smarter.

Stars MIT Licence CI Python 3.10+ MCP v1.7.2


Claude Code re-reads your entire codebase on every task. code-review-graph fixes that. It builds a structural map of your code with Tree-sitter, tracks changes incrementally, and gives Claude precise context so it reads only what matters.

The Token Problem: 6.8x fewer tokens with higher review quality


Quick Start

Claude Code Plugin (recommended)

claude plugin marketplace add tirth8205/code-review-graph
claude plugin install code-review-graph@code-review-graph

pip

pip install code-review-graph
code-review-graph install

Restart Claude Code after either method. Requires Python 3.10+ and uv.

Then open your project and tell Claude:

Build the code review graph for this project

The initial build takes ~10 seconds for a 500-file project. After that, the graph updates automatically on every file edit and git commit.


How It Works

Your repository is parsed into an AST with Tree-sitter, stored as a graph of nodes (functions, classes, imports) and edges (calls, inheritance, test coverage), then queried at review time to compute the minimal set of files Claude needs to read.

Architecture pipeline: Repository to Tree-sitter Parser to SQLite Graph to Blast Radius to Minimal Review Set

Blast-radius analysis

When a file changes, the graph traces every caller, dependent, and test that could be affected. This is the "blast radius" of the change. Claude reads only these files instead of scanning the whole project.

Blast radius visualization showing how a change to login() propagates to callers, dependents, and tests

Incremental updates in < 2 seconds

On every git commit or file save, a hook fires. The graph diffs changed files, finds their dependents via SHA-256 hash checks, and re-parses only what changed. A 2,900-file project re-indexes in under 2 seconds.

Incremental update flow: git commit triggers diff, finds dependents, re-parses only 5 files while 2,910 are skipped

12 supported languages

Python, TypeScript, JavaScript, Go, Rust, Java, C#, Ruby, Kotlin, Swift, PHP, C/C++

Each language has full Tree-sitter grammar support for functions, classes, imports, call sites, inheritance, and test detection.


Benchmarks

All figures come from real tests on three production open-source repositories.

Benchmarks: httpx 27.3x, FastAPI 6.3x, Next.js 4.9x token reduction with higher review quality

Code review benchmark details (6.8x average reduction)

Tested across 6 real git commits. The graph replaces reading entire source files with a compact structural summary (156-207 tokens) covering blast radius, test coverage gaps, and dependency chains.

Repo Size Standard Approach With Graph Reduction Review Quality
httpx 125 files 12,507 tokens 458 tokens 26.2x 9.0 vs 7.0
FastAPI 2,915 files 5,495 tokens 871 tokens 8.1x 8.5 vs 7.5
Next.js 27,732 files 21,614 tokens 4,457 tokens 6.0x 9.0 vs 7.0
Average 13,205 1,928 6.8x 8.8 vs 7.2

Standard approach: reading all changed files plus the diff. Quality scored on accuracy, completeness, bug-catching potential, and actionable insight (1-10 scale).

Live coding task details (14.1x average, 49x peak)

An agent performed 6 real coding tasks (adding features, fixing bugs) across the same repositories. The graph directed it to the right files and away from everything else.

Task Repo With Graph Without Graph Reduction Files Skipped
Add rate limiter httpx 14,090 64,666 4.6x 58
Fix streaming bug httpx 14,090 64,666 4.6x 59
Add rate limiter FastAPI 37,217 138,585 3.7x 1,120
Fix streaming bug FastAPI 36,986 138,585 3.7x 1,121
Add rate limiter Next.js 15,049 739,352 49.1x ~16,000
Fix streaming bug Next.js 16,135 739,352 45.8x ~16,000

The graph identified the correct files in every case. Savings scale with repository size.

Monorepo scale: the 49x case

Large repositories benefit most. In the Next.js monorepo (27,732 files, 739K tokens), the graph narrows the review context to ~15 files and 15K tokens, a 49x reduction with 27,700+ files excluded entirely.

Next.js monorepo: 27,732 files funneled down to ~15 files, 49x fewer tokens


Usage

Slash commands
Command Description
/code-review-graph:build-graph Build or rebuild the code graph
/code-review-graph:review-delta Review changes since last commit
/code-review-graph:review-pr Full PR review with blast-radius analysis
CLI reference
code-review-graph install     # Register MCP server with Claude Code
code-review-graph build       # Parse entire codebase
code-review-graph update      # Incremental update (changed files only)
code-review-graph status      # Graph statistics
code-review-graph watch       # Auto-update on file changes
code-review-graph visualize   # Generate interactive HTML graph
code-review-graph serve       # Start MCP server
MCP tools

Claude uses these automatically once the graph is built.

Tool Description
build_or_update_graph_tool Build or incrementally update the graph
get_impact_radius_tool Blast radius of changed files
get_review_context_tool Token-optimised review context with structural summary
query_graph_tool Callers, callees, tests, imports, inheritance queries
semantic_search_nodes_tool Search code entities by name or meaning
embed_graph_tool Compute vector embeddings for semantic search
list_graph_stats_tool Graph size and health
get_docs_section_tool Retrieve documentation sections

Features

Feature Details
Incremental updates Re-parses only changed files. Subsequent updates complete in under 2 seconds.
12 languages Python, TypeScript, JavaScript, Go, Rust, Java, C#, Ruby, Kotlin, Swift, PHP, C/C++
Blast-radius analysis Shows exactly which functions, classes, and files are affected by any change
Auto-update hooks Graph updates on every file edit and git commit without manual intervention
Semantic search Optional vector embeddings via sentence-transformers
Interactive visualisation D3.js force-directed graph with edge-type toggles and search
Local storage SQLite file in .code-review-graph/. No external database, no cloud dependency.
Watch mode Continuous graph updates as you work
Configuration

To exclude paths from indexing, create a .code-review-graphignore file in your repository root:

generated/**
*.generated.ts
vendor/**
node_modules/**

For semantic search, install the optional embeddings dependencies:

pip install code-review-graph[embeddings]

Contributing

git clone https://github.com/tirth8205/code-review-graph.git
cd code-review-graph
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
Adding a new language

Edit code_review_graph/parser.py and add your extension to EXTENSION_TO_LANGUAGE along with node type mappings in _CLASS_TYPES, _FUNCTION_TYPES, _IMPORT_TYPES, and _CALL_TYPES. Include a test fixture and open a PR.

Licence

MIT. See LICENSE.


pip install code-review-graph && code-review-graph install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code_review_graph-1.8.2.tar.gz (59.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

code_review_graph-1.8.2-py3-none-any.whl (44.7 kB view details)

Uploaded Python 3

File details

Details for the file code_review_graph-1.8.2.tar.gz.

File metadata

  • Download URL: code_review_graph-1.8.2.tar.gz
  • Upload date:
  • Size: 59.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for code_review_graph-1.8.2.tar.gz
Algorithm Hash digest
SHA256 fb281c04f36ce215ebe7a233f26702bce556ece1ce495399f9a3ce6cf572b82f
MD5 f8ebb29a8457106a1599ade0f4b68058
BLAKE2b-256 2beac91d0dda02f788beeb3dcb1ce3cfe759924c7664276a8e4da3a56d79acab

See more details on using hashes here.

File details

Details for the file code_review_graph-1.8.2-py3-none-any.whl.

File metadata

File hashes

Hashes for code_review_graph-1.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a4038844c8ae673131eb3c6f84df2f3dca35823f1e37f01f3cbd643b3ab482b
MD5 4253f8d1b5e968f66a0a2cb445ec9852
BLAKE2b-256 ed8ee6614c6b67215ff7bccf41eaa61984c603cbd4d4f403f4e7fc73bd134a3b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page