A lightweight command-line tool that spins up a local web server to display Git commit diffs in a GitHub-like Files changed view
npx skills add https://github.com/yoshiko-pg/difit --skill difit-review使用 CLI 安装这个技能,并在你的工作区中直接复用对应的 SKILL.md 工作流。

difit is a CLI tool that lets you view and review local git diffs with a GitHub-style viewer. In addition to clean visuals, comments can be copied as prompts for AI. The local code review tool for the AI era!
Try it first
npx difit # View the latest commit diff in WebUI
Install and use
npm install -g difit
difit # View the latest commit diff in WebUI
Enable use from AI agents
npx skills add yoshiko-pg/difit # Add the Skills to your agent
Installed skills include:
difit: ask the user for a review through difit after code changesdifit-review: review a specific diff or PR and launch difit with findings or explanations preloaded as commentsdifit <target> # View single commit diff
difit <target> [compare-with] # Compare two commits/branches
difit # HEAD (latest) commit
difit 6f4a9b7 # Specific commit
difit feature # Latest commit on feature branch
difit @ main # Compare with main branch (@ is alias for HEAD)
difit feature main # Compare branches
difit . origin/main # Compare working directory with remote main
difit supports special keywords for common diff scenarios:
difit . # All uncommitted changes (staging area + unstaged)
difit staged # Staging area changes
difit working # Unstaged changes only
difit --pr https://github.com/owner/repo/pull/123
--pr mode fetches patches by running gh pr diff --patch under the hood.
It also imports unresolved inline review threads from the PR so they appear as startup comments in difit.
Authentication is handled by GitHub CLI:
gh auth loginGH_TOKEN or GITHUB_TOKENFor Enterprise Server PRs, authenticate GitHub CLI against your Enterprise host:
gh auth login --hostname YOUR-ENTERPRISE-SERVERGH_HOST=YOUR-ENTERPRISE-SERVER with GH_TOKEN/GITHUB_TOKENYou can inject initial review comments when launching difit:
difit --comment '{"type":"thread","filePath":"src/example.ts","position":{"side":"new","line":10},"body":"The background for this change is..."}'
--comment is repeatable and accepts either a single JSON object or a JSON array. Supported types:
thread: create a new thread at the specified diff positionreply: add a reply to the latest existing thread at the same diff positionIf the same comment already exists, difit skips importing it.
By using a pipe to pass unified diffs via stdin, you can view diffs from any tool with difit.
# View diffs from other tools
diff -u file1.txt file2.txt | difit
# Review saved patches
cat changes.patch | difit
# Compare against merge base
git diff --merge-base main feature | difit
# Review an entire existing file as newly added
git diff -- /dev/null path/to/file | difit
# Explicit stdin mode
git diff --cached | difit -
Stdin mode is selected with intent-first rules:
- explicitly enables stdin mode<target> / [compare-with]), --pr, or --tui are provided, difit treats the command as Git/PR/TUI mode and does not auto-read stdin| Flag | Default | Description |
|---|---|---|
<target> |
HEAD | Commit hash, tag, HEAD~n, branch, or special arguments |
[compare-with] |
- | Optional second commit to compare with (shows diff between the two) |
--merge-base |
false | Resolve the base revision with git merge-base before diffing (Git revision mode only) |
--pr <url> |
- | GitHub PR URL to review (e.g., https://github.com/owner/repo/pull/123) |
--comment <json> |
- | Inject initial comments (repeatable; accepts a JSON object or array) |
--port |
4966 | Preferred port; falls back to +1 if occupied |
--host |
127.0.0.1 | Host address to bind server to (use 0.0.0.0 for external access) |
--no-open |
false | Don't automatically open browser |
--mode |
split | Display mode: unified or split |
--tui (deprecated) |
false | Use terminal UI mode instead of WebUI |
--clean |
false | Clear all existing comments and viewed files on startup |
--include-untracked |
false | Automatically include untracked files in diff (only with . or working) |
--keep-alive |
false | Keep server running after browser disconnects (stop manually with Ctrl+C) |
--background |
false | Keep the server running in the background and output JSON connection info |
--context <lines> |
git default (3) | Limit surrounding context lines per change (0 shows changes only; not available with --pr or stdin) |
difit includes a review comment system that makes it easy to provide feedback to AI coding agents:
src/components/Button.tsx:L42 # This line is automatically added
Make this variable name more descriptive
For range selections:
src/components/Button.tsx:L42-L48 # This line is automatically added
This section is unnecessary
You can install the following Skills to work with difit from AI agents.
npx skills add yoshiko-pg/difit
Installed skills include:
difit: ask the user for a review through difit after code changesdifit-review: review a specific diff or PR and launch difit with findings or explanations preloaded as commentsAfter code edits or automated review, the agent can start the difit server with the appropriate skill.
.js, .jsx, .ts, .tsx.sh, .bash, .zsh, .fishdifit automatically identifies and collapses certain files to keep your view clean:
package-lock.json, go.mod, Cargo.lock, Gemfile.lock, etc.)*.min.js, *.min.css)*.map)*.msw.ts, *.zod.ts, *.api.ts)*.g.dart, *.freezed.dart)*.g.cs, *.designer.cs)*.pb.go, *.pb.cc, *.pb.h)db/schema.rb)_ide_helper.php)gradle.lockfile)uv.lock, pdm.lock)*.generated.cs, *.generated.ts, *.generated.js)@generated markerDO NOT EDIT header# Install dependencies
pnpm install
# Start development server (with hot reload)
# This runs both Vite dev server and CLI with NODE_ENV=development
pnpm run dev
# Build and start production server
pnpm run start <target>
# Build for production
pnpm run build
# Run tests
pnpm test
# Run typecheck, lint, and format
pnpm run check
pnpm run format
pnpm run dev: Starts both Vite dev server (with hot reload) and CLI server simultaneouslypnpm run start <target>: Builds everything and starts production server (for testing final build)gh pr diff --patch) for PR patch retrievalgh) for --pr modeMIT