filip-podstavec/claude-leverage/explain-diff
Claude Code and agent skill by filip-podstavec/claude-leverage
- community
Checking that the SKILL.md file is still in the repository.
USE WHEN about to open a PR, when teammate asks "what's in this diff?", or when returning to a branch and needing self-orientation. Three modes: `--for pr|review|self`. Reads `git diff HEAD` (or passed range), returns 3–5 bullet plain-English narration. Read-only — defers security/test concerns to other skills.
Install
npx vskill@latest install filip-podstavec/claude-leverage/explain-diffSKILL.md
/explain-diff
What it does
Reads a git diff and produces a tight English narration of what changed, why a reviewer should care, and where the risk concentrates. Lives next to the vanilla commit workflow (mechanical Conventional Commits message) and /security-review (structured security audit) — covers the "narrative" niche neither does.
Three audience modes:
--for pr(default) — output is a PR-description-shaped block:
## Summary, ## Why, ## How to verify. Copy-pasteable into the PR body.
--for review— emphasizes what's load-bearing and what's mechanical;
flags non-obvious decisions that the reviewer might miss without the author's voice ("the new IF EXISTS clause on line 47 is load-bearing — without it the migration is non-idempotent").
--for self— terse 3–5 bullet self-narration; useful before
switching context or coming back to a branch later.
Workflow
- Resolve diff range.
- Default:
git diff HEAD(working tree + staged vs last commit). - If
$ARGUMENTSstarts with^or contains..or..., treat
as a ref range and use git diff <range>.
- If
--for prand the current branch has commits beyondmain,
use git diff main...HEAD instead (covers the whole branch).
- Get supporting context (parallel-OK):
git status --shortfor file-state breakdown.git log --oneline -10for repo style of commit messages.git rev-parse --abbrev-ref HEADfor branch name.
- Read the diff in full. If the diff is enormous (>50k tokens
estimated), STOP and report: "diff is too large — narrow with --paths <pattern> or <file>...". Don't try to chunk and summarize partial diffs; the result would be incoherent.
- Walk the diff and identify:
- Files added vs modified vs deleted.
- Hunks that look mechanical (renames, type-only changes, formatting).
- Hunks that look load-bearing (new branches, new functions, condition
changes, new dependencies).
- Test changes (file paths matching
*_test.*,*.test.*,
tests/, etc.).
- Doc / config-only changes.
- Anything that touches a sensitive path (
auth*,crypto*,
*.env*, routes/, etc.) — surface as a "consider /security-review" reminder, not a substitute for it.
- Load-bearing decisions shipped without an `AIDEV-` anchor (only in
--for review). A load-bearing hunk that encodes a non-obvious choice — an ordering dependency, a perf carve-out, an idempotency trick, a deliberate rejection of the obvious approach — and carries no AIDEV-NOTE: / AIDEV-TODO: / AIDEV-QUESTION: in the added lines is a memory the next agent won't inherit. This is the review-boundary backstop for the ai-first-nudge hook, which only fires on ≥50-LOC single writes and so misses decisions built up incrementally.
- Emit narration in the requested shape.
--for pr output template
--for review output template
--for self output template
Hard rules
- Read-only. No Edit/Write in the tool list. If the user asks
"while you're at it, fix X" — STOP and surface that as a separate request.
- Never invent intent. If the diff doesn't make motivation
obvious, explicitly say "motivation not inferable from diff" rather than guess.
- Never expand scope to security audit. If sensitive paths show
up, ONE LINE: "diff touches routes/auth/... — consider /security-review". Don't try to be that skill.
- Always cite file:line for load-bearing claims.
- Skip noise. Don't list every renamed file individually if there
are 30 of them; aggregate ("renamed 30 files from services/old/* to services/new/*").
When to run
- Before opening a PR — paste the
--for proutput into the PR body. - After receiving a code review request from a teammate, run
--for review to make sure the diff is honestly readable.
- Coming back to a branch after a few days —
--for selfto
re-orient.
What this skill does NOT do
- Generate the commit message. That's the vanilla commit workflow.
They're different shapes: a commit message is per-commit; a PR description is per-branch. Don't conflate.
- Audit for security/correctness. Cite when sensitive paths
appear; let /security-review do the actual audit.
- Run tests or verify claims. "How to verify" is suggestions for
the reviewer; this skill doesn't execute anything.
- **Compare against
mainautomatically in --for self / --for review
modes.** Default is HEAD (working tree vs last commit). User picks the range explicitly when they want branch-wide.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/explain-diff/SKILL.md
Popularity
- Repository stars
- 67
- Repository forks
- 3
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/filip-podstavec/claude-leverage/explain-diff)