Agent skill

Vibediff Explain

by meain in meain/dotfiles

Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made.

MITAuto-check passedDevelopment

Install Vibediff Explain

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

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

GitHub CLI
$ gh skill install meain/dotfiles vibediff-explain --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-explain .claude/skills/vibediff-explain && 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-explain
GitHub stars
285
Token cost
~1.5k tokens
SKILL.md length
404 words
Files
1
Skills in repo
35
Repo updated
First seen
Licence
MIT

At a glance

Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made.

  • Works in 4 steps: Verify VibeDiff instance and find the… → Get revision information → Analyze the changes → …
  • The user says /vibediff-explain
  • SKILL.md covers When to use, How it works, Workflow and Comment placement strategy, plus 2 more sections
  • Calls curl and jq

What it does

Vibediff Explain is an agent skill from meain/dotfiles. Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made. Use when the user says /vibediff-explain, "explain this commit in vibediff", "add comments to vibediff", "explain this revision in vibediff", or asks to annotate a diff with explanatory comments.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

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-explain
  • Explain this commit in vibediff
  • Add comments to vibediff
  • Explain this revision in vibediff

Example prompts

  • “explain this commit in vibediff”
  • “add comments to vibediff”
  • “explain this revision in vibediff”
  • “/vibediff-explain”

Workflow steps

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

  1. Verify VibeDiff instance and find the project
  2. Get revision information
  3. Analyze the changes
  4. Add explanatory comments

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

    Shell commands in SKILL.md call:

    • curl
    • jq

    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 Explain loads about 1.5k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 404 words of instructions outside code blocks.

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

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). 404 words, ~1,503 tokens.

Download SKILL.mdSave it as .claude/skills/vibediff-explain/SKILL.md (or your agent's skills folder).
name
vibediff-explain
description
Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made. Use when the user says /vibediff-explain, "explain this commit in vibediff", "add comments to vibediff", "explain this revision in vibediff", or asks to annotate a diff with explanatory comments.

VibeDiff Explain Workflow

Explain a specific jj revision by fetching its diff and adding explanatory comments in VibeDiff to document the changes.

When to use

  • User says "explain this commit in vibediff", "add comments to vibediff", "explain this revision in vibediff"
  • User provides a jj revision ID and asks to document or explain changes
  • User asks to annotate a diff with explanatory comments

How it works

  1. Verify VibeDiff is running and identify the project directory
  2. Fetch the revision diff to understand the changes
  3. Add explanatory comments to key lines explaining WHY changes were made
  4. Focus on non-obvious rationale, cross-file impacts, and design decisions

Workflow

1. Verify VibeDiff instance and find the project
bash
# List registered directories
curl -s http://localhost:8888/api/directories

# Get backend info for the target repo
curl -s "http://localhost:8888/api/directory?directory=/path/to/repo"

If the target directory isn't registered yet, register it first:

bash
curl -s -X POST http://localhost:8888/api/directories \
  -H 'Content-Type: application/json' \
  -d '{"directory":"/path/to/repo"}'
2. Get revision information

In a jj repo, VibeDiff uses jj change IDs (not git commit hashes). Always resolve the revision to a jj change ID:

bash
DIR="/path/to/repo"

# Get the jj change ID for a revision (use @ for working copy, or a change ID prefix)
REV=$(jj log --no-graph -r '<revision>' --template 'change_id' -R $DIR)

# Or for the working copy:
REV=$(jj log --no-graph -r '@' --template 'change_id' -R $DIR)

# Show the commit to understand context
jj show $REV -R $DIR

# Get the diff from VibeDiff (directory is required)
curl -s "http://localhost:8888/api/diff?directory=$DIR&revision=$REV" | jq '.'

You can also list recent revisions from VibeDiff to confirm the correct ID:

bash
curl -s "http://localhost:8888/api/revisions?directory=$DIR&limit=5"
3. Analyze the changes

Look at the diff structure:

  • Which files changed
  • What kind of changes (additions, modifications, deletions)
  • Size of changes (addition/deletion counts)
4. Add explanatory comments

directory is required in the comment body. Add comments to key lines explaining:

  • WHY the change was made (not what — the code shows that)
  • Non-obvious design decisions
  • Cross-file or cross-service impacts
  • Constraints or invariants being maintained
  • Workarounds for specific issues
bash
curl -s -X POST http://localhost:8888/api/review/comment \
  -H 'Content-Type: application/json' \
  -d '{
    "directory": "/path/to/repo",
    "revision": "<revision-id>",
    "file": "path/to/file.go",
    "line": 42,
    "content": "Explanation of why this change was made",
    "author": "agent",
    "authorName": "explain"
  }'

