From Darkroom Engineering
Runs weekly engineering retrospectives with git commit analysis, metrics, and period comparison. Activates on queries about shipped work.
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
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 darkroomGenerates structured git-based engineering retrospectives analyzing commits, PRs, and velocity over configurable time windows with monorepo path scoping.
Analyzes 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'.
Analyzes git history for sprint retrospectives: velocity, commit patterns, test health, shipping cadence. Use after sprints, weekly, or progress reflection.