adr-writer
Generates Architecture Decision Records capturing context, rationale, alternatives, and consequences in numbered status-tracked format. Triggers on: "write an…
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 -y skills add Mathews-Tom/armory --skill engineering-retro --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/engineering-retroContext preview
The summary Claude sees to decide when to auto-load this skill.
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".
name: engineering-retro description: '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".' metadata: version: 1.0.1 category: review tags: [retrospective, velocity, git-analysis, sprint] difficulty: intermediate phase: ship
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]
Examples:
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:
1. Sort commits by author and timestamp 2. For each author, iterate chronologically — if gap between consecutive commits exceeds 2 hours, start a new session 3. Compute per-session: duration (first commit to last commit), commit count 4. Aggregate: total sessions, average session length, longest session, average commits per session
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:
Curated, production-grade skills, agents, hooks, rules, commands, utilities, and presets for AI coding agents. No magic, no demos — battle-tested workflows built for developers who use AI seriously.
Repo: Mathews-Tom/armory
Generates Architecture Decision Records capturing context, rationale, alternatives, and consequences in numbered status-tracked format. Triggers on: "write an…
Build AI agents and automate Claude Code programmatically via the Claude Agent SDK and headless CLI mode. Covers Python SDK, claude -p, SDK MCP servers, hooks,…
Audits and enhances FastAPI and REST API documentation: missing descriptions, response codes, examples, docstrings, Pydantic models, OpenAPI spec. Triggers on:…
Generate architecture diagrams as fully editable SVG with native AWS, Azure, and GCP icons for cloud diagrams, or hand-drawn generic icons for everything else.…
Architecture reviews across 7 dimensions (structural, scalability, enterprise readiness, performance, security, ops, data) with scored reports. Triggers on:…
Optimize and prepare figures for arXiv submission: format conversion (EPS/PDF/PNG/JPG), size reduction, metadata stripping, processor compatibility (DVI vs…