本文へ移動
cccskills
無料GitHub で公開

post-mortem-author

Build-an-X workflow that produces a blameless post-mortem from an incident - captures the timeline (chronological event sequence with sources), root cause analysis (what + why, not who), impact (users / revenue / SLO debt), action items (with owners + due dates + measurable success criteria), and "what went well" (intentional). Per Google SRE: "Blameless postmortems are a tenet of SRE culture." Use after every user-visible incident, not just severe ones.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qaスター 13(GitHub 13 + cccskills 0)
連携ツールStripeSentry

実行スコア 未検証

インストール方法を見る

含まれるファイル(13)

  • SKILL.md9.4 KB
  • .tessl-plugin/plugin.json597 B
  • evals/card-outage-director-wants-the-name-in-the-record/criteria.json9.2 KB
  • evals/card-outage-director-wants-the-name-in-the-record/task.md7.7 KB
  • evals/cert-expiry-nobody-wrote-up-until-the-auditor-asked/criteria.json10.5 KB
  • evals/cert-expiry-nobody-wrote-up-until-the-auditor-asked/task.md10.5 KB
  • evals/dropped-webhook-events-while-the-suite-stayed-green/criteria.json9.8 KB
  • evals/dropped-webhook-events-while-the-suite-stayed-green/task.md10.8 KB
  • evals/overnight-auth-blip-the-lead-wants-it-logged-and-closed/criteria.json9.3 KB
  • evals/overnight-auth-blip-the-lead-wants-it-logged-and-closed/task.md7.6 KB
  • evals/quarter-end-rollup-where-everything-says-closed/criteria.json8.8 KB
  • evals/quarter-end-rollup-where-everything-says-closed/task.md11.6 KB
  • references/post-mortem-document-template.md2.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

post-mortem-author

Overview

Per google-sre-postmortem:

"A postmortem is 'a written record of an incident, its impact, the actions taken to mitigate or resolve it, the root cause(s), and the follow-up actions to prevent the incident from recurring.'"

"Blameless postmortems are a tenet of SRE culture." (google-sre-postmortem)

"Writing a postmortem is not punishment - it is a learning opportunity for the entire company." (google-sre-postmortem)

The blameless framing is load-bearing. Per google-sre-postmortem, the document must "focus on identifying the contributing causes of the incident without indicting any individual or team for bad or inappropriate behavior" - assuming "everyone involved in an incident had good intentions and did the right thing with the information they had."

When to use

Per google-sre-postmortem, common triggers include:

"user-visible downtime, data loss, on-call interventions, extended resolution times, and monitoring failures."

Author a post-mortem after every such incident - not just sev-1. Lower-severity incidents accumulate context that prevents the sev-1.

Step 1 - Author the document

Copy the full section skeleton from references/post-mortem-document-template.md and fill every section. The required sections, in order:

  1. Header - status, severity, authors, dates, reviewers.
  2. Summary - 2-3 sentences: what, who, how long, what was done.
  3. Impact - users affected, revenue (deferred vs lost), SLO debt, reputational.
  4. Timeline - chronological events with UTC timestamps and a source per row.
  5. Root cause - what happened in detail, with the system as the subject, never a person.
  6. Contributing factors - every condition that allowed the incident; list all, since incidents rarely have one cause.
  7. What went well - the positives; per google-sre-postmortem, post-mortems should call these out too.
  8. Action items - the load-bearing section (Step 3).
  9. Lessons learned and Postmortem trigger - what is known now, and which trigger criteria the incident met.

The worked example below fills this skeleton for a real SEV-2.

Step 2 - Blameless review

Per google-sre-postmortem: "Postmortems are not punishment."

Reviewers should:

  • Reject blame language. "Bob deployed without testing" → "The pre-deploy testing didn't cover the null-metadata case."
  • Focus on systems, not individuals. "Why did Bob fix this fast?" → "What enabled fast diagnosis? (Sentry stack trace + the team's incident-response training.)"
  • Surface contributing factors openly. Multiple factors usually contribute; document all.

Step 3 - Action item discipline

