stage is a git application for the terminal. It does what lazygit does, with lazygit’s keys, and it adds the half that reviewing needs: a diff you can read, navigate, and comment on.
It exists because of how code gets written now. An agent produces a change in one pass. You did not type it, and you have to decide which parts of it are correct.
The loop
Section titled “The loop”- An agent writes a change.
- You read every line of it.
- You stage the lines you accept, and commit them.
- You send the rest back as comments.
Each step has a page:
| Step | Page |
|---|---|
| Read | Reading a diff |
| Understand | Navigating with LSP |
| Accept | Staging |
| Send back | Review comments |
Reading comes first
Section titled “Reading comes first”The diff is the product. stage shows it with syntax colors, marks the changed words inside a changed line, and puts the two sides beside each other.
You can also move through the code from the diff. Put the cursor on a name,
press g, and stage opens the file that defines it. A language server answers,
so the answer is the real one.
This is the half that a git application usually leaves out. For someone reading unfamiliar code, it is the half that matters.
The rest is lazygit
Section titled “The rest is lazygit”Staging, committing, branches, history editing, stashes, worktrees: the workflow and the keys are lazygit’s. Where both tools have an action, lazygit’s key wins.
If lazygit is in your hands already, most of stage is too. Read Coming from lazygit for the differences.
What stage is not
Section titled “What stage is not”stage is not an agent, not an editor, and not a merge tool.
It also does not reimplement git. Every command shells out to the git binary,
and @ shows you the commands it ran.
Start here
Section titled “Start here”- Install it.
- Do Your first review.
- Read Panels, modes and contexts to understand the keyboard.