Comment placement strategy

Show full SKILL.md (168 more words)Show less
Focus on:
  • New files: Add overview comment at line 1 explaining purpose
  • Key architectural changes: Explain the design decision
  • Non-obvious logic: Clarify intent
  • Cross-cutting changes: Explain how pieces connect
  • Refactoring patterns: Document the transformation
Avoid commenting:
  • Self-explanatory changes
  • Mechanical refactors (unless the pattern needs explanation)
  • Every single line (signal over noise)

Example flow

bash
DIR="/Users/meain/dev/veeam/control-plane-backend"

# 1. Ensure directory is registered
curl -s http://localhost:8888/api/directories | grep -q "$DIR" || \
  curl -s -X POST http://localhost:8888/api/directories \
    -H 'Content-Type: application/json' \
    -d "{\"directory\":\"$DIR\"}"

# 2. Resolve jj change ID (VibeDiff uses change IDs, not git commit hashes)
REV=$(jj log --no-graph -r 'npuuvppmqwuksxpzwwrkovtsusvnvvrn' --template 'change_id' -R $DIR)

# 3. Get revision info
jj show $REV -R $DIR

# 4. Fetch diff
curl -s "http://localhost:8888/api/diff?directory=$DIR&revision=$REV" \
  | jq '.files[] | {path, additions, deletions}'

# 5. Add comment to new test file
curl -s -X POST http://localhost:8888/api/review/comment \
  -H 'Content-Type: application/json' \
  -d "{
    \"directory\": \"$DIR\",
    \"revision\": \"$REV\",
    \"file\": \"services/earn/tests/earn-e2e/org-anchoring_test.go\",
    \"line\": 1,
    \"author\": \"agent\",
    \"authorName\": \"explain\",
    \"content\": \"E2E test suite validating EARN's org anchor geo routing behavior...\"
  }"

# 6. Add comment explaining a key change
curl -s -X POST http://localhost:8888/api/review/comment \
  -H 'Content-Type: application/json' \
  -d "{
    \"directory\": \"$DIR\",
    \"revision\": \"$REV\",
    \"file\": \"services/earn/tests/earn-e2e/api.go\",
    \"line\": 53,
    \"author\": \"agent\",
    \"authorName\": \"explain\",
    \"content\": \"Added variadic opts parameter to allow passing additional HTTP client options...\"
  }"

Notes

  • Always set "author": "agent" and "authorName": "explain" in comment payloads — the backend only accepts "user" or "agent" for author; authorName is the tag for which kind of agent posted it, and the UI renders it as agent:explain
  • directory and file are required for root comments
  • Comments are persisted in ~/.config/vibediff/comments/<sha256-of-path>.json
  • Focus on WHY over WHAT — the code shows what changed
  • Aim for 10–20 comments per revision depending on complexity
  • Use the commit message and PR context to inform comment content
  • In jj repos, always use the jj change ID (from jj log --template 'change_id') as the revision field — never use the git commit hash. VibeDiff's /api/revisions endpoint lists change IDs; use it to confirm.

© 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

Just SKILL.md in agents/.agents/skills/vibediff-explain of meain/dotfiles.

Open the folder on GitHubat commit 3e336e2

Compare with similar skills

Vibediff Explain 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 Explain compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vibediff Explain this skillmeain/dotfiles285—~1.5kAutomated 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 Explain

What does Vibediff Explain do?

Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made. Vibediff Explain is an agent skill from meain/dotfiles. Explain a jj revision by fetching its diff and adding explanatory comments in VibeDiff to document WHY changes were made.

When should I use Vibediff Explain?

Vibediff Explain fits situations like: the user says /vibediff-explain; explain this commit in vibediff; add comments to vibediff; explain this revision in vibediff.

How do I install Vibediff Explain in Claude Code?

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

How do I install Vibediff Explain in Codex?

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

Can I use Vibediff Explain 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-explain -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-explain, .gemini/skills/vibediff-explain, .github/skills/vibediff-explain and .opencode/skills/vibediff-explain in your project.

What does Vibediff Explain need to run?

Going by SKILL.md and its folder, Vibediff Explain needs the command-line tools its instructions call (curl and jq).

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

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

About 1.5k tokens (SKILL.md is roughly 6k 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 Explain?

Skills that share tags, products or a category with Vibediff Explain: 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 Explain?

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.