Action items must have:

  • Owner (one named person; not "the team").
  • Due date (concrete; not "next sprint when we have time").
  • Priority (P0/P1/P2/P3; ties to the action's importance).
  • Success criterion (measurable; "X done" not "we'll think about X").

The action items are the post-mortem's value. Without them, the document is paperwork.

Step 4 - Approval + closure

The post-mortem isn't "done" until:

  1. Reviewers (eng manager, SRE lead, Product) sign off.
  2. Action items are added to the team's tracker (Jira / Linear / GitHub issues).
  3. P1/P2 action items have a target completion before the next release.

The post-mortem is "closed" when all action items ship - typically 2-4 weeks. A 6-month-old open post-mortem is a process failure.

Step 5 - Storage

docs/postmortems/
├── INC-1234-stripe-webhook-2026-05-04.md
├── INC-1235-cache-invalidation-2026-05-12.md
├── INC-summary-2026-Q2.md       ← rollup
└── README.md

Markdown + git. Quarterly rollup identifies patterns:

## Q2 2026 incident summary

**Total incidents:** 12
**SEV-1:** 1
**SEV-2:** 6
**SEV-3:** 5

**Patterns:**
- 4 of 12 (33%) were "test gap" - the failing condition wasn't
  in the test suite. Action: invest in
  test-coverage-targeter
  + property-based testing.
- 3 of 12 (25%) involved canary metrics; 2 of those proceeded
  through canary gate. Action: review thresholds (per AI-2 from
  INC-1234).
- ...

Worked example - INC-1234 Stripe webhook failure (SEV-2)

The skeleton from Step 1, filled for a real incident.

Summary. A v1.4.5 deploy introduced a null-metadata crash in the Stripe webhook handler; ~12,400 customers (4.3% of MAU) hit failed checkout completions for 23 minutes until rollback.

Impact. ~$140,000 in delayed (not lost) orders; 32% of the monthly availability budget burned; 47 support tickets.

Timeline (excerpt).

Time (UTC)EventSource
14:00Deploy of v1.4.5 to canary (5% traffic)CD pipeline log
14:23First Sentry alert: NullPointerException at WebhookHandler:42Sentry
14:30Canary window ends within thresholds; promoted to 100%CD pipeline
14:42PagerDuty SLO burn-rate alert; incident declared SEV-2PagerDuty
14:58Rollback complete; error rate returning to baselineDatadog

Root cause (what, not who). The v1.4.5 handler added a path for Stripe's payment_intent.partially_funded event that called payment.metadata.get("internal_id"); for ~3% of events metadata was null, the exception was uncaught, the handler returned 500, and Stripe stopped retrying, so fulfillment never triggered. The canary stage saw the error rate rise (0.4% vs 0.3% baseline) but stayed under the 1.5x rollback threshold, so prod-canary-validator returned PROCEED with WARNING and the gate was acked.

Contributing factors. (1) test gap - no unit test for the null-metadata case; (2) canary threshold too lenient for a low baseline; (3) staging carries almost no Stripe webhook traffic, so the new event type was never exercised pre-deploy.

Action items.

IDActionOwnerPriorityDueSuccess criterion
AI-1Unit test for partially_funded with null metadataBobP12 daysTest in WebhookHandlerTest.kt fails against the bug, passes after
AI-2Tighten canary error-rate threshold 1.5x -> 1.3xSREP21 sprintcanary-thresholds.yml updated; one normal canary passes
AI-3Staging fixture covering all Stripe event typesBobP21 sprintStaging "events by type" metric shows all types > 0

What went well. Sentry caught the regression at 14:23, well before the PagerDuty page; rollback finished in 7 minutes, inside RTO. Diagnosis came from the Sentry stack trace alone, with no production debugging.

Anti-patterns

Anti-patternWhy it failsFix
Blame languageDefeats the blameless principle; team stops authoring post-mortems honestly.Per Google SRE: focus on contributing causes, not individuals (Step 2).
Action items without owner / due dateNobody acts; same incident recurs.All four fields required (Step 3).
Skipping post-mortems for "small" incidentsLower-severity context that prevents big incidents is missed.Author per google-sre-postmortem trigger criteria (Step 1).
Post-mortem stored in private docsOrg learning capped at the team.Public to org (per Google SRE pattern).
One-shot post-mortem with no follow-up"Closed" but action items stale; recurrence likely.Track action items in tracker (Step 4); post-mortem closed only when all done.
Post-mortem authored 2+ weeks after incidentMemory faded; details lost.Author within 5 business days.

Limitations

  • Honesty depends on culture. A team that fears blame will produce sanitized post-mortems. Leadership must reinforce blamelessness in word and action.
  • Post-mortems don't prevent the next incident. They prevent the same class of incident. Pair with proactive practices (chaos testing, threat modeling).
  • Time investment. A SEV-2 post-mortem typically takes 4-8 hours to author + 2-4 hours of review. Budget accordingly.

References

  • gsp - Google SRE blameless post-mortem definition, triggers, blamelessness principle, learning-opportunity framing.
  • prod-canary-validator - sibling: canary verdict; post-mortems often surface threshold tuning needs.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Builds a CI gate that fails the build on **new** WCAG / a11y violations introduced by a PR while grandfathering pre-existing violations on a per-rule / per-page baseline. Aggregates verdicts from axe-core / pa11y / Lighthouse a11y / WAVE / IBM Equal Access scans. Use when a project has accumulated a11y debt and a strict "zero violations" gate would block every PR - the ratchet pattern lets the team ship while preventing regressions.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

Workflow skill that builds an A/B-test validity checklist from an experiment proposal, walking the canonical design-correctness gates - pre-registered OEC/power/guardrails, randomization unit + SRM check, assignment integrity, telemetry, peeking discipline, novelty/primacy, post-experiment SRM re-check - into a per-experiment checklist + sign-off form. Use when launching, auditing, or governing an experiment. For pitfall mechanics (guardrails, peeking) see experiment-results-interpreter's references; to read an already-valid result use experiment-results-interpreter; for per-SDK harness tests use experiment-sdk-testing - this gates DESIGN, not SDK code.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

The single install-flow skill: the reference contract for the PWA install flow (installability gate fields, `beforeinstallprompt` handshake, per-platform paths - Android WebAPK / iOS Share menu / Firefox no-op - and the `display-mode` post-install signal, in references/install-flow-reference.md) plus the build-an-X workflow that emits the Add-to-Home-Screen suite. Walks the four-stage timeline, emitting one test per gate cell per [web.dev/articles/install-criteria][install-criteria], the deferred-prompt → `prompt()` → `userChoice` chain per [web.dev/articles/customize-install][customize-install], the iOS Safari manual-metadata branch (`apple-touch-icon`) per [web.dev/learn/pwa/installation][learn-pwa], and the post-install `(display-mode: standalone)` MQ assertion. Output: a Playwright spec with per-stage cells plus a coverage matrix. Use when a PWA's manifest, icons, or install handler change, when install conversion drops at an unknown stage, or when triaging a flaky install assertion.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

Build-an-X workflow that uses an LLM to map existing tests to spec sections - given a spec doc + the test suite, the LLM identifies which tests cover which sections, surfaces uncovered sections (gap), and recommends specific tests to add. Output is a coverage matrix per spec ID. Scope is mapping tests that already exist and naming the gaps, not authoring tests for new acceptance criteria. Use when a spec doc and a test suite both exist but nobody can say which requirements are actually covered - before a release sign-off, an audit, or a decision about where to spend the next round of test effort.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

Generates tests from natural-language specs (acceptance criteria, user stories, requirements) using an LLM, with confidence scoring per test case (LLM self-assessment plus heuristics: assertion quality, naming, completeness), batching uncertain cases for human review, and integration with the team's existing test framework. Use when the user asks to generate unit tests from acceptance criteria, convert user stories to test cases, automate test creation from requirements, or augment a spec-driven test suite with AI-generated stubs that are then curated before merge.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

Configures Allure Report (test-runner adapter install, `allure-results` directory wiring, `categories.json` for failure classification, `history-trend.json` retention via the copy-history-between-runs pattern), runs the Allure CLI to convert `allure-results` to a static HTML site, and uploads the report as a CI artifact. Use when the team needs richer test reporting than JUnit XML - step-level attachments, per-test history, retry tracking, and severity / epic / feature labeling across framework-agnostic adapters (pytest, Jest, JUnit, TestNG, NUnit, Mocha). As a rich static HTML report generator, it is the open-source alternative to the sunset ExtentReports (JVM/.NET per-test HTML narrative); for hosted cross-run flakiness analytics rather than a static per-run report use currents-integration.

日本語の概要は準備中です。原文の説明を表示しています。

testland/qa132026年10月20日 更新

testland のスキルをすべて見る

このスキルの問題を報告する