Review diffs, files, and documents
right in your terminal
Code review for AI agents, Claude Code, and pi. Annotate diffs, plans, and documents in a TUI. Structured output on quit, ready for AI agents, scripts, or any tool.
brew install umputun/apps/revdiff
Built for one thing, done well
Navigate diffs. Annotate lines. Quit. Your annotations go to the AI agent.
Full-file diff view
Syntax-highlighted diffs with added, removed, and context lines. Press i for an info popup with review scope, file/status counts, aggregate +/- stats, and the commit log for the current ref range. Blame gutter shows who wrote each line.
Inline annotations
Annotate any line, added, removed, or context. File-level notes too. Annotation list popup to browse all notes across files.
Structured output
On quit, annotations go to stdout as structured text. Pipe into Claude, scripts, or any tool. Use --output to write to a file.
Search & navigate
Vim-style / search with n/N match navigation. Jump between hunks with [/]. Half-page scroll with Ctrl+d/u.
All-files mode
Browse and annotate all tracked files with --all-files (git). Filter with --include and --exclude. Review standalone files with --only or piped output with --stdin.
Collapsed & wrap modes
Collapsed mode (v) shows final text with change markers. Word wrap (w) for long lines. Line numbers (L) and blame (B) gutters.
Claude Code integration
Install via Claude Code plugin. Use /revdiff to review uncommitted changes, /revdiff-rerun to address annotations, and a planning plugin that auto-launches on plan exit.
Pi integration
Launch revdiff from pi, keep captured annotations visible in a widget and side panel, then rerun or apply them when you’re ready.
OpenCode integration
Launch revdiff from OpenCode via /revdiff command or tool call. Plan-review plugin auto-launches on plan mode idle.
Markdown TOC
Single-file markdown review gets a sidebar with header navigation. Jump between sections, track your position as you scroll. Works with --only and --stdin.
Themes & keybindings
8 bundled color themes with interactive selector (T) and live preview. 23 customizable color keys. Full keybinding remapping. Optional vim-motion preset. Community theme gallery.
Git, Mercurial & Jujutsu
Works with Git, Mercurial, and Jujutsu repositories. Auto-detects the VCS (jj wins over git in colocated repos). Diffs and blame work across all three backends; --all-files is supported for git and jj.
The review loop
You annotate. Claude fixes. You verify. Repeat until done.
Works with your terminal
As a Claude Code plugin, revdiff launches as an overlay on top of your session.
display-popup$TMUXzellij run --floating$ZELLIJkitty @ launch --type=overlay$KITTY_LISTEN_ONwezterm cli split-pane$WEZTERM_PANEcmux new-split + cmux send$CMUX_SURFACE_ID$TERM_PROGRAM$ITERM_SESSION_IDemacsclient$INSIDE_EMACSPriority: tmux → zellij → kitty → wezterm/kaku → cmux → ghostty → iTerm2 → Emacs vterm
Installation
Homebrew
brew install umputun/apps/revdiffArch Linux (AUR)
paru -S revdiffDebian/Ubuntu
sudo dpkg -i revdiff_*.debRPM-based
sudo rpm -i revdiff_*.rpmPi package
pi install https://github.com/umputun/revdiffDownload
deb, rpm, archives for linux/darwin amd64/arm64 on GitHub Releases
Claude Code plugin
Interactive code review directly from a Claude session. Annotate, fix, re-review in a loop.
Install
/plugin marketplace add umputun/revdiff
/plugin install revdiff@revdiffReview
/revdiff masterOpens revdiff in an overlay. Reviews current branch against master.
Annotate & fix
Add annotations on lines you want changed. Quit. Claude reads them, plans fixes, applies them. Re-launch to verify.
Slash commands
/revdiff -- smart detection: uncommitted, last commit, or branch diff
/revdiff HEAD~1 -- review last commit
/revdiff main -- review current branch against main
/revdiff HEAD~3 -- review last 3 commits
/revdiff --staged -- review staged changes only
/revdiff all files -- browse all tracked files in the projectNatural language
"review diff" -- same as /revdiff, smart detection
"review diff HEAD~1" -- last commit
"review diff against main" -- branch diff
"review changes from last 2 days" -- Claude resolves the ref
"revdiff for staged changes" -- staged only
"review all files exclude vendor" -- browse project, skip vendor/
"what themes does revdiff support?" -- ask about config without launching
"switch revdiff to dracula theme" -- modify config via conversationCodex plugin
Same diff review workflow for Codex CLI sessions. Plus plan review via rollout file extraction.
Install
git clone https://github.com/umputun/revdiff.git
cd revdiff
cp -r plugins/codex/skills/revdiff ~/.codex/skills/revdiff
cp -r plugins/codex/skills/revdiff-plan ~/.codex/skills/revdiff-planReview
/revdiff
/revdiff-planSame /revdiff workflow as Claude Code. /revdiff-plan extracts the last Codex response for annotation.
OpenCode integration
Diff review and plan annotation for OpenCode sessions. Wraps the same launcher script used by Claude Code.
Install
cd plugins/opencode && bash setup.shReview
/revdiff
/revdiff HEAD~3Plan-review plugin auto-launches revdiff when the assistant exits plan mode.
Output format
Structured, parseable, pipe-friendly.
## handler.go (file-level)
consider splitting this file into smaller modules
## handler.go:43 (+)
use errors.Is() instead of direct comparison
## handler.go:43-67 (+)
refactor this hunk to reduce nesting
## store.go:18 (-)
don't remove this validation