plugins/agentic-engineering-principles/skills/agent-retrospectives/SKILL.md
Run structured retrospectives on any agent setup — instructions (AGENTS.md, CLAUDE.md, system prompts), skills, slash commands, workflows, processes, and tooling — after real use, mining finished runs for durable improvements. Covers the quality → cost → speed review order, deterministic extraction before judgment, spot-checking agent self-reports, and routing every finding to a concrete owner. Use when asked for a "retrospective on how the agent did", "post-mortem on this run", "improve my CLAUDE.md from this session", "audit how the workflow performed", or after rolling out new instructions, skills, or tooling and wanting to know what to change.
npx skillsauth add amhuppert/my-ai-resources agent-retrospectivesInstall 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.
Every substantive stretch of agent-assisted work is an auditable artifact — not just formal orchestration runs, but any session where an agent worked under your instructions, skills, and tooling. The trigger for this skill: you just finished such a stretch, or rolled out new instructions/skills/tooling, and want to mine the experience for durable improvements rather than vague impressions. A retrospective that produces no change to an instruction file, skill, tool, or process was a reading exercise, not a retrospective.
Answer three questions, in this order — do not let a cheap-and-fast run excuse a wrong one:
An audit that only lists problems is half an audit. Improvements need to know what to preserve — which instructions were followed cleanly, which skills triggered correctly, which decompositions produced first-try passes. Include a "what worked (preserve these)" section with mechanism → evidence pairs, or the next revision will churn the parts that were fine.
A finding without an owner changes nothing. For each finding, name the surface that will absorb the fix:
If a finding fits no owner, either generalize it until it does or drop it — "the agent should be more careful" is not a finding.
The meta-pattern that makes retrospectives compound: each new rule, reminder, or gotcha cites the incident that earned it (see earned-guidance-docs). Retrospectives mine real runs for failure modes; failure modes become named rules in planning and instruction docs and invariants in tooling; the next run operates under the improved rules and is audited again. Guidance that cites its originating incident stays specific; guidance written from speculation reads as generic advice and gets ignored.
When telemetry exists — transcripts, logs, cost data — run mechanical tallies before reading anything qualitative:
When no telemetry exists, say so — and treat "we could not measure this" as a finding about the tooling.
A subagent's deep-read summary is a hypothesis, not a source. In one real audit, two deep-read agents returned quantifications — a per-iteration dollar split and an errored-call count — that failed verification against the mechanical extractor. Rules:
Iteration summaries, handoff notes, and completion messages overstate. A handoff claiming "independent reviewer APPROVED" or "TDD'd failing-test-first" is only true if the transcript shows the reviewer invocation or the RED test run. Spot-check specifically the claims the success verdict leaned on — those are the ones that were load-bearing and the ones most likely to have been asserted rather than done.
For every rejection or NO-GO, read both the verdict and what followed:
Over time, give recurring findings stable names, each mapped to a "where to dig next" and a canonical fix class. Generic starters that transfer to any agent setup:
| Failure mode | Signal | Canonical fix class | |---|---|---| | Context-window pressure | High occupancy; quality degrades silently near the limit | Split the work into smaller units | | Prompt growth | Instructions/feedback accumulate across iterations instead of resolving | Resolve feedback into the artifact; don't re-inject verbatim | | Structured-output parse fallback | Output needed fenced-JSON/raw salvage | Fix the output contract or schema | | Unexplained stall gap | Wall time covered by no known activity | Instrument the orchestration dead air | | Hung/silent turn | Long stretch with zero events | Liveness watchdog; treat as a reliability incident, not labor | | Scratch debris in commits | Temp files/logs shipped in the final change | Hygiene gate before publish |
State the catalog's limits explicitly, and hand-check outliers no detector ranks: an iteration far longer than its siblings, an extreme cost-per-turn ratio, a file re-read ten times.
When analyzing slowness, bucket every wall-clock gap by cause — agent work, human wait, tooling/validation wait, dead air — so only the unexplained residual counts as process overhead. Long agent-work gaps can be normal; unexplained ones are the problem. Measure operator recovery time (halted → resumed) as its own metric: in one real case, runs with hours of halted-waiting-for-operator time reported zero human wait until recovery time was measured separately. A category you don't measure reports as zero.
Artifacts too large for your context (multi-thousand-line transcripts) go to subagents with a strict, citation-enforcing brief:
Run one subagent per hotspot, in parallel, and verify any number you republish (see above).
earned-guidance-docs — write agent guidance only when earned by real failures; root contract plus read-on-demand docsagent-feedback-tiers — hint/reminder/instruction output tiers and the reminder admission rulelogging-for-agent-debugging — structured logs agents can debug from: stable event names, trace context, bounded analysislive-system-verification — verify features against the running system and durable state, not fakes or UIdevelopment
Debug a running web app via the web-debugger SDK: app logs, application state, runtime snapshots, React state, query cache.
development
Thoroughly understand a software development objective before implementation: research, identify ambiguities, ask clarifying questions. Use before starting implementation of a non-trivial or ambiguously specified feature, or when requirements leave open design decisions.
development
Locate the on-disk Claude Code transcript file (.jsonl under ~/.claude/projects/) for the current or a specified conversation.
development
Reflect on codebase navigation effectiveness at end of conversation. Surfaces dead ends, inefficiencies, missing context. Does not write files — pair with /kiro:steering-custom to persist.