From rune
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'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rune:retroThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Engineering retrospective engine. Analyzes git history, work patterns, and code quality signals to produce actionable retrospectives with per-person breakdowns, shipping streaks, and concrete improvement habits. Fills a gap in the Rune ecosystem — cook builds, review checks, but nothing reflects on HOW the team works.
Engineering retrospective engine. Analyzes git history, work patterns, and code quality signals to produce actionable retrospectives with per-person breakdowns, shipping streaks, and concrete improvement habits. Fills a gap in the Rune ecosystem — cook builds, review checks, but nothing reflects on HOW the team works.
Retro is READ-ONLY. It analyzes and reports — it does NOT modify code, create PRs, or change any files except its own output artifacts (.rune/retros/). Retro is ENCOURAGING but CANDID. Every critique is anchored in specific commits, not vague impressions./rune retro — default 7-day retrospective/rune retro 24h — daily standup review/rune retro 14d — sprint retro (2 weeks)/rune retro 30d — monthly review/rune retro compare — current vs previous period side-by-side/rune retro --business — cross-domain executive retrospective with HTML report (Business tier)audit (L2) for engineering health dimensionscout (L2): scan codebase for test file counts, project structureplan (L2): when retro identifies systemic bottlenecks — hand findings to plan for next sprint (e.g., "fix ratio >50% → allocate debugging time in next phase")journal (L3): retro findings → ADR entries for recurring team patternsneural-memory (L3): recall past retro insights for trend comparison; save this retro's key insights for future sessionsaudit (L2): engineering velocity and health dimensioncook (L1): optional — after completing a multi-phase feature, suggest retrorescue (L1): post-rescue retrospectivelaunch (L1): post-launch retrospective/rune retro direct invocationplan (L2): retro insights inform future sprint planning (e.g., "fix ratio too high → allocate debugging time")journal (L3): retro findings → ADR entries for team patternsneural-memory (external): retro insights → persistent cross-session memorygit history: commits, authors, timestamps, file changes.rune/retros/ history: previous retro JSON for trend comparisonneural-memory (external): past retro insights for pattern recognitionretro ↔ plan: retro identifies bottlenecks → plan adjusts estimation and phase sizing → next retro measures improvementRun these git commands to collect metrics for the specified time window:
# Core metrics (run in parallel)
git log --since="<window-start>" --format="%H|%an|%ae|%aI|%s" --shortstat
git log --since="<window-start>" --format="%H" --numstat
git log --since="<window-start>" --format="%aI" # timestamps for session detection
git log --since="<window-start>" --format="%an" | sort | uniq -c | sort -rn # per-author
git shortlog --since="<window-start>" -sn # author leaderboard
Time window alignment: For day/week units, align to midnight: --since="YYYY-MM-DDT00:00:00". This prevents partial-day skew.
Identify "You": git config user.name = current user. All others are teammates.
Also gather:
find . -name "*.test.*" -o -name "*.spec.*" -o -name "*_test.*" | wc -l.rune/retros/ for prior retro history (if exists)| Metric | How to compute |
|---|---|
| Commits | Count from git log |
| Contributors | Unique authors |
| LOC added/removed | Sum from numstat |
| Test LOC ratio | test files LOC / total LOC changed |
| Active days | Unique dates with commits |
| Sessions | Detected via 45-min gap threshold (Step 4) |
| LOC/session-hour | Total LOC / total session hours |
| Fix ratio | fix: commits / total commits |
Build an ASCII bar chart showing commit distribution by hour (local timezone):
Hour Commits
06 ██ 3
07 ████ 7
08 ██████ 12
...
Identify: peak hours, dead zones, bimodal patterns (morning + evening coder).
Group commits into sessions using a 45-minute gap threshold:
Classify sessions:
Parse conventional commit prefixes and show percentage bar:
feat ████████████████ 45%
fix ████████ 22%
ref ████ 11%
test ████ 11%
docs ██ 5%
chore██ 6%
Flag: if fix ratio > 50% → "High fix ratio suggests reactive mode. Consider investing in test coverage."
Top 10 most-changed files in the window:
| File | Changes | Test Coverage |
|---|---|---|
| src/auth/login.ts | 8 | ✅ |
| src/api/users.ts | 6 | ❌ |
Flag: files with 5+ changes = churn hotspot — candidate for refactoring. Flag: hotspot files without test coverage = risk.
For each contributor:
Current user (deepest treatment):
Teammates (2-3 sentences each):
Read most recent .rune/retros/*.json. Compute deltas:
| Metric | Previous | Current | Delta |
|---|---|---|---|
| Commits | 45 | 52 | +15% ↑ |
| Test ratio | 0.18 | 0.24 | +33% ↑ |
| Fix ratio | 0.55 | 0.38 | -31% ↓ (improving) |
| Deep sessions | 8 | 12 | +50% ↑ |
Query full history for consecutive days with at least 1 commit:
Write JSON snapshot to .rune/retros/{YYYY-MM-DD}.json:
{
"date": "2026-03-20",
"window": "7d",
"metrics": {
"commits": 52, "contributors": 3, "loc_added": 1850,
"loc_removed": 620, "test_ratio": 0.24, "fix_ratio": 0.38,
"active_days": 5, "sessions": 14, "deep_sessions": 8
},
"authors": ["user1", "user2"],
"streak": { "team": 12, "personal": 5 },
"summary": "Shipped auth overhaul + 3 bug fixes. Test ratio improving."
}
Structure (~800-1500 words — concise, not a novel):
Tone: Encouraging but candid. Specific and concrete. Anchored in actual commits, not vague impressions. Every critique paired with a specific suggestion.
At specific project milestones, retro automatically generates a deeper analysis with a different focal point per milestone. This goes beyond the standard weekly retro — it's a reflective checkpoint on the project's evolution.
Count total retro snapshots in .rune/retros/ (each represents ~1 retro session). Trigger milestone analysis when count reaches:
| Milestone | Retro Count | Focal Point | Depth |
|---|---|---|---|
| First Month | 4 | Foundations — Are conventions solid? Is the architecture scaling? Are early decisions holding? | Standard + foundation review |
| Quarter | 12 | Patterns — What recurring themes emerged? Which areas churn most? Is technical debt growing or shrinking? | Standard + theme extraction |
| Half Year | 24 | Growth — How has the codebase evolved? Are the original architectural bets paying off? What would you do differently? | Standard + architecture review |
| One Year | 50 | Maturity — Full project health assessment. Velocity trends over time. Team growth patterns. Knowledge distribution. | Standard + full evolution timeline |
When a milestone is detected (retro count matches a threshold for the first time):
"🏁 Milestone: [name] ([count] retros). Generating deep analysis...".rune/retros/*.json snapshots (not just the most recent).rune/retros/{YYYY-MM-DD}-milestone-{name}.md## Milestone: [name] — [date]
### Evolution Timeline
[ASCII chart or table showing key metrics across all retro snapshots]
### [Focal Point] Analysis
[300-500 words anchored in data — specific commits, files, metrics]
### What's Working
- [pattern that's improving, with evidence]
### What Needs Attention
- [pattern that's degrading, with evidence]
### Recommendations
- [1-3 concrete actions based on the focal analysis]
.rune/retros/*-milestone-{name}.md already exists before generatingWhen invoked as /rune retro compare:
SELF-VALIDATION (run before emitting report):
- [ ] All metrics computed from actual git data — no assumptions or estimates
- [ ] Per-person praise is anchored in specific commits (not generic "great work")
- [ ] Improvement suggestions are actionable (not "write more tests" but "add tests for the 3 hotspot files without coverage")
- [ ] Retro JSON saved to .rune/retros/ for trend tracking
- [ ] No code was modified — retro is read-only
When invoked as /rune retro --business, generate a cross-domain executive retrospective with HTML output. Requires Business tier (.rune/org/org.md should exist).
Pull from all installed domain packs:
.rune/org/org.md for team structure and governance level.rune/signals/)report-templates/retro-business.html from Business pack and populate all {{placeholder}} fields with computed data.rune/retros/{YYYY-MM-DD}-business.html.rune/retros/2026-03-30-business.html — Self-contained HTML report
.rune/retros/2026-03-30.json — Machine-readable metrics
The HTML report includes: KPI cards with trend deltas, domain performance bars (engineering, revenue, support, finance), team health table, compliance status, key insights (wins + risks), and is printable to PDF via Ctrl+P.
.rune/org/org.md missing: use generic team structure, WARN in report| Failure Mode | Severity | Mitigation |
|---|---|---|
| Generic praise not anchored in commits | HIGH | Every praise MUST reference a specific commit or PR — "great auth refactor in 3 commits" not "good job this week" |
| Vague improvement suggestions | HIGH | "Add tests for src/api/users.ts (6 changes, 0 tests)" not "consider writing more tests" |
| Counting merge commits as real work | MEDIUM | Use --no-merges flag to exclude merge commits from metrics |
| Timezone skew in hourly histogram | MEDIUM | Convert all timestamps to local timezone before bucketing |
| Retro on empty window (no commits) | LOW | Detect early and report: "No commits in the last {window}. Nothing to retro." |
| Discouraging tone for struggling weeks | HIGH | Even bad weeks have wins. Find the smallest positive signal and lead with it |
## Engineering Retro: [date range]
> [tweetable summary]
### Summary
| Metric | Value |
|--------|-------|
| Commits | N |
| ... | ... |
### [remaining sections per Step 12]
### Top 3 Wins
1. [specific win anchored in commit]
2. [specific win]
3. [specific win]
### 3 Things to Improve
1. [specific, actionable]
2. [specific, actionable]
3. [specific, actionable]
### 3 Habits for Next Week
1. [concrete daily practice]
2. [concrete daily practice]
3. [concrete daily practice]
.rune/retros/ for trend tracking| Artifact | Format | Location |
|---|---|---|
| Retrospective narrative report | Markdown (~800-1500 words) | inline |
| Retro JSON snapshot | JSON | .rune/retros/{YYYY-MM-DD}.json |
| Per-person breakdown | Markdown sections | inline |
| Action items + habits | Ordered lists | inline |
~3000-5000 tokens input (git history parsing), ~2000-4000 tokens output (narrative). Sonnet for analysis quality. Runs infrequently (weekly/sprint cadence).
Scope guardrail: retro is read-only — it analyzes and reports. It does NOT modify code, create PRs, or change any files except its own output artifacts in .rune/retros/.
npx claudepluginhub rune-kit/rune --plugin @rune/analyticsRuns weekly engineering retrospectives analyzing git commit patterns, velocity, code quality, and work sessions with persistent trend tracking.
Analyzes git history for sprint retrospectives: velocity, commit patterns, test health, shipping cadence. Use after sprints, weekly, or progress reflection.
Generates structured git-based engineering retrospectives analyzing commits, PRs, and velocity over configurable time windows with monorepo path scoping.