Agent skill

Revdiff

by umputun in umputun/revdiff

Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.

MITAuto-check: notesDevelopment

Install Revdiff

skills CLI
$ npx skills add umputun/revdiff --skill revdiff -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install umputun/revdiff revdiff --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude-plugin/skills/revdiff .claude/skills/revdiff && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
revdiff
GitHub stars
916
Token cost
~5.5k tokens
SKILL.md length
2,681 words
Files
9 (incl. scripts, references)
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.

  • Works in 8 steps: Determine Review Mode → Launch Review → Process Annotations → …
  • Tasks that involve Git workflow
  • SKILL.md covers Activation Triggers, Answering Questions, Using Existing Review History and Opening an In-Session Review, plus 4 more sections
  • Runs Shell scripts from its folder; calls git and gh

What it does

Revdiff is an agent skill from umputun/revdiff. Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings. Opens revdiff in agterm/tmux/zellij/herdr/kitty/wezterm/cmux/ghostty/iterm2/emacs-vterm, captures annotations, and addresses them. Works in git, hg, and jj repos (auto-detected). Activates on "revdiff", "review diff", "review changes", "annotate diff", "git review with revdiff", "hg review with revdiff", "review jj change", "interactive diff review"…

Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `references/config.md`, `references/install.md` and `references/usage.md`).

It sits in Development, covering Git workflow. It works with Git and tmux. The repository describes itself as: TUI for reviewing diffs, files, and documents with inline annotations. The licence is MIT.

When your agent uses it

  • Tasks that involve Git workflow

Example prompts

  • “revdiff”
  • “review diff”
  • “review changes”
  • “/revdiff”

Requirements

  • A Bash shell
  • Pre-approved tools (allowed-tools): Bash, Read, Edit, Write, Grep, Glob

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Determine Review Mode
  2. Launch Review
  3. Process Annotations
  4. 5: Classify Annotations
  5. Plan Changes
  6. Address Annotations
  7. Loop
  8. Done

What it can do on your machine

Read from SKILL.md and the folder at commit d2e4a78. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Edit
    • Write
    • Grep
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Revdiff loads about 5.5k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 228 tokens; SKILL.md has 2,681 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~228
When it runs · the whole SKILL.md, loaded when a task matches
~5.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~17k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Edit, Write, Grep, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from umputun/revdiff at commit d2e4a78, republished under its MIT licence (© umputun). 2,681 words, ~5,461 tokens.

Download SKILL.mdSave it as .claude/skills/revdiff/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
revdiff
description
Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings. Opens revdiff in agterm/tmux/zellij/herdr/kitty/wezterm/cmux/ghostty/iterm2/emacs-vterm, captures annotations, and addresses them. Works in git, hg, and jj repos (auto-detected). Activates on "revdiff", "review diff", "review changes", "annotate diff", "git review with revdiff", "hg review with revdiff", "review jj change", "interactive diff review", "revdiff all files", "review all files", "browse all files", "revdiff <file>", "revdiff README.md", "revdiff /tmp/notes.txt", "review this file", "annotate this file", "review file with revdiff", "open this review in revdiff", "show review in revdiff", "review in revdiff", "revdiff config", "revdiff themes", "revdiff keybindings", "how to configure revdiff", "what themes does revdiff have".
allowed-tools
Bash, Read, Edit, Write, Grep, Glob
argument-hint
optional: ref(s), "all files", or file path

revdiff - TUI Diff Review

Review diffs with inline annotations using revdiff TUI in a terminal overlay. Works in git, hg, and jj repos (auto-detected).

Activation Triggers

  • "revdiff", "review diff", "review changes", "annotate diff"
  • "revdiff HEAD~1", "revdiff main"
  • "hg review with revdiff", "review jj change"
  • "revdiff all files", "review all files", "browse all files"
  • "revdiff all files exclude vendor"
  • "revdiff README.md", "revdiff docs/plan.md", "revdiff /tmp/notes.txt" — single-file review (--only mode)
  • "review this file", "annotate this file", "review file with revdiff"
  • "open this review in revdiff", "show review in revdiff", "review in revdiff" — open an in-session review (preload mode)

