---
name: debrief
user-invocable: true
description: Produces a structured post-incident analysis — timeline, root cause, and actionable follow-ups — while context is fresh.
when_to_use: Use when user says "debrief", "post-mortem", "incident review", or "root cause analysis".
argument-hint: incident description, PR/commit refs, or error context
effort: high
compatibility: Designed for Claude Code (or similar products with agent support)
---
# Post-incident debrief
Produce a structured, blameless debrief document after an incident, failed release, or significant bug. Capture what happened, why, and what to change — while the context is still fresh.
**Use this when** a production incident, failed release, flaky deploy, or significant bug warrants more than just a fix — when the team needs to understand *why* it happened and prevent recurrence.
## Incident Context
$ARGUMENTS
**If the incident context above is empty, ask the user**: "What incident would you like to debrief? Describe what happened, link to relevant PRs/commits, or paste error logs."
DO NOT proceed until you have a description from the user.
## Execution Flow
### 1. Gather initial information
Use the **AskUserQuestion tool** to fill in gaps one question at a time. Adapt based on what the user already provided — skip questions whose answers are already clear from the incident context.
**Key questions to resolve:**
| Topic | Example Questions |
|-------|-------------------|
| What happened | What was the user-visible impact? What broke? |
| When | When did it start? When was it detected? When was it resolved? |
| Where | What platform, environment, or service? (e.g., prod vs staging, iOS vs Android, specific API) |
| Severity | How many users/systems were affected? Was data lost? |
| Detection | How was it discovered? Alert, user report, or manual observation? |
| Resolution | What was the fix? Is it deployed? Is it a temporary workaround? |
| References | Relevant PRs, commits, CI runs, error logs, or monitoring links? |
**Exit condition:** Continue until you have enough context to reconstruct a timeline, OR the user says "that's all I have" or "proceed."
The skill must work with partial information. Not every debrief has full CI logs or a complete timeline. Note gaps explicitly in the document rather than blocking on them.
### 2. Gather evidence from the codebase
Based on the incident context, automatically collect evidence. Run these in parallel where possible:
Run these in parallel:
- **Git history**: `git log` on affected files (last 2 weeks or user-specified range), `git log --all --oneline` for related commits, `gh pr view` for referenced PRs
- **CI/CD evidence**: `gh run list` for recent failures, `gh run view ` for referenced runs. Skip if no CI context — do not block on missing data.
- **Affected file analysis**: Check test coverage (Glob for test files), recent change frequency (`git log --oneline `). Note files lacking tests or with high churn.
### 3. Analyze root cause
Synthesize the evidence to identify the **root cause** (specific change, gap, or condition — trace to commits or code paths) and **contributing factors** (missing tests, no monitoring, unclear ownership, insufficient review).
**Blameless framing:** Focus on systems and processes, not individuals. Ask "what made this possible?" not "who caused this?"
### 4. Draft action items
Generate concrete, assignable follow-ups. Each must be specific (not "improve testing"), linked to code where possible, and categorized:
| Type | Purpose | Examples |
|------|---------|----------|
| **Prevent** | Would have stopped this incident | Add validation, add test |
| **Detect** | Would have caught it sooner | Add monitoring, add CI check |
| **Respond** | Would have made recovery faster | Add runbook, add feature flag |
Action items are recorded in the document only — they become separate tickets.
### 5. Set up workspace
Before writing the debrief file, ensure the session is not on the base branch:
- Run `git rev-parse --abbrev-ref HEAD`. If the current branch is a base branch (`main`, `master`, or `develop`), use **AskUserQuestion** to offer creating a feature branch — `git checkout -b /`, name under 60 characters — before writing. If already on a feature branch, continue without prompting.
### 6. Write the debrief document
Write the document to `docs/debriefs/YYYY-MM-DD--debrief.md`.
Ensure `docs/debriefs/` directory exists before writing.
**Document structure:**
Use the [debrief template](references/template.md) as the document structure. Adapt it to fit the available information — omit sections with no relevant data rather than filling them with "N/A." Add sections if the incident warrants it (e.g., a "Customer Communication" section for user-facing incidents).
### 7. Handoff
Use the **AskUserQuestion tool** to present next steps:
**Question**: "Debrief complete! What would you like to do next?"
**Options:**
1. **Review and refine**: improve the document using structured review
2. **Generate issue previews**: format action items as ready-to-copy GitHub issue drafts
3. **Done**: debrief complete
**If the user selects "Review and refine"** → apply the @refine-approach skill to the document. When refinement is complete, present these options again (without the refine option).
**If the user selects "Generate issue previews"** → read the action items from the written debrief document, then:
1. **Check for issue templates**: look for `.github/ISSUE_TEMPLATE/` in the project root. Read every `.yaml` or `.yml` file found there (skip `config.yml`).
2. **If templates exist**: render one preview block per action item using the most appropriate template. Map each item to a template based on its content (e.g., a missing test or validation gap → bug report; a new monitoring check → feature request; a dependency update or runbook → chore). Populate every required field defined in the template. Include a `Template:` line naming the chosen template file.
3. **If no templates exist**: fall back to the generic format:
```text
---
Title:
Label: prevent | detect | respond
Body:
## Context
Debrief: docs/debriefs/YYYY-MM-DD--debrief.md
Root cause:
## What happened
## What to do
---
```
Render all previews in a single fenced block so the user can copy them. Do not call `gh`, `glab`, or any external CLI — output is display only.
## Output Summary
When complete, display:
```md
Debrief complete!
Document: docs/debriefs/YYYY-MM-DD--debrief.md
Severity:
Root cause: [one-line summary]
Action items: prevent, detect, respond
```
## Key Principles
- **Blameless** — Focus on systems and processes, never individuals
- **Evidence-based** — Link findings to commits, PRs, code paths, and logs
- **Actionable** — Every action item is specific and assignable
- **Honest about gaps** — Mark unknowns explicitly rather than guessing
- **Tech-agnostic** — No language or framework assumptions in the skill itself
## Important
**DO NOT make code changes.** This skill produces a document only. Action items become separate tickets.