DiffDeck banner
ParthJadhav ParthJadhav

DiffDeck

Git community

Description

open git diffs in browser, add comments & send all to agent

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Diffdeck

[![npm](https://img.shields.io/npm/v/@parthj/diffdeck.svg?label=npm&color=cb3837)](https://www.npmjs.com/package/@parthj/diffdeck)

Open a Git diff in your browser from the terminal.

![DiffDeck's current desktop review workspace](e2e/__screenshots__/visual.e2e.ts/desktop-light-write.png)

`diffdeck` starts a local web UI for the diff you ask Git for, then opens it in your browser. Use it when:

  • You do not have a diff view where you are editing.
  • git diff in the terminal is too hard to read.
  • You are SSHed into a server and still want a clean visual review.

Optionally, you can comment on changed lines and copy all of them at once for your AI to resolve — the surrounding code context goes with them, so the agent has everything it needs to act.

Agentic Setup

Tell your coding agent (Claude Code, Cursor, etc.):

Install `@parthj/diffdeck` globally with `npm install -g @parthj/diffdeck`, then add `alias gd='diffdeck'` to my shell rc file. Run `gd` whenever I ask you to show me a diff.

Install

npm install -g @parthj/diffdeck

The package is scoped, but the installed command is `diffdeck`.

To update to the latest version:

npm install -g @parthj/diffdeck@latest

(`npm update -g` won't bump globally-installed packages because they're pinned to an exact version at install time.)

Make It A Drop-In

Diffdeck accepts the same diff arguments, so the simplest setup is a shell alias:

alias gd='diffdeck'

Then use it like `git diff`:

gd
gd --cached
gd HEAD~1 HEAD

Use It Like Git Diff

diffdeck
diffdeck --cached
diffdeck HEAD~1 HEAD
diffdeck -- -- '*.tsx'

Everything after Diffdeck's own options is passed through to `git diff` as long as it still produces plain patch output. Summary-only modes such as `--stat`, `--name-only`, `--raw`, and `--no-patch` are rejected because there is no file patch for the browser to render.

Options

Option What it does
`--repo <pa