Answering Questions

If the user asks a question about revdiff (configuration, themes, keybindings, installation, usage) rather than requesting a review session, consult the reference files in references/ and answer directly. Do NOT launch the TUI for informational questions.

  • references/install.md — installation methods and plugin setup
  • references/config.md — config file, options, colors, chroma themes
  • references/usage.md — examples, key bindings, output format

Using Existing Review History

If the user says things like "locate my review", "use my latest revdiff annotations", "pull up the review I just did in another terminal", or "what did I annotate earlier" — the user ran revdiff outside this plugin flow and wants Claude to process the stored annotations. Read the most recent file from the persistent history directory via the helper script, then process the annotations through Step 3.5 classification as if they had come from a fresh launcher call:

bash
${CLAUDE_SKILL_DIR}/scripts/read-latest-history.sh

The script resolves the history dir from $REVDIFF_HISTORY_DIR (default ~/.config/revdiff/history), finds the repo subdir via VCS root basename (jj/git/hg), and prints the newest .md file found. Each history file contains a header (path, refs, and — when available — a git commit hash), the annotations in ## file:line (type) format, and the raw git diff for annotated files. The commit: line and diff block are captured from git only; in hg/jj repos the diff block will be empty and no commit hash is recorded. See references/usage.md "Review History" section for directory layout, stdin/only handling, and override options.

The history file is also the recovery path when a review is cut short by a lost connection: on signal termination (a SIGHUP from a dropped SSH/tmux client, or a SIGTERM) revdiff saves the current annotations to history — never the -o output — so read-latest-history.sh still recovers them.

Opening an In-Session Review

When the user asks to open an in-session review in revdiff (the conversation already contains review comments produced earlier in the session), write those comments to a temp file (e.g. /tmp/revdiff-review-XXXXXX.md) using the format documented in references/usage.md ("Output Format" section), then run the normal launcher flow (Step 1 ref detection, Step 2 invocation) with --annotations=<temp-path> appended. Step 3 onward handles the curated annotations as usual.

Reviewing a Diff That Lives Outside the Working Tree

Some review targets are not the current repo state: a GitHub PR diff, a patch file on disk, or git format-patch -1 --stdout output. Pipe the unified diff into revdiff --stdin and the input is parsed as a real multi-file diff (one tree entry per file, hunk navigation, per-file annotations) instead of a context-only buffer. revdiff auto-detects the unified-diff signature; on a malformed patch the input falls back silently to raw-text mode.

