Agent skill

Vibediff

by meain in meain/dotfiles

Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state.

MITAuto-check passedDevelopment

Install Vibediff

skills CLI
$ npx skills add meain/dotfiles --skill vibediff -a claude-code

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

GitHub CLI
$ gh skill install meain/dotfiles vibediff --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/meain/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/.agents/skills/vibediff .claude/skills/vibediff && 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
vibediff
GitHub stars
285
Token cost
~2k tokens
SKILL.md length
594 words
Files
2
Skills in repo
35
Repo updated
First seen
Licence
MIT

At a glance

Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state.

  • Works in 5 steps: List registered directories to find the… → Fetch open comments: GET… → Make code changes to address feedback → …
  • The user says /vibediff
  • SKILL.md covers When to use, Helper script (use this first), How it works and Directory registry, plus 4 more sections
  • Runs Python scripts from its folder; calls curl

What it does

Vibediff is an agent skill from meain/dotfiles. Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state. Use when the user says /vibediff, "check vibediff", "get review comments", "reply to review comment", "resolve vibediff comment", or when working on code changes that have active VibeDiff review comments.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `vd.py`).

It sits in Development. The repository describes itself as: If there is a shell, there is a way! The licence is MIT.

When your agent uses it

  • The user says /vibediff
  • Get review comments
  • Reply to review comment
  • Resolve vibediff comment

Example prompts

  • “check vibediff”
  • “get review comments”
  • “reply to review comment”
  • “/vibediff”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. List registered directories to find the repo: GET /api/directories
  2. Fetch open comments: GET /api/review/comments?directory=...
  3. Make code changes to address feedback
  4. Reply to each comment explaining the fix
  5. Optionally resolve the thread

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • curl

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

  • Network

    No URLs in SKILL.md. Its commands use curl, 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

Vibediff loads about 2k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 594 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
When it runs · the whole SKILL.md, loaded when a task matches
~2k

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 passed

The automated check found no risky patterns in SKILL.md.

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from meain/dotfiles at commit 3e336e2, republished under its MIT licence (© meain). 594 words, ~2,020 tokens.

Download SKILL.mdSave it as .claude/skills/vibediff/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
vibediff
description
Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state. Use when the user says /vibediff, "check vibediff", "get review comments", "reply to review comment", "resolve vibediff comment", or when working on code changes that have active VibeDiff review comments.

VibeDiff Integration

Interact with VibeDiff code review instances - fetch review comments, reply to threads, resolve comments, and manage review state.

When to use

  • User says "check vibediff", "get review comments", "vibediff review", "reply to review comment"
  • User asks to resolve/close VibeDiff comments
  • Working on code changes that have active VibeDiff review comments
  • User mentions VibeDiff by name or asks about review feedback

Helper script (use this first)

