skills/retro/SKILL.md
Reflect on a slice of the current session (a single iteration, the whole session, or a natural pause point) to identify durable, codifiable learnings about workflow OR dev infrastructure — and ship them only if they clear a quality bar. Most invocations produce nothing; that's the point. Use when the user asks to "run a retro", "do a retrospective", "reflect on the session", "what did you learn", "improve skills based on this session", "codify learnings"; when invoked from a loop driver (`/shovel-ready`, `/kaizen`, `/bughunt`) with `--scope=iteration`; or **proactively at pause points** when the agent is waiting on async work (CI, autodev runs, monitor events) and has cycles to think meta.
npx skillsauth add eumemic/dev-skills 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.
Reflect on a slice of the conversation, identify only durable codifiable learnings, and apply a quality gate before proposing or executing changes. Most retros — especially per-iteration ones — should produce nothing actionable, and that's the healthy default.
Scope is broad: workflow AND dev infrastructure. A retro should consider not just "did the agent's skills handle this well" but also "could the underlying tooling have been better" — autodev pipeline gaps, aios memory features, eumemic-ops audit checks, missing CLI affordances, etc. The action item types section below makes this explicit (constellation-wide issues, not just target-repo issues).
/retro runs in one of three scopes:
--scope=iteration — invoked by the loop drivers (/shovel-ready, /kaizen, /bughunt) at Phase 5, between /ship CI-green and merge. Analyzes only this iteration's events (since branch creation). Action items that touch the current branch's repo get committed to the same PR; everything else is a side effect.--scope=session (default) — invoked standalone by the user. Analyzes the full conversation history. Action items always go to whichever repo they belong to, separately from any in-flight work.--scope=pause — agent-initiated at a natural pause point (waiting on autodev/CI/monitor, mid-coffee in the conversation flow). Analyzes the slice since the last retro or, if none this session, since the conversation start. Behaves like --scope=session but with a stricter quality gate: pause-point retros run frequently, so noise is more costly.If neither flag is passed and there's no loop-driver caller, default to session. If invoked from a loop driver without --scope, that's a bug in the caller — assume iteration and continue.
The agent should proactively trigger /retro --scope=pause when all of these hold:
Self-invocation is signaled by saying "running /retro at this pause point" and proceeding through the phases. The quality gate still applies — most pause-point retros produce nothing, and that remains the healthy default. Self-invocation is permission to consider, not permission to ship.
When in doubt, skip. A missed pause-point retro is invisible; a noisy one drains the user's attention budget.
The temptation in a retro is to find SOMETHING worth changing every time. Resist it. Wrong skill changes — over-eager codifications, fossil instructions, premature abstractions in skill files — actively make future sessions worse. A skill edit that "feels good" in the moment but doesn't capture a recurring pattern becomes a stale instruction that biases future agents incorrectly.
The right outcome on most iterations is: "looked at the iteration's friction signals; nothing rose to the bar of being worth codifying; proceeding."
A finding clears the bar only if all three are true:
If a finding fails any of the three, drop it. Do not force-fit it into a skill edit just because the retro was invoked.
If no finding clears all three, the retro produces no actionable output. Report "no actionable findings this round" and return.
Open-ended; pick the one that fits each finding:
loop-driver, the three loop specializations, /ship, /retro itself, or any other skill that was active. Best for: workflow improvements that recur across iterations or sessions.~/.claude/scripts/) that automate a friction point. Best for: repeated multi-step shell sequences.The action item doesn't have to be in the repo you're working in. "Could this have been easier if upstream X were different?" is always a legitimate question.
A single retro can produce a mix. Most retros produce zero. Some produce one. A retro producing three or more is suspicious — apply the quality gate harder.
Identify the time window for this retro:
--scope=iteration — events since the current branch was created. Read with git log <default>..HEAD to bound it temporally; use the conversation since the matching /shovel-ready / /kaizen / /bughunt Phase 2 invocation as the conversation slice.--scope=session — the whole conversation history visible.If invoked from a loop driver, also note which skills were involved in this iteration (loop specialization + /ship + any sub-skills). Action items will be attributed to those skills.
Before proposing changes, read what's already there:
MEMORY.md and the relevant memory entries (so a proposed memory doesn't duplicate).Skip this step if the analysis window has produced no friction signals — Phase 3 will exit early anyway.
Scan the analysis window for:
--scope=pause retros, since they accumulate across sessions before being captured.Each candidate finding gets a one-line summary and a proposed action item type. Don't fix anything yet.
For each candidate, check the three conditions:
Drop everything that fails. It is correct for Phase 4 to drop everything in many retros — even most retros.
If after gating no findings remain:
No actionable findings this round.
Return. (For iteration-mode invocations, this is the success path; the loop driver continues to merge.)
Each surviving finding falls into one of two zones based on what it touches:
The agent owns these decisions; surface only the results, after the fact:
~/.claude/projects/<project>/memory/ and MEMORY.md index updatesprinciples/, patterns/, workflows/, lieutenants/, architecture/ — the institutional-knowledge layer/ship, /retro, or any other skill in dev-skills (or wherever the relevant SKILL.md lives) — the agent's own behavioral substrate~/.claude/scripts/ or similar private locationsWhy autonomous: these adjust how the agent operates or unstick obvious-broken state without redesigning anything. The cost of a wrong edit is reversible (a future retro can undo, a follow-up PR can amend); the cost of forcing a sign-off on every wording change or obvious fix is friction that turns the agent into a bottleneck rather than a force-multiplier.
Items that change the design or shape of the system:
The calibration question: "is this introducing a new design element, or making an existing one work as designed?" Former is surface zone; latter is autonomous.
If a single retro has both zones: execute the autonomous-zone items immediately, then present the surface-zone items via AskUserQuestion. Report what was already done alongside the asks. Don't withhold the autonomous changes pending sign-off on the surface ones; they're independent.
Retro found N items in the surface zone:
1. [Type] [Target] — [one-line description]
Rationale: [why this clears the bar]
2. ...
Approve all / approve subset / discard all?
Default to "approve subset" semantics — let the user opt in per item if there are multiple.
If all surviving findings are autonomous-zone, skip the AskUserQuestion entirely and proceed straight to Phase 6.
For autonomous-zone items: execute immediately in Phase 5 (no waiting). For surface-zone items: execute only the approved subset from Phase 5.
Per item type:
~/.claude/projects/<project>/memory/ and update MEMORY.md.~/code/eumemic-company/ (or via a worktree if the base is on a non-default branch). Commit with conventional-commits format and Co-Authored-By: Claude trailer. Push to master so lieutenants who clone the repo at session-create time pick up the change.~/.claude/scripts/ (or wherever the user keeps personal automation).gh issue create on the target repo with a descriptive body; surface the issue URL.After execution, report what was done. For iteration-mode invocations, return control to the loop driver so it can wait for CI re-run (if a commit was added to the current PR) and proceed to its Phase 6 (merge).
If you dropped 3+ candidates in Phase 4, consider mentioning them as a brief footnote ("3 candidate findings did not clear the quality gate: <one-liner each>"). This is optional and only useful when the volume of dropped candidates suggests a calibration issue worth the user noticing. Don't list dropped findings to look thorough.
For iteration-mode retros, skip Phase 7 unless the user has explicitly asked for verbose retros — the loop driver wants minimal narration.
--scope=pause more than once per ~5 user messages of substantive work. Pause-mode is most valuable when meaningful events have accumulated; running it on every brief wait turns it into noise.AskUserQuestion mid-retro when:
When in doubt about whether a finding clears the bar, drop it. Wrong skill edits compound; missed retros don't.
references/skill-criteria.md — what skills ARE and ARE NOT for, with examples. Useful when deciding between a skill edit and a memory entry.references/analysis-framework.md — detailed candidate-finding categories and proposal templates. Useful for session-mode retros that want a deeper structure than Phase 3 provides.testing
This skill should be used when the user asks to "test this feature", "verify this works", "run tests", "check if this is working", "test thoroughly", or mentions testing a specific feature or fix.
tools
Drive a GitHub `shovel-ready` issue queue end-to-end — pick highest-ROI, TDD, /ship, /retro, merge; when empty, audit closed work and unlabeled candidates to refill it; otherwise wait for new labels. Use when the user invokes `/shovel-ready`, asks to "work the shovel-ready queue", "drain shovel-ready", "drive issues to merge", "autopilot on labeled issues", "issue-label queue", or sets up an autonomous-development loop on a GitHub-labeled issue tracker. GitHub-specific (uses `gh` CLI); skip for GitLab/Jira.
development
Drive a code change from working tree to a green PR — runs project checks, /simplify, code-review subagent, commits, opens PR, monitors CI. Stops when CI is green; caller handles merge. Use when invoked as `/ship`, or when another skill (e.g., `/shovel-ready`, `/kaizen`, `/bughunt`) hands off a working tree of changes to be shipped. Project-agnostic; reads check commands from CLAUDE.md.
testing
Reference document shared by /shovel-ready, /kaizen, and /bughunt for their common autonomous-loop machinery (branching, /ship handoff, /retro pass, merge handling, idle escalation, flag passthrough). NOT user-invokable. Only load when one of the three loop specializations explicitly directs you here.