quality-postmortem

Analyze escaped defects and test suite health through blameless postmortems. Covers bug pattern analysis, test suite health reviews, 5 Whys root cause analysis, process improvement cycles, and postmortem/retro meeting templates with action item tracking. Use when: "QA retro," "escaped bugs," "postmo

By petrkindlmann · 604 installs

npx skills add petrkindlmann/qa-skills --skill quality-postmortem

Source repository · Upstream listing

<objective Analyze escaped defects, test suite health, and quality process gaps through structured, blameless postmortems. Every postmortem produces 1 3 concrete, tracked action items not vague commitments to "be more careful." The goal is systemic improvement, not individual blame. </objective Quick Route You have... Go to Template One escaped bug to dissect Bug Pattern Analysis Escaped Bug Analysis ( references/templates.md ) 10+ escaped bugs, looking for themes Aggregating Patterns Over Time — A proactive quarterly check (no incident) Test Suite Health Review — A P0/P1 production incident Postmortem Template for Quality Incidents references/templates.md A recurring sprint/monthly review Retro Meeting Template references/templates.md Discovery Questions Check .agents/qa project context.md in the project root first — it carries quality goals, risk areas, and test suite details that anchor any postmortem. Use it and skip anything already answered there. Then clarify: 1. Do you have a regular retro cadence? Per sprint, monthly, or only after incidents? Regular cadence catches slow burn problems. Incident only cadence misses patterns until they explode. 2. What triggered this postmortem? A production incident? A pattern of escaped bugs? A feeling that the test suite is not catching enough? Test suite degradation? The trigger determines the focus. 3. What data is available? Bug tracker with severity and discovery phase? CI history with pass rates? Flaky test reports? Coverage trends? Without data, postmortems devolve into opinion sessions. 4. What happened with previous postmortem action items? Were they completed? Tracked? Forgotten? If past action items are abandoned, the team has learned that postmortems do not matter. Fix the follow through before running another postmortem. 5. Who should participate? Engineers who worked on the affected area. QA who tested (or did not test) it. Product owner if the impact was user facing. Engineering manager if systemic changes are needed. Keep the group to 4 8 people. 6. What are the current test suite health concerns? Rising flakiness? Slow execution? Coverage gaps in critical areas? Stale quarantine? Health reviews are proactive postmortems they prevent incidents instead of reacting to them. Core Principles 1. Blameless Means Systemic Blameless does not mean "no one is accountable." It means the analysis focuses on systems, processes, and tools rather than individual performance. "Why did the system allow this defect to escape?" is a blameless question. "Why did the developer not write a test?" is a blame question that stops the analysis too early. The developer did not write a test because: the test framework was hard to use, the PR checklist did not require it, there was no pairing to transfer knowledge, or time pressure made it feel optional. Those are systemic issues with systemic fixes. 2. Focus on Patterns, Not Incidents A single escaped bug is an anecdote. Three escaped bugs in the same feature area over two months is a pattern. Postmortems should aggregate incidents to find recurring themes: same root cause, same team, same test gap, same phase of the pipeline. Patterns are actionable. Individual incidents are just fire fighting. 3. Every Postmortem = 1 3 Concrete Action Items An action item is concrete when it has: a specific deliverable ("add integration tests for the coupon API"), an owner ("assigned to Alex"), a deadline ("by end of sprint 14"), and a verification method ("PR merged, tests passing in CI"). "Improve testing" is not an action item. "Write 5 integration tests for the payment service edge cases by March 30" is. 4. Track to Completion Action items that are not tracked are not completed. Use the team's existing work tracker (Jira, Linear, GitHub Issues). Tag them ( postmortem action or equivalent). Review completion status at the start of the next postmortem. If items are consistently abandoned, either the items are too large (break them down) or they are not prioritized (make them sprint commitments). 5. Measure Improvement With Two Metrics, Not One After implementing action items, measure whether the problem recurred. If the postmortem identified a gap in payment testing and the action was to add integration tests, track: did another payment bug escape? Without measurement, postmortems are rituals, not tools. Track two metrics together: Defect escape rate (did similar bugs reappear?) Action item closure rate (what fraction of action items shipped within their committed window?) A high closure rate with rising escape rate means the team is doing the work but doing the wrong work. A low closure rate means the postmortems are theater. Modern incident response platforms (incident.io, Rootly, FireHydrant) track action item follow through natively — owner, due date, completion status — so derive both numbers from what's already there before building a dashboard. 6. AI Drafts the Timeline; a Human Owns the Judgment If your team uses AI SRE tooling (Rootly AI SRE, incident.io's AI SRE / auto drafted post mortems), let it draft the incident timeline and propose candidate root causes from logs and traces. Then a named blameless RCA owner — distinct from the incident commander who managed the response — runs the 5 Whys, picks the real root cause, and writes the action items. AI is good at correlation across noisy data; it is bad at deciding what mattered. Treat AI output as a starting deck, not the conclusion. For cheap timeline drafting, Sonnet 4.6 is sufficient; reserve heavier models for ambiguous causation. Bug Pattern Analysis Categorizing Escaped Defects When a bug reaches production, classify it along three dimensions to identify prevention opportunities. The single bug worksheet (Escaped Bug Analysis) lives in references/templates.md . Dimension 1: Root Cause Category Category Description Example Logic error Business logic incorrect or incomplete Discount not applied for edge case currency Integration failure Two components do not communicate correctly API returns different format than frontend expects Data issue Unexpected data shape, null values, encoding User with emoji in name breaks CSV export Race condition Timing dependent behavior Two concurrent checkouts oversell last item Configuration Environment specific settings wrong Feature flag enabled in staging, disabled in prod Regression Previously working behavior broken Refactor removed null check, old bug returns Missing requirement Behavior not specified, gap in product spec No error handling for expired OAuth tokens Performance Functional but too slow under load Search timeout with 100K+ records Dimension 2: Which Test Level Should Have Caught It Level What it catches If it escaped this level Unit Logic errors, edge cases, boundary conditions Tests exist but missing edge case? Or no tests at all? Integration API contracts, data flow, service interactions Integration tests exist? Do they cover error responses? E2E User journey failures, UI state management Is this critical path covered? Was the specific scenario tested? Manual/Exploratory Visual issues, usability problems, unusual workflows Was exploratory testing performed? Was the area in scope? Monitoring Performance degradation, error rate spikes Are alerts configured? Are thresholds correct? Dimension 3: Prevention Opportunity Opportunity Action Example Add test Write a test at the appropriate level Add unit test for currency rounding edge case Improve existing test Existing test was too narrow Extend checkout E2E to include coupon + international currency Add quality gate CI check would have caught it Add schema validation for API responses in CI Improve requirements Spec was ambiguous or incomplete Add acceptance criteria for error states to story template Add monitoring Detect sooner even if not prevented Add alert for error rate 1% on payment endpoint Training/Process Knowledge gap or process gap Run a session on defensive coding for nullable fields Aggregating Patterns Over Time After analyzing 10+ escaped bugs, look for patterns: This aggregation reveals where investment has the highest return: fixing one systemic issue (integration tests for checkout) would have prevented 29% of all escaped bugs. Patterns that recur across multiple quarters belong in the test strategy doc, not just the next sprint's action items — promote them so the strategy reflects where defects actually escape. Test Suite Health Review A proactive postmortem for the test suite itself. Conduct quarterly or when symptoms appear. Flaky Test Trends Execution Time Trend Track current full suite duration, 3 month trend, and the 5 slowest tests. If duration is increasing, check for: tests that can move to nightly, sequential stages that can parallelize, slow test data setup (use API instead of UI), large test files that need splitting for better shard distribution. Coverage Gap Review Track overall coverage (lines/branches), critical paths with insufficient coverage (payments, auth, data export should be 90%+), recently changed code without test updates (cross reference git log since="30 days ago" with the coverage report), and features shipped without E2E coverage. Disabled/Skipped Test Inventory Audit all skipped/disabled tests by age and reason. Tests skipped < 1 week are likely in progress. Tests skipped 1 4 weeks need a ticket and timeline. Tests skipped 1 3 months are overdue fix or delete. Tests skipped 3 months should be deleted they will never be fixed. For each: fix and unskip, delete (obsolete), or move to quarantine with a ticket link. Process Improvement Cycles The Improvement Sprint Dedicate a fixed portion of each sprint (10 15% of capacity) to quality improvement, drawn from postmortem action items and health review findings. Structure: 5 Whys Root Cause Analysis The 5 Whys technique peels back surface symptoms to reveal systemic causes. The key discipline: keep asking "why" until you reach a process, system, or structural cause not an individual's action. Example: Payment bug escaped to production 5 Whys guidelines: Stop when you reach something the team can change (process, tool, structure). Asking "why is the budget limited?" goes too far. The chain may branch one symptom may have multiple contributing causes. Follow the most impactful branch. Verify each "why" with evidence, not assumption. "The developer did not write tests" is that true? Check the PR. Maybe tests existed but were insufficient. If you reach "human error" as a root cause, you have not gone far enough. Humans make errors. The system should make errors difficult or detectable. Proposing Solutions with Effort Estimates For each root cause, propose 1 3 solutions at different effort levels. Example for a recurring flaky test problem: Postmortem & Retro Templates Two heavy, copy paste formats live in references/templates.md : Postmortem Template for Quality Incidents — for P0/P1 production bugs, data loss, security issues, or outages from a code change. Summary, severity/impact, UTC timeline table, root cause, 5 Whys, what tests existed / were missing, detection, immediate/short term/long term action tables, lessons learned. Retro Meeting Template — for recurring sprint/monthly quality retros: a 7 section, 30 60 minute agenda (previous action item review → data review → went well → needs improvement → root cause discussion → new action items → close) plus facilitator notes. Both open by reviewing the previous retro's action items — that closed loop is the acco