Talk to the agent on the line
Ask on any line and the agent answers in the thread. Ask for a change and the fix lands in the diff while you read.
How the loop works
A live review on your machine: the change in layers, in the order it should be read, and the agent on the other end of every comment. For what it just wrote, or for a pull request.
Diffo doesn't grade your diff or leave generated nitpicks. It isn't an AI reviewer. It's a reading tool for the human, wired to the one process that still holds the full context of the change: the agent that just wrote it.
npx skills add DiffoHQ/diffo --skill diffoThen, in any agent session, one command:
| Run | And the agent reviews |
|---|---|
/diffo | what it just wrote, before anything is committed |
/diffo main | everything since you branched off main |
/diffo <PR link> | a GitHub pull request, checked out in a worktree of its own |
The agent opens the review and hands you the URL. Nothing to commit, nothing to push, no CI to wait for. Installed from one agent and want them all? diffo setupregisters every agent on the machine.
On a multi-file or structural change it leaves one guide comment at the top of the review: what the change does, plus a mermaid diagram when the shape is easier to see than to read. Ask, and it posts layers: the change as ordered steps, in the order it should be read, not alphabetically. It orients your reading and stops there, with no verdicts.
Syntax-highlighted unified or split diffs, keyboard-first navigation, per-file viewed tracking. The changeset stays live: fresh hunks appear as the agent works, and a hunk you already read says changed since you read it.
On a line, a file, or the whole changeset. Every thread is marked Change (edit the code) or Question (answer it, touch nothing), so a question never turns into an unrequested refactor.
Send one thread now, or hand back the whole batch with honest coverage stats. Answers land inline in your threads; fixes land in the diff you're reading, so you're reading the fix itself, not a promise of one.
A diff arrives alphabetically, which is almost never the order to read it in. Ask, and the agent posts layers: the change as ordered steps, each with a title, a summary, and its files. You read one at a time; ] steps to the next, and anything the agent touches after posting gathers in a Since your review layer, so nothing hides outside the plan. Layers has the whole of it.
When a pull request lands on your desk, /diffo <PR link> opens it in a worktree of its own, with its conversation imported and your agent beside you as a copilot for code it did not write. Comments for the author go to GitHub as one review when you finish; questions for your agent never leave your machine. Reviewing a pull request has the loop.