Skip to content

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.

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.

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:

Terminal window
skim # working-directory changes
skim --staged # staged changes
skim main # working dir vs. a branch
skim main..feature # compare two refs

Rendering uses libvaxis for the TUI and tree-sitter for syntax highlighting. Startup is sub-10ms and scrolling targets 60 FPS.