Claude Review
Browser-based review tool for Claude Code. Add inline comments on code changes, text files, or conversation transcripts, and send structured feedback back to Claude.
Quick Start
Option A — cross-platform (Claude Code, Cursor, Codex, and 40+ agents):
npx skills add vrppaul/claude-review -g -y
Option B — Claude Code plugin marketplace:
/plugin marketplace add vrppaul/claude-review
Type /review-ui and the CLI is installed automatically on first use.
Review Modes
Diff mode (default)
Review current git changes in a GitHub-style diff view.
/review-ui
Shows all uncommitted changes (tracked, staged, and untracked) with two-column line numbers, add/delete highlighting, and a file tree sidebar.
The header says what is under review and what it is being compared against — and that second half is a control. Read the same working tree against the base the review opened with, against an earlier round of it, or against any branch or tag; each says how many files it would show.
Nothing about the review changes with it: a thread stays anchored where it was written, and one a narrower base cannot draw is counted, listed, and one click away.
Files mode
Review any text files — plans, docs, configs, source code.
/review-ui plan
Opens the current plan file for inline review before approving. You can also review arbitrary files from the CLI:
claude-review --files plan.md
claude-review --files design.md api.py schema.sql
Shows files with single-column line numbers, syntax highlighting based on file extension, and a flat file list sidebar.
Transcript mode
Review a Claude Code conversation — every user and assistant message appears as a reviewable entry.
/review-ui transcript
Opens the current session's conversation for inline review. You can also review any JSONL conversation file from the CLI:
claude-review --transcript ~/.claude/projects/<project>/<session-id>.jsonl
Shows messages newest-first with timestamps, merges consecutive same-role entries into turns, and filters out tool calls and thinking blocks.
How it works
/review-ui (or /review-ui plan, /review-ui transcript)
-> Server starts, browser opens
-> You read the content, add inline comments on any line
-> Click Submit (or Ctrl+Shift+Enter)
-> Browser closes, formatted comments appear in Claude's context
-> Claude reads feedback and makes the requested changes
Features
Reading
- The whole diff as one stream — every file on screen, the sidebar navigates by scrolling
- Unified or split layout, with what changed inside a replaced line marked word by word
- Show the lines a hunk left out, or leave whitespace-only changes out entirely
- Read the same working tree against something else — the base the review opened with, an earlier round of it, or any branch or tag. A file the round rewrote loses the tick that said you had read it
- Fold a file away, mark it viewed, filter the tree by path; drag the tree narrower or put it away entirely
- Syntax highlighting that reads a hunk whole, so a docstring stays a docstring
- Light and dark, remembered, following the system until you choose
Commenting
- Inline comments on a line or a dragged range, on either side of the diff
- Suggest a replacement rather than describing one
- Mark a comment as a question or a blocker
- Ask about a comment without leaving the review, and read the answer in the thread it belongs to — turns, speakers and a composer under the last one
- Resolve a thread that is settled; it goes out marked resolved
- A "Replies" list in the header counts answers you have not read, and the tab title says so from a background tab
- Send a round rather than ending the review: the threads stay on screen, the agent answers and makes the changes, and the diff is taken again beneath them — a thread whose lines moved follows them, one whose lines are gone says so
- Comments survive a reload, and a review reopened on the same repository comes back on the same port, so an unsent draft is still there
Talking to the agent
- A panel on the right for what a thread is not about — the plan, the tests, a file nobody commented on. It reaches the same agent that answers the threads
- Point at a thread with
@, and its lines, comment and turns travel with the message - Two numbers, told apart: what handing the review over costs, and how much context the agent says it has left
- The agent can point at a line itself: a thread in its own colour, on the code rather than in a paragraph elsewhere, which you answer or settle like any other
- Watch what the agent is doing while it does it: a live line saying which files are in hand, replaced as it changes and gone when the work is
- The agent can speak first — work finished while you were reading arrives with a dot on the header chip, a count in the tab title and an optional tick
- Jump to a file the agent names, or be taken there and shown it
- Point at a thread or any file with
@, and it travels with the message - Stop a message the agent is still working on — a request, not a kill
- When the working tree moves on, the review says so and offers to take the diff again. It never swaps it under a half-written comment
Keyboard
j/kbetween lines,Enterto comment,]/[between filesn/pbetween comments,ato the next unread replyvviewed,ufold,?for the list
CLI Reference
claude-review diff # diff mode — review git changes
claude-review diff /path/to/repo # diff mode — specific repository
claude-review diff --base HEAD~3 # diff since a specific commit
claude-review diff --base v0.5.0 # diff since a tag
claude-review files plan.md # files mode — review text files
claude-review files a.md b.py c.rs # files mode — multiple files
claude-review transcript conv.jsonl # transcript mode — review conversation
claude-review wait --port 8765 # wait for a question, a message or a round
claude-review reply --port 8765 --thread <id> --question <id> "..." # answer in a thread
claude-review say --port 8765 --message <id> "..." # answer in the panel
claude-review status --port 8765 --model opus-5 --context "53% of 1M" # what only the agent knows
claude-review point --port 8765 --file a.py --lines 42-47 "..." # raise a thread on a line
claude-review progress --port 8765 --message <id> --file a.py "..." # what you are doing now
claude-review show --port 8765 --file a.py # take the reader to a file
claude-review context --port 8765 # catch up on a review under way
claude-review round --port 8765 # retake the diff after a round
claude-review --port 8080 diff # shared options before subcommand
claude-review --no-open diff # don't open browser automatically
claude-review --verbose diff --base HEAD~1 # enable diagnostic logging
claude-review --version # print the installed version
Answering from the review
While a review is open, any comment can carry a question, and the panel carries everything that belongs to no comment. These commands let the agent that wrote the change be the one that answers:
claude-review wait --port 8765 # block until something is said
claude-review reply --port 8765 --thread comment-3 "Because it moved to config"
claude-review say --port 8765 --message panel-1 "One failed; fixed and green"
wait prints one JSON object and exits — a question, a panel message, a
round, or {"type":"timeout"} if nothing was said — so it can be driven from
a loop. The /review-ui skill documents the loop.
Manual install (optional)
uv tool install claude-review
Ships as a prebuilt wheel on PyPI — no Node or pnpm required.
Development
# Python
uv sync # install dependencies
uv run pytest # run all tests (unit + integration + e2e)
uv run ruff check src/ tests/ # lint
uv run ty check src/ # type check
# Frontend
cd frontend && pnpm install # install dependencies
cd frontend && pnpm build # build (outputs to src/claude_review/static/dist/)
cd frontend && pnpm test # run tests
cd frontend && pnpm lint # lint
cd frontend && pnpm check # type check
License
MIT
Metadata
Release files for claude-review 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| claude_review-1.4.0.tar.gz | 1.2 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claude_review-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / claude_review-1.4.0.tar.gz
| Download URL | claude_review-1.4.0.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3592aa662b910b12019ce3d3d6476aeae7cbe3d70abbabec2ee862336806bbf5
|
|
BLAKE2b-256 checksum How to use checksums |
6141360847fa35de7c536167da9375506ee0cc2b7f70ac0d9011acc77533311d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / claude_review-1.4.0-py3-none-any.whl
| Download URL | claude_review-1.4.0-py3-none-any.whl |
|---|---|
| Size | 161.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19a58e597e4d60b747cbbcfb4bfdaf858d4aaa424caba4c6ac3b346f3d53717e
|
|
BLAKE2b-256 checksum How to use checksums |
c1c58302b9f430a631cdfbaa31b38f19b73a8f37a236c591c90cd582a1e5967e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for claude-review 1.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.