vd.py in this skill directory wraps the common chores. It defaults --dir to the cwd and uses VIBEDIFF_URL (default http://localhost:8888).

bash
VD=~/.claude/skills/vibediff/vd.py

$VD comments                         # open threads in the cwd repo, with replies
$VD comments --rev trswtrqn          # filter by revision prefix (jj change id)
$VD comments --author user           # only threads a human started
$VD comments --all --json            # include resolved threads, as JSON (with replies)
$VD reply <id> "Fixed in wip abc"    # reply as agent:claude; --resolve also resolves
$VD reply <id> - < msg.txt           # reply text from stdin (multi-line)
$VD post --rev <change-id> --file path/to/x.go --line 42 [--line-end 44] [--name reviewer] "text"
$VD resolve <id>... / $VD reopen <id>...
$VD revisions [--limit 10]

Replies must include directory even though the API inherits the other fields. Without it the server answers 400 directory is required, and it's easy to miss when the output is discarded. The script always sends it, and exits non-zero with the server's message on any HTTP error.

A human reply can sit under an agent's root comment, so comments --author user (which filters on the root author) can miss it. To catch every thread a human touched, check comments without --author.

How it works

VibeDiff runs as a local HTTP server (default port 8888) that can review multiple repositories at once. Directory is a per-request parameter — there is no server-side "current directory" state. Each API call must include the directory query param (or body field for POSTs).

Each instance provides:

  • REST API for comments, diffs, and revisions (all require directory)
  • Directory registry for managing known repos
  • WebSocket for real-time updates (messages include directory)
  • MCP server for agent integration
Finding the running instance and active directories
bash
# Check VibeDiff is up and list registered directories
curl http://localhost:8888/api/directories

# Instance-specific docs (always check if API behavior seems wrong)
curl http://localhost:8888/docs

# If on a different port, search all listening ports
lsof -iTCP -sTCP:LISTEN

The /docs endpoint provides instance-specific API documentation with the current base URL, registered projects, and endpoint reference.

Directory registry

List registered directories
bash
curl http://localhost:8888/api/directories
# ["\/path\/to\/repo-a", "\/path\/to\/repo-b"]
Register a new directory
bash
curl -X POST http://localhost:8888/api/directories \
  -H 'Content-Type: application/json' \
  -d '{"directory":"/path/to/repo"}'
# Returns: {"directory":"/path/to/repo","backend":"jj"}
Get backend info for a directory
bash
curl 'http://localhost:8888/api/directory?directory=/path/to/repo'
# {"directory":"/path/to/repo","backend":"git"}

Common operations

Fetch review comments

All comment endpoints require ?directory=....

bash
DIR="/path/to/repo"

# All comments for a directory
curl "http://localhost:8888/api/review/comments?directory=$DIR"

# Open comments only (across all directories — no dir param needed)
curl http://localhost:8888/api/review/comments/open

# Filter by revision
curl "http://localhost:8888/api/review/comments?directory=$DIR&revision=abc123xyz"

# Filter by file
curl "http://localhost:8888/api/review/comments?directory=$DIR&file=path/to/file.go"
Reply to comments

Important: When replying (setting parentId), only provide content, author, and parentId. The API automatically inherits file, line, lineEnd, revision, and directory from the parent comment.

bash
curl -X POST http://localhost:8888/api/review/comment \
  -H 'Content-Type: application/json' \
  -d '{
    "content": "Your reply text here",
    "author": "agent",
    "authorName": "explainer",
    "parentId": "parent-comment-id"
  }'

Always set "author": "agent" when creating replies. Optionally set authorName (max 50 chars) to tag which kind of agent posted the comment (e.g. "explainer") — the UI renders it as agent:<authorName>.

Show full SKILL.md (242 more words)Show less
Create new comment
bash
curl -X POST http://localhost:8888/api/review/comment \
  -H 'Content-Type: application/json' \
  -d '{
    "directory": "/path/to/repo",
    "file": "path/to/file.go",
    "line": 42,
    "lineEnd": 44,
    "content": "Comment text",
    "author": "agent",
    "revision": ""
  }'

directory is required for root comments. Leave revision empty for working-copy comments. Always set "author": "agent".

Resolve/reopen comments
bash
# Resolve
curl -X POST http://localhost:8888/api/review/comment/{id}/resolve

# Reopen
curl -X POST http://localhost:8888/api/review/comment/{id}/reopen

No directory param needed — the server looks it up from the stored comment.

Get diff and revisions

All diff/revision endpoints require ?directory=....

bash
DIR="/path/to/repo"

# Current working copy diff
curl "http://localhost:8888/api/diff?directory=$DIR"

# Diff for specific revision
curl "http://localhost:8888/api/diff?directory=$DIR&revision=abc123"

# List recent revisions
curl "http://localhost:8888/api/revisions?directory=$DIR&limit=10"

jj repos: VibeDiff uses jj change IDs, not git commit hashes. Always resolve a revision to its change ID before using it as a revision parameter:

bash
# Get change ID for a specific revision
jj log --no-graph -r '<rev>' --template 'change_id' -R $DIR

