Claude-skill-registry diff-preview
Preview and analyze git diffs with AI explanations. Use to understand changes before committing, get impact analysis, and compare branches or commits.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/diff-preview" ~/.claude/skills/majiayu000-claude-skill-registry-diff-preview && rm -rf "$T"
manifest:
skills/data/diff-preview/SKILL.mdsource content
Diff Preview & Analysis
Preview, explain, and analyze git changes with AI assistance.
Prerequisites
# Git git --version # Gemini for AI explanations pip install google-generativeai export GEMINI_API_KEY=your_api_key
CLI Reference
Basic Diff Commands
# Working directory changes git diff # Staged changes git diff --staged git diff --cached # Specific file git diff path/to/file.ts # Between commits git diff abc123 def456 # Between branches git diff main feature-branch git diff main...feature-branch # Since branch diverged # Show stat summary git diff --stat git diff --shortstat # Name only git diff --name-only git diff --name-status # With status (M/A/D)
Diff Output Options
# Word diff (better for prose) git diff --word-diff # Color words git diff --color-words # Ignore whitespace git diff -w git diff --ignore-all-space # Context lines git diff -U10 # 10 lines of context (default 3) # Show function names git diff --function-context
Commit Comparison
# Last commit git diff HEAD~1 # Last N commits git diff HEAD~5 # Specific commit range git diff abc123..def456 # What changed in a specific commit git show abc123
AI-Powered Analysis
Explain Changes
# Get diff and explain DIFF=$(git diff --staged) gemini -m pro -o text -e "" "Explain these code changes in plain English: $DIFF Summarize: 1. What was changed 2. Why it might have been changed 3. Any potential issues"
Impact Analysis
DIFF=$(git diff main...feature-branch) gemini -m pro -o text -e "" "Analyze the impact of these changes: $DIFF Consider: 1. Breaking changes 2. Performance implications 3. Security considerations 4. Files/systems affected 5. Testing recommendations"
Pre-Commit Review
# Review staged changes before commit git diff --staged | gemini -m pro -o text -e "" "Review this code diff for: 1. Bugs or issues 2. Code style problems 3. Missing error handling 4. Security concerns Provide specific line references if issues found."
Generate Commit Message
DIFF=$(git diff --staged) gemini -m pro -o text -e "" "Based on this diff, suggest a commit message: $DIFF Use conventional commit format (feat/fix/chore/etc). First line under 50 chars, then details."
Comparison Patterns
Compare Branches
# Summary git diff main feature-branch --stat # Full diff git diff main feature-branch # Since branch point git diff main...feature-branch # Commits unique to feature branch git log main..feature-branch --oneline
Find What Changed
# What files changed between commits git diff --name-only abc123 def456 # What changed in a file git log -p -- path/to/file.ts # When was a line added git blame path/to/file.ts
Merge Preview
# Preview merge conflicts git merge --no-commit --no-ff feature-branch git diff --staged git merge --abort # Clean up
Workflow Patterns
Pre-Commit Check
#!/bin/bash # Check staged changes before commit echo "=== Changes to commit ===" git diff --staged --stat echo "" echo "=== Detailed diff ===" git diff --staged echo "" read -p "Proceed with commit? (y/n) " -n 1 -r if [[ $REPLY =~ ^[Yy]$ ]]; then git commit fi
PR Review Prep
# Get full PR diff for review BASE=${1:-main} BRANCH=$(git branch --show-current) echo "=== Files changed ===" git diff $BASE...$BRANCH --name-status echo "" echo "=== Stats ===" git diff $BASE...$BRANCH --shortstat echo "" echo "=== AI Summary ===" git diff $BASE...$BRANCH | gemini -m pro -o text -e "" "Summarize this PR's changes for a code reviewer. Focus on the intent and key changes."
Track Specific Changes
# Find all changes to a function git log -p -S "functionName" -- "*.ts" # Find changes mentioning something git log -p --grep="JIRA-123"
Best Practices
- Review before commit - Always check
git diff --staged - Use stat first - Get overview before full diff
- Compare with base - Use
for PR contextmain...branch - Ignore whitespace - Use
for meaningful changes-w - Request AI review - For complex changes
- Save important diffs - Redirect to file for reference