Skip to content

Getting started ​

Diffo turns any git changeset into a live review in your browser, whether that's uncommitted agent output, a branch, or a commit range. Your comments go straight to the agent that wrote the code, and its fixes land in the diff while you keep reading. It's entirely local: no config, no accounts, nothing leaves your machine.

The Diffo loop: in the agent's terminal you type /diffo and the review opens beside it; your question on line 14 crosses to the agent, which fixes the code and answers; the answer and the fix cross back into the thread and the diff you are reading.The Diffo loop: in the agent's terminal you type /diffo and the review opens beside it; your question on line 14 crosses to the agent, which fixes the code and answers; the answer and the fix cross back into the thread and the diff you are reading.

Requirements ​

Install ​

There are two ways in: paste a prompt and let your agent handle it, or run the install yourself. Both end in the same place.

Have your agent set it up ​

Paste this into Claude Code, Cursor, Codex, or whichever agent you already use:

text
Run `npx skills add DiffoHQ/diffo --skill diffo -g` and open the diffo review

That installs the skill globally, so it is there in every repo, and the review of your current changeset opens in the browser. There is nothing to configure afterwards.

Install the skill yourself ​

bash
npx skills add DiffoHQ/diffo --skill diffo

That's the whole install: project-local by default, -g for everywhere. There is no CLI to set up: the skill runs diffo through npx, so it comes along on demand. Then, in any session, one command:

RunAnd the agent reviews
/diffowhat it just wrote, before anything is committed
/diffo maineverything since you branched off main
/diffo <PR link>a GitHub pull request, checked out in a worktree of its own; your review goes back to GitHub when you finish

The agent opens the review and hands you the URL. Your comments arrive in its context, its replies land inline in your threads, and its fixes update the diff live while you read.

And the plain diff viewer needs no install at all: npx -y @diffohq/diffo inside any repo opens the browser on your working tree vs HEAD.

Running from a clone instead

Contributors (or anyone avoiding npx) can run the CLI straight out of a checkout:

bash
git clone https://github.com/DiffoHQ/diffo.git && cd diffo
pnpm install && pnpm build
node dist/cli.mjs setup   # or `node dist/cli.mjs` from any repo to review it

One setup, every agent ​

Installing the skill covers the agent you installed it from. diffo setup goes wider: it detects every coding agent on the machine and registers with all of them at once, including the plugin form for Cursor, VS Code, and Copilot CLI. It never touches an agent that isn't installed, never overwrites anything that isn't Diffo's, and is safe to re-run any time:

AgentHow it's wired
Claude Codeskill installed at ~/.claude/skills/diffo
Codex · Gemini CLI · Amp · Goose · OpenCodeone shared copy in the cross-tool ~/.agents/skills dir
Cursorplugin linked into ~/.cursor/plugins/local
VS Code (Copilot Chat)plugin registered in chat.pluginLocations
Copilot CLIcopilot plugin install

And it stays set up: npx -y @diffohq/diffo resolves a fresh CLI on every review, and the CLI carries the installed skill forward, so there is no re-running setup after upgrades.

Prefer to wire an agent by hand? ​

setup does nothing magical: each row above is one step you can do yourself instead:

AgentManual equivalent
Claude Codecopy skills/diffo/SKILL.md to ~/.claude/skills/diffo/SKILL.md
Codex · Gemini CLI · Amp · Goose · OpenCodethe same file to ~/.agents/skills/diffo/SKILL.md
Cursorsymlink the diffo package directory into ~/.cursor/plugins/local/diffo
VS Code (Copilot Chat)add the package path to "chat.pluginLocations" and set "chat.plugins.enabled": true in your user settings.json
Copilot CLIcopilot plugin install <path-to-the-diffo-package>

Hand-wired skill copies don't self-refresh, so re-copy after upgrading.

Next steps ​

Released under the Apache-2.0 License.