Overview
Skim is a keyboard-driven terminal UI for reviewing code changes. It reads diffs straight from git and renders them with a vim-style modal interface, so you can move through a review entirely from the home row: no mouse, no leaving the terminal.
Why Skim
Section titled “Why Skim”Reviewing changes in a pager means scrolling walls of text with no sense of
structure. GUI tools pull you out of your keyboard flow, and git diff gives
you nowhere to leave a note as you read. Skim keeps the whole loop in the
terminal:
- Vim-style modal interface:
hjkl,Ctrl-n/Ctrl-p, and change-to-change motions. - File-by-file navigation with a fuzzy command palette.
- Unified and side-by-side views, plus hunk view modes.
- Tree-sitter syntax highlighting, processed asynchronously for smooth scrolling.
- Inline comments you can export to the clipboard.
- Staging, live refresh, git blame, and Graphite stack navigation: from inside the TUI.
- A built-in AI agent panel (ACP) and an MCP server for external agents.
How it works
Section titled “How it works”Skim is a single binary that shells out to git in your current directory,
so it respects your existing git configuration and works in any repository.
It follows git’s own diff conventions for specifying what to review:
skim # working-directory changesskim --staged # staged changesskim main # working dir vs. a branchskim main..feature # compare two refsRendering uses libvaxis for the TUI and tree-sitter for syntax highlighting. Startup is sub-10ms and scrolling targets 60 FPS.
Next steps
Section titled “Next steps”- Prerequisites: what you need installed.
- Build from source: clone, build, run.
- Your first review: a quick tour of the interface.
- Keybindings & commands: the complete keymap.