# Get change ID for working copy
jj log --no-graph -r '@' --template 'change_id' -R $DIR

Confirm via GET /api/revisions — the id field is always the jj change ID.

Comment object structure

json
{
  "id": "a1b2c3d4",
  "directory": "/path/to/repo",
  "file": "internal/git/parser.go",
  "line": 42,
  "lineEnd": 44,
  "content": "Why is this offset by one?",
  "author": "user",
  "authorName": "",
  "status": "open",
  "parentId": "",
  "revision": "",
  "commit": "abc1234",
  "createdAt": "2026-06-16T15:04:05Z"
}

authorName is optional and typically only set on agent comments/replies (see above).

Replies have parentId set. All comments in the API response are flat — group by parentId to build threads.

Workflow patterns

Address review comments
  1. List registered directories to find the repo: GET /api/directories
  2. Fetch open comments: GET /api/review/comments?directory=...
  3. Make code changes to address feedback
  4. Reply to each comment explaining the fix
  5. Optionally resolve the thread
Review summary
  1. Get registered directories
  2. Fetch current diff and open comments for the target directory
  3. Provide summary of changes and outstanding feedback

Notes

  • VibeDiff stores comments in ~/.config/vibediff/comments/<sha256-of-path>.json
  • Comments are scoped to revisions via the revision field
  • The directory field on a comment tells the server where to save it — always include it for root comments
  • Only one MCP session allowed per instance
  • WebSocket at /api/ws — messages include a directory field so clients can filter by repo
  • Full API docs at /docs endpoint

© meain, 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 1 other file in agents/.agents/skills/vibediff of meain/dotfiles.

  • SKILL.md
  • vd.py

Open the folder on GitHubat commit 3e336e2

Compare with similar skills

Vibediff 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.

Vibediff compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vibediff this skillmeain/dotfiles285—~2kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-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.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from meain/dotfiles

All 35 skills in this repo
  • Recall

    meain/dotfiles

    Search past Claude Code and Codex sessions. An agent skill from meain/dotfiles.

    285 GitHub starsUsed in 1 repo~684 tokens
    Auto-check passed
  • Grill With Docs

    meain/dotfiles

    Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise.

    285 GitHub starsUsed in 20 repos~875 tokens
    Auto-check passed
  • Backlog

    meain/dotfiles

    Daily backlog management — full planning review OR add a single entry from a URL.

    285 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Concern Review

    meain/dotfiles

    Generate an interactive local HTML review page for a large PR or diff, grouping the changed files by logical concern (not just by file) so a reviewer can go through one theme at a time instead of a…

    285 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • My Weekly Report

    meain/dotfiles

    Generate a concise weekly status update in team format. An agent skill from meain/dotfiles.

    285 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Web Search

    meain/dotfiles

    Search the web using lynx and DuckDuckGo. An agent skill from meain/dotfiles.

    285 GitHub stars~830 tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Vibediff

What does Vibediff do?

Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state. Vibediff is an agent skill from meain/dotfiles. Control VibeDiff code review instances — fetch review comments, reply to threads, create comments, resolve/reopen threads, and manage review state.

When should I use Vibediff?

Vibediff fits situations like: the user says /vibediff; get review comments; reply to review comment; resolve vibediff comment.

How do I install Vibediff in Claude Code?

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

How do I install Vibediff in Codex?

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

Can I use Vibediff 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 meain/dotfiles --skill vibediff -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vibediff, .gemini/skills/vibediff, .github/skills/vibediff and .opencode/skills/vibediff in your project.

What does Vibediff need to run?

Going by SKILL.md and its folder, Vibediff needs Python for the scripts in its folder and the command-line tools its instructions call (curl). Our summary lists: Python 3.

Does Vibediff access the network?

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

Is Vibediff safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Vibediff use?

Vibediff 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 Vibediff use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Vibediff?

Skills that share tags, products or a category with Vibediff: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vibediff?

meain (a GitHub user) maintains it in meain/dotfiles, which has 285 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 8, 2026.

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