skills/engineering-retro/SKILL.md
Git-based engineering retrospective analyzing commits, PRs, and velocity over configurable windows with monorepo path scoping. Triggers on: "retrospective", "sprint retro", "weekly review", "what did we ship", "engineering retro", "dev summary", "commit analysis".
npx skillsauth add mathews-tom/armory engineering-retroInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a structured, git-based engineering retrospective for a configurable time window. This is a read-only analysis — no files are modified except the optional JSON snapshot.
/engineering-retro [TIME_WINDOW] [PATH_SCOPE]
24h, 7d (default), 14d, 30dservices/apiExamples:
/engineering-retro — last 7 days, full repo/engineering-retro 30d — last 30 days, full repo/engineering-retro 14d services/api — last 14 days, scoped to services/api/Detect runtime context before any analysis:
# Default branch
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
if [ -z "$DEFAULT_BRANCH" ]; then
DEFAULT_BRANCH=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}')
fi
# System timezone
TZ_NAME=$(date +%Z)
# Time window — convert argument to --since format
# 24h → "24 hours ago", 7d → "7 days ago", 14d → "14 days ago", 30d → "30 days ago"
If DEFAULT_BRANCH detection fails, abort with an error — do not guess.
Collect commits within the time window on the detected default branch:
# All commits in window (with optional path scope)
git log origin/$DEFAULT_BRANCH --since="$SINCE" --format="%H|%aI|%aN|%s" -- $PATH_SCOPE
# Diff stats for the window
git log origin/$DEFAULT_BRANCH --since="$SINCE" --numstat --format="%H" -- $PATH_SCOPE
Capture: commit hash, author date (ISO), author name, subject line, files changed, insertions, deletions.
From the raw data, compute:
Analyze commit timestamps (converted to system timezone $TZ_NAME):
Present as a compact text histogram.
Group commits into work sessions using a >2 hour gap as a session boundary:
Sessions with a single commit get a default duration of 0 (point-in-time).
Classify each commit using conventional commit prefixes from the subject line:
| Prefix pattern | Category |
| ----------------------------------- | -------- |
| feat:, feat( | feature |
| fix:, fix(, bugfix | fix |
| refactor:, refactor( | refactor |
| chore:, chore(, build:, ci: | chore |
| docs:, doc: | docs |
| test:, tests: | test |
| perf: | perf |
| style: | style |
For commits without conventional prefixes, apply diff heuristics:
Report counts and percentages per category.
Identify the top 10 most-modified files by number of commits touching them:
git log origin/$DEFAULT_BRANCH --since="$SINCE" --name-only --format="" -- $PATH_SCOPE | sort | uniq -c | sort -rn | head -20
Flag any file modified in >50% of total commits as a hotspot. Hotspots indicate:
If the remote is GitHub (check git remote get-url origin for github.com):
# Merged PRs in window
gh pr list --state merged --base $DEFAULT_BRANCH --search "merged:>=$SINCE_DATE" --json number,title,author,mergedAt,additions,deletions,changedFiles,reviews
Compute:
If not a GitHub remote or gh is unavailable, skip this step and note it in the output.
Compute the ratio of focused commits (touching 3 or fewer files) to total commits:
focus_score = commits_touching_le_3_files / total_commits
Interpretation:
For each contributor, report:
Frame this as contributor highlights — recognition of work done, not a ranking or performance metric. Order alphabetically by author name.
Check for a prior snapshot in .engineering-retros/:
*.json fileIf no prior snapshot exists, note this is the first retrospective and skip comparison.
Save a JSON snapshot for future comparisons:
.engineering-retros/<YYYY-MM-DD>.json
Schema:
{
"date": "YYYY-MM-DD",
"window": "7d",
"path_scope": null,
"branch": "main",
"timezone": "PST",
"metrics": {
"commits": 0,
"contributors": 0,
"files_changed": 0,
"lines_added": 0,
"lines_removed": 0,
"net_delta": 0,
"focus_score": 0.0
},
"categories": {},
"hotspots": [],
"sessions": {
"total": 0,
"avg_length_minutes": 0
},
"authors": {},
"pr_stats": null
}
Create the .engineering-retros/ directory if it does not exist. Ensure .engineering-retros/ is in .gitignore (add it if missing — this is the one permitted file modification).
Produce the final output in this structure:
Engineering Retrospective — [DATE_RANGE] ([TIMEZONE]) Branch: [DEFAULT_BRANCH] | Scope: [PATH_SCOPE or "full repo"]
path/to/file — N commits [HOTSPOT if >50%]date +%Zgit symbolic-ref or git remote show-- $PATH_SCOPE when a scope is provided.engineering-retros/ only, never .context/retros/testing
Manages dependent branch stacks and stacked pull requests using safe Git topology rules. Triggers on: "create stacked PRs", "publish this stack", "sync my PR stack", "rebase this stack", "merge the stack", "retarget child PRs", "split this branch into stacked PRs", "validate this stack", "cleanup stacked branches". Use when local branches or one source branch need to become a dependency-ordered PR stack with correct parent bases, validation, synchronization, merge order, and cleanup.
development
Scaffolds per-repository agent context so coding agents share the same issue tracker rules, triage label vocabulary, domain glossary, ADR layout, and handoff conventions. Triggers on: "set up project context", "configure agent docs", "create CONTEXT.md", "setup agent workflow", "agent issue tracker setup", "triage labels", "domain glossary for agents". Use when a repo needs durable context files before planning, triage, debugging, TDD, architecture review, or multi-agent implementation.
testing
Produces phased task boards from feature requests: dependency-mapped work items, parallelization flags, risk flags, edge cases, test matrices. Triggers on: "decompose this feature", "task breakdown with dependencies", "phased implementation plan", "work breakdown structure". NOT for effort estimates, use estimate-calibrator.
development
Hypothesis-driven debugging with ranked hypotheses, git bisect strategy, instrumentation planning, and minimal reproduction design. Triggers on: "debug this systematically", "root cause analysis", "bisect this bug", "rank hypotheses", "isolate this issue", "minimal reproduction". NOT for general reasoning.