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.
Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.
$ npx skills add umputun/revdiff --skill revdiff -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install umputun/revdiff revdiff --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .claude/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiffType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add umputun/revdiff --skill revdiff -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install umputun/revdiff revdiff --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude-plugin/skills/revdiff .agents/skills/revdiff && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .agents/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add umputun/revdiff --skill revdiff -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install umputun/revdiff revdiff --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude-plugin/skills/revdiff .cursor/skills/revdiff && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .cursor/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/umputun/revdiff.git --path .claude-plugin/skills/revdiff--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add umputun/revdiff --skill revdiff -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install umputun/revdiff revdiff --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude-plugin/skills/revdiff .gemini/skills/revdiff && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .gemini/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install umputun/revdiff revdiffInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add umputun/revdiff --skill revdiff -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude-plugin/skills/revdiff .github/skills/revdiff && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .github/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add umputun/revdiff --skill revdiff -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install umputun/revdiff revdiff --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/umputun/revdiff.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude-plugin/skills/revdiff .opencode/skills/revdiff && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "revdiff" agent skill from https://github.com/umputun/revdiff/tree/master/.claude-plugin/skills/revdiff into .opencode/skills/revdiff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revdiff", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
revdiffReview 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d2e4a78. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadEditWriteGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Edit, Write, Grep, GlobAutomated 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.
The full file from umputun/revdiff at commit d2e4a78, republished under its MIT licence (© umputun). 2,681 words, ~5,461 tokens.
.claude/skills/revdiff/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Review diffs with inline annotations using revdiff TUI in a terminal overlay. Works in git, hg, and jj repos (auto-detected).
--only mode)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 setupreferences/config.md — config file, options, colors, chroma themesreferences/usage.md — examples, key bindings, output formatIf 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:
${CLAUDE_SKILL_DIR}/scripts/read-latest-history.shThe 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.
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.
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:
gh pr diff output", or supplies a patch URL/pathExample invocations (route through the same launcher resolver as the normal flow):
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).
All-files mode: If $ARGUMENTS matches "all files", "all-files", or "browse all files" (with optional "exclude <prefix>" parts), use all-files mode:
--all-files to the launcher--exclude=<prefix>--all-files --exclude=vendorFile 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:
test -f "$ARGUMENTS" — if the file exists, it's file review mode/ 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--only=<filepath> (no ref argument)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 resolvesRef 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:
${CLAUDE_SKILL_DIR}/scripts/detect-ref.shThe script outputs structured fields:
branch, main_branch, is_main, has_uncommitted, has_staged_onlysuggested_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 proceedingWhen 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:
When needs_ask: false, use suggested_ref directly:
--staged (staged changes)HEAD~1 (last commit)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:
"$("${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:
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.
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:
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.O and switched back).$TMPDIR when set, falling back to /tmp):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"${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 validationEach annotation block has:
## filename:line (type) — which file and line, (+) = added, (-) = removed, (file-level) = file noteSplit annotations into two categories:
Explanation requests — annotation matches either rule (case-insensitive):
??, ???, etc.) — a language-neutral shortcut for "please explain"explain, remind, describe, what is, what are, how does, how do, clarifyThese 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:
Answer each explanation request — read the referenced code, generate a clear markdown explanation
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)
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:
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.
Enter plan mode (EnterPlanMode) to analyze code-change annotations:
After plan approval, fix the actual source code. Each annotation is a directive.
After fixing (or after "Continue review" from Step 3.5), run the launcher script again with the same ref. The user can:
When the script produces no output, the review is complete. Inform the user.
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 aboveUser: "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
SKILL.md and 8 other files (scripts, references) in .claude-plugin/skills/revdiff of umputun/revdiff.
Open the folder on GitHubat commit d2e4a78
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Revdiff this skillumputun/revdiff | 916 | — | ~5.5k | Automated safety check: Notes | MIT | |
| Git History Bug Auditben-manes/caffeine | 18k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Pypi ReleasealchemiststudiosDOTai/tunacode | 125 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Project Session ManagerYeachan-Heo/oh-my-claudecode | 40k | — | ~4k | Automated safety check: Pass | MIT | |
| Multi Agent Orchestrationcat-xierluo/legal-skills | 713 | — | ~6.6k | Automated safety check: Pass | MIT | |
| Huashu Agent Swarmalchaincyf/huashu-skills | 1.7k | — | ~576 | Automated safety check: Pass | MIT |
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.
alchemiststudiosDOTai/tunacode
This skill should be used when releasing tunacode-cli to PyPI.
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.
cat-xierluo/legal-skills
编排两个以上边界独立的本地 worker,使用 Orca Run/Task/Dispatch、独立 worktree/session 或 tmux 回退,由 PM 负责拆解、派发、巡检、429 停滞恢复、独立验收、PR 收口与临时资源清理;也用于用户明确要求“并行推进”“多个 worker”“PM 总控”“Wave Autopilot”或防止 PM…
alchaincyf/huashu-skills
多Agent蜂群并行协作,纯git自组织,适合大型项目开发。当用户提到"蜂群模式"、"多agent"、"并行开发"、"agent swarm"时使用。
obra/superpowers
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.
umputun/revdiff
Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings.
umputun/revdiff
Pi-only interactive diff and file review with revdiff. An agent skill from umputun/revdiff.
umputun/revdiff
Review the last Codex assistant message (plan, analysis, or proposal) with inline annotations in a TUI overlay.
Categories
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.
Revdiff fits situations like: tasks that involve Git workflow.
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.
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.
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.
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.
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.
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.
Revdiff is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.