From Darkroom Engineering
Runs weekly engineering retrospectives analyzing git commit patterns, velocity, code quality, and work sessions with persistent trend tracking.
How this skill is triggered — by the user, by Claude, or both
Slash command
/darkroom:retroThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before starting work, create a marker: `mkdir -p ~/.claude/tmp && echo "retro" > ~/.claude/tmp/heavy-skill-active && date -u +"%Y-%m-%dT%H:%M:%SZ" >> ~/.claude/tmp/heavy-skill-active`
Before starting work, create a marker: mkdir -p ~/.claude/tmp && echo "retro" > ~/.claude/tmp/heavy-skill-active && date -u +"%Y-%m-%dT%H:%M:%SZ" >> ~/.claude/tmp/heavy-skill-active
Analyze commit history to produce velocity metrics, work patterns, and improvement suggestions with persistent history for trend tracking.
This skill is self-contained. Do not read CLAUDE.md or agent definitions.
/retro — last 7 days (default)/retro 24h or /retro 14d or /retro 30d — custom window/retro compare — current 7d vs prior 7d/retro compare 14d — current 14d vs prior 14dValidation: Only accept arguments matching \d+[dhw], compare, or compare \d+[dhw]. Reject anything else with usage instructions.
Fetch latest from remote, then run 5 parallel git commands:
# Fetch latest
git fetch origin main 2>/dev/null
# 1. Commits with timestamps, subject, hash, and stats
git log origin/main --since="WINDOW_START" --format="%H|%aI|%s" --shortstat
# 2. Per-commit numstat for test vs production LOC breakdown
# Test files: paths matching test/|spec/|__tests__|*.test.|*.spec.
git log origin/main --since="WINDOW_START" --format="%H" --numstat
# 3. Sorted commit timestamps for session detection (local timezone)
git log origin/main --since="WINDOW_START" --format="%aI" | sort
# 4. Hotspot analysis (most frequently changed files)
git log origin/main --since="WINDOW_START" --format="" --name-only | sort | uniq -c | sort -rn | head -20
# 5. PR number extraction from commit messages (#NNN patterns)
git log origin/main --since="WINDOW_START" --format="%s" | grep -oE '#[0-9]+' | sort -u
Replace WINDOW_START with the appropriate --since value for the requested window.
Build a summary table:
| Metric | Value |
|-----------------------|----------------|
| Commits to main | N |
| PRs merged | N |
| Total insertions | +N lines |
| Total deletions | -N lines |
| Net LOC | +/-N |
| Test LOC | N lines |
| Test ratio | N% |
| Active days | N/7 |
| Detected sessions | N |
| Avg LOC/session-hour | ~N |
Build an hourly histogram using local timezone. Identify:
Hour | Commits
------|---------
8:00 | ###
9:00 | ######
10:00 | ########
...
Use a 45-minute gap threshold to detect session boundaries. Classify sessions:
| Type | Duration | Description |
|---|---|---|
| Deep | 50+ min | Sustained focused work |
| Medium | 20-50 min | Moderate task work |
| Micro | <20 min | Quick fixes, reviews |
Calculate:
Categorize by conventional commit prefix:
feat: N% (N commits)
fix: N% (N commits)
refactor: N% (N commits)
test: N% (N commits)
chore: N% (N commits)
docs: N% (N commits)
other: N% (N commits)
Flag: Fix ratio > 50% may indicate a review gap or instability.
Top 10 most-changed files. For each:
Bucket PRs by total LOC changed:
| Size | LOC Range | Count | Notes |
|---|---|---|---|
| Small | <100 | N | Ideal for review |
| Medium | 100-500 | N | Acceptable |
| Large | 500-1500 | N | Consider splitting |
| XL | 1500+ | N | Flag with file count |
Focus Score: Percentage of commits touching the single most-changed top-level directory. Higher = more focused work.
Ship of the Week: The highest-LOC PR with:
Split the window into weekly buckets. Track:
Show as a compact table with trend arrows.
Count consecutive days with at least 1 commit to origin/main, going back from today. Use full git history — no cutoff.
git log origin/main --format="%ad" --date=short | sort -u
Walk backward from today counting consecutive days.
Check for prior retro snapshots:
ls .context/retros/*.json 2>/dev/null | sort | tail -1
If found, load the most recent and calculate deltas:
If none exist, note "First retro recorded."
Save JSON to .context/retros/YYYY-MM-DD.json:
mkdir -p .context/retros
Schema:
{
"date": "YYYY-MM-DD",
"window": "7d",
"metrics": {
"commits": 0,
"prs": 0,
"insertions": 0,
"deletions": 0,
"net_loc": 0,
"test_loc": 0,
"test_ratio": 0.0,
"active_days": 0,
"sessions": 0,
"deep_sessions": 0,
"avg_session_minutes": 0,
"loc_per_session_hour": 0,
"feat_pct": 0.0,
"fix_pct": 0.0,
"peak_hour": 0,
"streak_days": 0
},
"summary": "Tweetable summary here"
}
Structure:
When /retro compare is used:
--since and --until to avoid overlaporigin/main — local-only commits are not shippednpx claudepluginhub darkroomengineering/cc-settings --plugin darkroomAnalyzes git commit history for engineering retrospectives, tracking work patterns, code quality metrics, trends, per-person breakdowns, shipping streaks, and actionable improvements. Use for 'retro', weekly reviews, or 'what did we ship'.
Generates structured git-based engineering retrospectives analyzing commits, PRs, and velocity over configurable time windows with monorepo path scoping.
Analyzes git history for sprint retrospectives: velocity, commit patterns, test health, shipping cadence. Use after sprints, weekly, or progress reflection.