Help us improve
Share bugs, ideas, or general feedback.
From codebase-recon
Analyzes git history to identify code hotspots, bug magnets, bus factor, team momentum, and recent changes. Use when onboarding to unfamiliar codebases or assessing project health.
npx claudepluginhub yujiachen-y/codebase-recon-skill --plugin codebase-reconHow this skill is triggered — by the user, by Claude, or both
Slash command
/codebase-recon:codebase-reconThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze git history to understand a codebase before reading any code. Reveals project health, risk areas, team structure, and development momentum.
Analyzes git history to find code hotspots, temporal coupling between files, contributor knowledge distribution, and bus factor risks. Useful for queries on code ownership, frequent changes, or evolution.
Extracts git intelligence including activity heatmaps, ownership stats, and in-flight branches/PRs. Use during discovery and project health assessment.
Analyzes git history to detect codebase hotspots (frequent changes/bug fixes), decay signals (accelerating churn), and inconsistencies (multiple authors/patterns). Use before refactoring or investigating recurring bugs.
Share bugs, ideas, or general feedback.
Analyze git history to understand a codebase before reading any code. Reveals project health, risk areas, team structure, and development momentum.
Inspired by "The Git Commands I Run Before Reading Any Code" by Ally Piechowski.
Before running analysis, determine repo scale to calibrate time windows and result counts.
Run this single shell command to collect repo vitals:
echo "COMMITS=$(git rev-list --count HEAD)" && \
echo "FIRST_COMMIT=$(git log --reverse --format='%ad' --date=short | head -1)" && \
echo "LATEST_COMMIT=$(git log --format='%ad' --date=short | head -1)" && \
echo "BRANCHES=$(git branch -a | wc -l | tr -d ' ')"
Use the commit count to set parameters for Phase 2:
| Repo Size | Commits | WINDOW (--since) | N (--head) |
|---|---|---|---|
| Small | <500 | (omit --since) | 10 |
| Medium | 500-10k | 1 year ago | 20 |
| Large | >10k | 6 months ago | 30 |
Print the Repo Vitals line immediately:
Repo Vitals: Age: [FIRST_COMMIT to LATEST_COMMIT] | Commits: [COMMITS] | Branches: [BRANCHES] | Analysis window: [WINDOW or "all time"]
Run all 7 commands in parallel (they are independent). Substitute WINDOW and N from Phase 1. For small repos, omit --since flags entirely.
Most-changed files in the analysis window:
git log --format=format: --name-only --since="WINDOW" | sort | uniq -c | sort -nr | head -N
All-time contributor ranking by commit count:
git shortlog -sn --no-merges
Files most associated with bug-fix commits:
git log -i -E --grep="fix|bug|broken" --name-only --format='' --since="WINDOW" | sort | uniq -c | sort -nr | head -N
Commit frequency by month (all time):
git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c
Emergency/revert commits in the analysis window:
git log --oneline --since="WINDOW" | grep -iE 'revert|hotfix|emergency|rollback'
New files added in the analysis window:
git log --diff-filter=A --since="WINDOW" --name-only --format='' | sort | uniq -c | sort -nr | head -N
Count of contributors active in the last 3 months (fixed window — measures "who's here now"):
git shortlog -sn --no-merges --since="3 months ago" | wc -l
Compare this count against the total from 2b.
After collecting all Phase 2 results, perform these cross-references before presenting the report:
git shortlog -sn -- <file> to identify the primary owner.Present the report in the terminal using this structure:
═══ Codebase Recon Report ═══
Repo Vitals
Age: [first commit] to [latest commit] | Commits: N | Branches: N | Analysis window: WINDOW
1. Code Hotspots (most-changed files)
[ranked list: count filepath]
2. Bug Magnets (files with fix/bug/broken commits)
[ranked list: count filepath]
3. High-Risk Files (appear in BOTH hotspots AND bug magnets)
[list with: filepath — hotspot rank #X, bug magnet rank #Y, primary owner: NAME]
If none overlap, state: "No files appear in both lists — good sign."
4. Bus Factor
[top 10 contributors: count name]
Active (last 3 months): X of Y total contributors
[If active < 30% of total: "Warning: low active contributor ratio — knowledge concentration risk"]
5. Team Momentum
[monthly commit counts, most recent 12 months or all if fewer]
Trend: [rising / stable / declining / erratic]
6. Firefighting Frequency
[list of revert/hotfix/emergency commits, or "None found"]
Rate: N emergency commits out of M total in window (X%)
7. Recently Added Files
[ranked list: count filepath]
8. Recommendations
- Start reading: [top 3 high-risk files, or top 3 hotspots if no high-risk files]
- Talk to: [primary owner of the #1 high-risk or hotspot file]
- Watch out: [any trend warnings — declining momentum, low bus factor, high firefighting rate]
After printing the report, ask:
"Want me to save this report to a markdown file? (e.g.,
docs/codebase-recon-report.md)"
If yes, write the same content as a markdown file. Do not commit — let the user decide.