Use this instead of the normal launcher flow when:

  • the user asks to "review PR #N", "review this patch", "review gh pr diff output", or supplies a patch URL/path
  • the diff describes commits that are not checked out locally (e.g. someone else's branch on a remote-only PR)
  • the user pastes a unified diff and asks for a review of that diff, not the working tree

Example invocations (route through the same launcher resolver as the normal flow):

bash
gh pr diff 123 | "$("${CLAUDE_SKILL_DIR}/scripts/resolve-launcher.sh" launch-revdiff.sh "${CLAUDE_PLUGIN_DATA}")" --stdin
git format-patch -1 --stdout | "$("${CLAUDE_SKILL_DIR}/scripts/resolve-launcher.sh" launch-revdiff.sh "${CLAUDE_PLUGIN_DATA}")" --stdin
cat /tmp/feature.patch | "$("${CLAUDE_SKILL_DIR}/scripts/resolve-launcher.sh" launch-revdiff.sh "${CLAUDE_PLUGIN_DATA}")" --stdin

--stdin is mutually exclusive with refs, --staged, --only, --all-files, --include, --exclude, and --annotations, so do not combine with the Step 1 ref detection — go directly to Step 3 once the launcher returns. Annotations come back keyed by the real file paths from the diff (not by --stdin-name).

How It Works

  1. Launch revdiff in a terminal overlay (agterm full-pane overlay, tmux popup, Zellij floating pane, herdr tab, kitty overlay, wezterm/Kaku split-pane, cmux split, ghostty split+zoom, iTerm2 split pane, or Emacs vterm frame)
  2. User navigates the diff, adds annotations on specific lines
  3. On quit, annotations are captured from stdout
  4. Claude reads annotations and addresses each one
  5. Loop: re-launch revdiff to verify fixes, user can add more annotations
  6. Done when user quits without annotations

Workflow

Step 1: Determine Review Mode

All-files mode: If $ARGUMENTS matches "all files", "all-files", or "browse all files" (with optional "exclude <prefix>" parts), use all-files mode:

  • Pass --all-files to the launcher
  • If user mentions exclude patterns (e.g., "exclude vendor", "exclude vendor and mocks"), pass each as --exclude=<prefix>
  • Skip ref detection entirely, go directly to Step 2
  • Example: "all files exclude vendor" → --all-files --exclude=vendor

File review mode: If $ARGUMENTS is a single token that points at a file on disk (e.g., docs/plans/feature.md, /tmp/notes.txt, README.md, main.go, file.blah), treat it as file review:

  • Decide with test -f "$ARGUMENTS" — if the file exists, it's file review mode
  • Also treat as file review if the token starts with / or ./, or contains / and has a file extension (e.g., src/app.go), even when the file is not yet reachable from the current directory
  • Skip ref detection entirely
  • Go directly to Step 2 with --only=<filepath> (no ref argument)
  • Works both inside and outside a VCS repo — revdiff reads the file from disk as context-only
  • Ambiguous token (e.g., main — both a branch name and a potential filename without extension) → prefer ref mode; ask the user only if neither test -f nor git rev-parse --verify resolves

Ref mode: If $ARGUMENTS contains explicit ref(s) (e.g., HEAD~1, main, or main feature for two-ref diff), use as-is.

Auto-detect: If no ref provided, run the smart detection script:

bash
${CLAUDE_SKILL_DIR}/scripts/detect-ref.sh

The script outputs structured fields:

  • branch, main_branch, is_main, has_uncommitted, has_staged_only
  • suggested_ref — the ref to pass to revdiff (empty = uncommitted changes)
  • use_staged — if true, pass --staged to the launcher (staged-only changes detected)
  • needs_ask — if true, ask the user before proceeding

When use_staged: true, pass --staged to the launcher. This means all changes are in the index (staged) with nothing unstaged — without --staged, revdiff would show an empty diff.

When needs_ask: true (on a feature branch with uncommitted changes), use AskUserQuestion:

  • "Uncommitted only" — pass no ref (review just working changes)
  • "Branch vs {main_branch}" — pass main_branch as ref (full branch diff including uncommitted)

When needs_ask: false, use suggested_ref directly:

  • On main + uncommitted → no ref (uncommitted changes)
  • On main + staged only → no ref + --staged (staged changes)
  • On main + clean → HEAD~1 (last commit)
  • On feature branch + clean → main branch name (full branch diff)
Step 2: Launch Review

When you are launching revdiff for the user (e.g., right after a refactor or analysis), pass --description="..." so the info popup (i key) explains what the change is and what to look at — markdown is supported. For longer prose, write the markdown to a temp file and pass --description-file=/tmp/revdiff-desc-XXXXXX.md. The two flags are mutually exclusive; both are optional. Skip when there's no useful context to add.

When the recent change likely created new untracked files (new packages, new test files, new docs, new scripts that haven't been git add-ed yet), pass --untracked so those files appear in the tree. Use this in working-tree mode (no ref, no --staged); skip it for ref-to-ref reviews where untracked files are not part of the historical diff.

Pass --start-at-change only when the user explicitly asks for that cursor preference; never infer it automatically.

Pass --filter-unreviewed only when the user asks for the tree limited to files not marked reviewed; never infer it automatically. The F key toggles the same filter during the review.

Pass --cross-file-motion only when the user explicitly asks for cursor motion to continue into adjacent files; never infer it automatically.

Run the launcher through the override-chain resolver:

bash
"$("${CLAUDE_SKILL_DIR}/scripts/resolve-launcher.sh" launch-revdiff.sh "${CLAUDE_PLUGIN_DATA}")" [base] [against] [--staged] [--untracked] [--filter-unreviewed] [--cross-file-motion] [--only=file1] [--all-files] [--exclude=prefix] [--description=text|--description-file=path]

The resolver and launcher MUST run in the same bash invocation — the resolver runs as a sub-shell substitution so the resolved path is consumed immediately as the executable. The resolver checks user → bundled (see references/install.md for override paths) and prints the first-found absolute path. Fall-through to the bundled launcher is the default when no overrides exist.

Failure mode: if the resolver fails (no launcher in any layer), the command substitution produces an empty string and bash reports : command not found with exit 127. The resolver's stderr (error: launcher not found in override chain: launch-revdiff.sh) is preserved on the same output stream — check it to confirm the override path is correct (executable bit set, file present in one of the two layers).

IMPORTANT — long-running command: The launcher blocks until the user finishes reviewing in the TUI overlay, which can exceed the default bash tool timeout on many harnesses. Set the bash timeout parameter to the maximum your harness allows (e.g. 1800000 or higher on OpenCode). The resolver itself returns in milliseconds — the timeout cap applies to the launcher only. Do NOT use run_in_background for this — background-task handling is unreliable for interactive TUI launchers (processes may be killed unprompted, and polling loops can leave the session idle after the review finishes). If the review outlasts the timeout cap, the fallback in Step 3 handles it.

Disconnect-resilient tmux window mode: when running under tmux, prefix the launcher with REVDIFF_TMUX_WINDOW=1 to open revdiff in a persistent, server-owned tmux window instead of a client-owned display-popup. The review then survives a dropped SSH or tmux client — reattach and it is still there. This is a launcher environment variable, not a revdiff flag.

Pane-scoped overlay (herdr): when running under herdr, REVDIFF_HERDR_PANE=1 opens revdiff in a zoomed split of the agent's own pane instead of a new fullscreen tab, keeping the agent pane one keypress away. The user sets it in the environment; it falls back to the tab overlay on an older herdr CLI. This is a launcher environment variable, not a revdiff flag.

Pane-scoped overlay (agterm): when running in an agterm split, REVDIFF_AGTERM_PANE=1 opens revdiff in the agent's own pane instead of over the whole session, leaving the sibling pane live and visible. The user sets it in the environment; it is ignored outside a split. This is a launcher environment variable, not a revdiff flag.

The script:

  • Detects available terminal (agterm → tmux → Zellij → herdr → kitty → wezterm/Kaku → cmux → ghostty → iTerm2 → Emacs vterm)
  • Launches revdiff in an overlay
  • Captures annotation output to a temp file
  • Prints captured annotations to stdout

The bundled launcher sets REVDIFF_EXIT_CODE_ON_ANNOTATIONS; exit 10 means annotations were captured and is not a launcher failure. Treat other nonzero statuses as failures. On those failures the launcher relays revdiff's own stderr — report that text verbatim instead of guessing which argument was at fault.

Show full SKILL.md (939 more words)Show less
Step 3: Process Annotations

Collecting launcher output: In the normal case the launcher returns synchronously with annotations on stdout — process them as described below. If the bash tool reports exit 10, read stdout and process it as annotations; do not call it a failure. If the bash tool instead reports a timeout (on Claude Code the task keeps running in the background after the 10-minute cap; on other harnesses it may be killed outright), only the launcher process died, but revdiff itself is still open in the overlay and no annotations are lost: revdiff writes them to disk the moment the user quits, and O flushes them any time. Do NOT retry the launcher. Use the fallback:

  1. Reassure the user and offer both paths, making clear nothing is lost — keep it short and do NOT explain the save mechanics (disk writes, O flush, quit-to-save); the user does not need them. Say something like: "The process waiting on your revdiff review timed out and exited — that's harmless, and any annotations you made are safe. Whenever you're done, message me and tell me to either load your annotations and continue, or that you're done and want to stop." Do NOT assume they want to load; quitting with no annotations, or choosing to stop, is a valid outcome.
  2. Wait for the user to reply. They cannot respond while the overlay has focus, so their reply means they are back at the session (they quit, or flushed with O and switched back).
  3. On their reply you MUST act; do not stop at step 1. If they chose to stop, acknowledge and end. Otherwise read the persisted annotations, most recent output file first (the launcher writes to $TMPDIR when set, falling back to /tmp):
    bash
    output_file="$(ls -t "${TMPDIR:-/tmp}"/revdiff-output-* 2>/dev/null | head -1)"
    if [ -n "$output_file" ] && [ -f "$output_file" ]; then
      cat "$output_file"
    fi
  4. If the output file has content, process it as annotations below. If it is empty or missing, fall back to the durable review history, which survives even when the launcher's cleanup removed the temp file: run "${CLAUDE_SKILL_DIR}/scripts/read-latest-history.sh" and process the annotations from its ## Annotations section (see "Using Existing Review History"). Only if both are empty did the user quit without annotating.

Both reads return complete content: revdiff writes the output file atomically on exit, and the history entry is complete before the process exits. That guarantees no partial read, not that the file belongs to this review: with two reviews live under one $TMPDIR, the newest match may belong to the other one.

A reviewer may also keep revdiff open on purpose and press O to flush the current annotations to the same output file mid-session, without quitting. The flush uses the same atomic write, so the fallback read above still returns a complete file. When the user says something like "I flushed my notes, go ahead" while the overlay is still open, read the most recent output file exactly as in the timeout fallback and process the annotations; do NOT relaunch revdiff. After you finish the code changes, the reviewer reloads with R and continues in the same session. No launcher flags change for this — the launcher already passes an output file, and O reuses it.

If the script produces output, the user made annotations. The output format is:

## file.go:43 (+)
use errors.Is() instead of direct comparison

## store.go:18 (-)
don't remove this validation

Each annotation block has:

  • ## filename:line (type) — which file and line, (+) = added, (-) = removed, (file-level) = file note
  • Comment text below — what the user wants changed
Step 3.5: Classify Annotations

Split annotations into two categories:

Explanation requests — annotation matches either rule (case-insensitive):

  • contains two or more consecutive question marks anywhere in the text (??, ???, etc.) — a language-neutral shortcut for "please explain"
  • OR starts with one of: explain, remind, describe, what is, what are, how does, how do, clarify

These are questions the user wants answered, not code changes.

Code-change directives — everything else. These are instructions to modify code.

If explanation requests are found:

  1. Answer each explanation request — read the referenced code, generate a clear markdown explanation

  2. If there are also code-change directives in the same batch, note them as pending (they carry over to Step 4 after the explanation loop)

  3. Enter the explanation loop:

    a. Write the explanation to a temp markdown file (e.g., /tmp/revdiff-explain-XXXXXX.md) b. Launch revdiff with --only=/tmp/revdiff-explain-XXXXXX.md via the launcher script — this opens the explanation as a scrollable markdown view with TOC sidebar c. If user quits without annotations → explanation accepted, clean up temp file, proceed:

    • If pending code-change directives exist → go to Step 4
    • Otherwise → go to Step 6 (re-launch revdiff with the original diff ref) d. If user annotates the explanation → these are follow-up questions or clarification requests. Read the annotations, refine/extend the explanation markdown, write updated temp file, go back to step (b)

The explanation loop continues until the user quits without annotating. This allows a natural back-and-forth dialogue where the user can ask for more detail or corrections on specific parts of the explanation.

If no explanation requests — all annotations are code-change directives, proceed directly to Step 4.

Step 4: Plan Changes

Enter plan mode (EnterPlanMode) to analyze code-change annotations:

  • List each annotation with file and line reference
  • Describe the planned change for each
  • Get user approval before modifying code
Step 5: Address Annotations

After plan approval, fix the actual source code. Each annotation is a directive.

Step 6: Loop

After fixing (or after "Continue review" from Step 3.5), run the launcher script again with the same ref. The user can:

  • Add more annotations → go back to Step 3
  • Quit without annotations → review complete (no output)
Step 7: Done

When the script produces no output, the review is complete. Inform the user.

Example Sessions

User: "revdiff HEAD~1"
→ launch revdiff in tmux popup with HEAD~1 diff
→ user annotates: "handler.go:43 - use errors.Is()"
→ user quits
→ annotations captured
→ enter plan mode: "add errors.Is() check at handler.go:43"
→ user approves
→ fix applied
→ re-launch revdiff HEAD~1
→ user sees fix, quits without annotations
→ "review complete"
User: "revdiff HEAD~3"
→ launch revdiff in tmux popup with HEAD~3 diff
→ user annotates: "server.go:72 - explain what this mutex protects"
→ user quits
→ annotation classified as explanation request (starts with "explain")
→ Claude reads server.go:72, generates markdown explanation
→ writes to /tmp/revdiff-explain-XXXXXX.md
→ launch revdiff --only=/tmp/revdiff-explain-XXXXXX.md (explanation view with TOC)
→ user reads explanation, annotates: "what about the race condition on line 80?"
→ Claude refines explanation, rewrites temp file
→ re-launch revdiff --only=/tmp/revdiff-explain-XXXXXX.md
→ user reads updated explanation, quits without annotations
→ explanation accepted, clean up temp file
→ re-launch revdiff HEAD~3 (back to diff review)
→ user quits without annotations
→ "review complete"
User: "revdiff all files exclude vendor"
→ launch revdiff with --all-files --exclude=vendor
→ user browses all tracked files, annotates as needed
→ same annotation loop as above
User: "revdiff docs/plans/feature.md"
→ test -f docs/plans/feature.md succeeds → file review mode
→ launch revdiff with --only=docs/plans/feature.md (context-only view, no ref)
→ user annotates prose: "section 'Open questions':3 - drop this, resolved"
→ user quits
→ same annotation loop as above (applies to the file content)

© umputun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (scripts, references) in .claude-plugin/skills/revdiff of umputun/revdiff.

  • SKILL.md
  • references/config.md
  • references/install.md
  • references/usage.md
  • scripts/agentdeck-window.sh
  • scripts/detect-ref.sh
  • scripts/launch-revdiff.sh
  • scripts/read-latest-history.sh
  • scripts/resolve-launcher.sh

Open the folder on GitHubat commit d2e4a78

Compare with similar skills

Revdiff next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Revdiff compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Revdiff this skillumputun/revdiff916—~5.5kAutomated safety check: NotesMIT
Git History Bug Auditben-manes/caffeine18k—~3.3kAutomated safety check: PassApache-2.0
Pypi ReleasealchemiststudiosDOTai/tunacode125—~2.2kAutomated safety check: PassMIT
Project Session ManagerYeachan-Heo/oh-my-claudecode40k—~4kAutomated safety check: PassMIT
Multi Agent Orchestrationcat-xierluo/legal-skills713—~6.6kAutomated safety check: PassMIT
Huashu Agent Swarmalchaincyf/huashu-skills1.7k—~576Automated safety check: PassMIT

Similar skills

  • Git History Bug Audit

    ben-manes/caffeine

    Audits a module by walking its git history commit by commit, tracking unresolved issues forward, and reporting the ones that survive to HEAD as findings.

    18k GitHub stars~3.3k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Pypi Release

    alchemiststudiosDOTai/tunacode

    This skill should be used when releasing tunacode-cli to PyPI.

    125 GitHub stars~2.2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Project Session Manager

    Yeachan-Heo/oh-my-claudecode

    Creates isolated git worktrees, with optional tmux sessions, for PR reviews, issue fixes and feature work across projects and repositories.

    40k GitHub stars~4k tokensUpdated today
    DevelopmentAuto-check passed
  • Multi Agent Orchestration

    cat-xierluo/legal-skills

    编排两个以上边界独立的本地 worker,使用 Orca Run/Task/Dispatch、独立 worktree/session 或 tmux 回退,由 PM 负责拆解、派发、巡检、429 停滞恢复、独立验收、PR 收口与临时资源清理;也用于用户明确要求“并行推进”“多个 worker”“PM 总控”“Wave Autopilot”或防止 PM…

    713 GitHub stars~6.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Huashu Agent Swarm

    alchaincyf/huashu-skills

    多Agent蜂群并行协作,纯git自组织,适合大型项目开发。当用户提到"蜂群模式"、"多agent"、"并行开发"、"agent swarm"时使用。

    1.7k GitHub stars~576 tokensUpdated 15 days ago
    Agent WorkflowsAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed

More from umputun/revdiff

  • Revdiff

    umputun/revdiff

    Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.

    916 GitHub stars~5.6k tokensUpdated yesterday
    Auto-check passed
  • Revdiff

    umputun/revdiff

    Pi-only interactive diff and file review with revdiff. An agent skill from umputun/revdiff.

    916 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Revdiff Plan

    umputun/revdiff

    Review the last Codex assistant message (plan, analysis, or proposal) with inline annotations in a TUI overlay.

    916 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Revdiff

What does Revdiff do?

Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings. Revdiff is an agent skill from umputun/revdiff. Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.

When should I use Revdiff?

Revdiff fits situations like: tasks that involve Git workflow.

How do I install Revdiff in Claude Code?

Run `npx skills add umputun/revdiff --skill revdiff -a claude-code`. Or copy the skill folder (.claude-plugin/skills/revdiff in umputun/revdiff) into .claude/skills/revdiff in your project. Claude Code loads it when a task matches its description.

How do I install Revdiff in Codex?

Run `npx skills add umputun/revdiff --skill revdiff -a codex`. Or copy the skill folder (.claude-plugin/skills/revdiff in umputun/revdiff) into .agents/skills/revdiff in your project. Codex loads it when a task matches its description.

Can I use Revdiff in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add umputun/revdiff --skill revdiff -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/revdiff, .gemini/skills/revdiff, .github/skills/revdiff and .opencode/skills/revdiff in your project.

What does Revdiff need to run?

Going by SKILL.md and its folder, Revdiff needs a shell for the scripts in its folder and the command-line tools its instructions call (git and gh). Our summary lists: A Bash shell. Its frontmatter pre-approves these tools: Bash, Read, Edit, Write, Grep, Glob.

Does Revdiff access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Revdiff safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Revdiff use?

Revdiff is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Revdiff use?

About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.

What are the alternatives to Revdiff?

Skills that share tags, products or a category with Revdiff: Git History Bug Audit (ben-manes/caffeine, 18k stars), Pypi Release (alchemiststudiosDOTai/tunacode, 125 stars), Project Session Manager (Yeachan-Heo/oh-my-claudecode, 40k stars) and Multi Agent Orchestration (cat-xierluo/legal-skills, 713 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Revdiff?

umputun (a GitHub user) maintains it in umputun/revdiff, which has 916 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.

Source: umputun/revdiff on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.