Claude-skill-registry agent-ops-git-analysis
Analyze git repository for insights: contributor stats, commit patterns, branch health, and change analysis. Outputs actionable reports.
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/agent-ops-git-analysis" ~/.claude/skills/majiayu000-claude-skill-registry-agent-ops-git-analysis && rm -rf "$T"
manifest:
skills/data/agent-ops-git-analysis/SKILL.mdsource content
Git Analysis Skill
Generate repository insights and health reports from git history.
Commands
All analysis uses standard
git commands. No external dependencies required.
Quick Stats
# Total commits git rev-list --count HEAD # Contributors count git shortlog -sn --all | wc -l # First and last commit dates git log --reverse --format=%ci | head -1 git log -1 --format=%ci # Files in repository git ls-files | wc -l # Lines of code (approximate) git ls-files | xargs wc -l 2>/dev/null | tail -1
Contributor Analysis
# Commits per author git shortlog -sn --all # Commits per author (last 30 days) git shortlog -sn --since="30 days ago" # Most active files by author git log --author="Name" --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
Commit Patterns
# Commits by day of week git log --format=%ad --date=format:%A | sort | uniq -c | sort -rn # Commits by hour git log --format=%ad --date=format:%H | sort | uniq -c | sort -n # Commits per month (last year) git log --since="1 year ago" --format=%ad --date=format:%Y-%m | sort | uniq -c # Average commits per day (last 30 days) # commits / 30
Branch Health
# List all branches with last commit date git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)' # Stale branches (no commits in 90 days) git for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:iso) %(refname:short)' | while read date branch; do if [[ $(date -d "$date" +%s) -lt $(date -d "90 days ago" +%s) ]]; then echo "STALE: $branch (last: $date)" fi done # Merged branches (candidates for deletion) git branch --merged main | grep -v main # Branches ahead/behind main git for-each-ref --format='%(refname:short) %(upstream:track)' refs/heads
Large Files Detection
# Find large files in history git rev-list --objects --all | \ git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \ sed -n 's/^blob //p' | \ sort -rnk2 | \ head -20 # Current large files git ls-files | xargs ls -la 2>/dev/null | sort -rnk5 | head -20
Change Analysis
# Files most frequently changed (churn) git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20 # Recent hotspots (last 30 days) git log --since="30 days ago" --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20 # Diff stats between branches git diff --stat main..feature-branch # Changed files between commits git diff --name-status <commit1> <commit2>
Report Templates
Quick Health Report
# Repository Health Report Generated: {date} ## Overview - **Total Commits**: {count} - **Contributors**: {count} - **Age**: {first_commit_date} to {last_commit_date} - **Files**: {file_count} ## Activity (Last 30 Days) - Commits: {count} - Active Contributors: {count} - Most Changed Files: 1. {file} ({changes} changes) 2. ... ## Branch Status - Active Branches: {count} - Stale Branches (>90 days): {count} - Merged (deletable): {count} ## Hotspots Files with highest churn (potential refactoring candidates): 1. {file} - {change_count} changes 2. ... ## Recommendations - {recommendations}
Contributor Report
# Contributor Activity Report Generated: {date} Period: {start_date} to {end_date} ## Summary | Contributor | Commits | Lines Added | Lines Removed | |-------------|---------|-------------|---------------| | {name} | {count} | +{added} | -{removed} | ## Activity by Day {chart or table} ## Focus Areas Most modified files per contributor...
Diff Report
# Change Analysis: {branch1} → {branch2} Generated: {date} ## Summary - Files Changed: {count} - Lines Added: +{added} - Lines Removed: -{removed} ## Changed Files | File | Status | +/- | |------|--------|-----| | {path} | Modified | +{a}/-{r} | ## High-Impact Changes Files with >100 lines changed...
Invocation
When user asks for repository analysis:
-
Determine scope:
- Full repository or specific branch?
- Time period (all time, last N days)?
- Focus area (contributors, health, changes)?
-
Run appropriate commands
-
Generate report using templates above
-
Highlight actionable items:
- Stale branches to delete
- Large files to consider removing
- High-churn files that may need refactoring
- Missing recent activity
Example Invocations
User: "How healthy is this repo?" → Generate Quick Health Report
User: "Who's been most active this month?" → Generate Contributor Report for last 30 days
User: "What changed between main and feature-x?" → Generate Diff Report
User: "Any branches we should clean up?" → Run branch health commands, list candidates
Notes
- All commands work with standard git (no external tools required)
- Commands are cross-platform (adjust date commands for Windows)
- Large repositories may need pagination/sampling for performance
- Respect
when analyzing files.gitignore