| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /debrief |
| Category | dev-cycle |
| Complexity | moderate |
/debrief#
Post-incident blameless analysis โ ์ธ์๋ํธ ๋ฐ์ ํ ๊ทผ๋ณธ ์์ธ ๋ถ์, ์ํฅ ๋ฒ์ ํ์ , ๊ฒ์ดํธ ๊ฐ์ ์ ๋์ถ
Triggers#
- Production ์ธ์๋ํธ ๋ฐ์ ํ
- ์ฌ๊ฐํ ๋ฒ๊ทธ๊ฐ ๊ฒ์ดํธ๋ฅผ ํต๊ณผํ์ฌ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ
- ํ ํ๊ณ ๋๋ post-mortem์ด ํ์ํ ๊ฒฝ์ฐ
Usage#
# ์ธ์๋ํธ ์ค๋ช
์ผ๋ก ์์
/debrief " ๋ก๊ทธ์ธ ์๋น์ค ์ฅ์ โ ์์
๋ก๊ทธ์ธ ํ ํฐ ๋ง๋ฃ ๋ฏธ์ฒ๋ฆฌ "
# ์ด์ ๋ฒํธ ๊ธฐ๋ฐ
/debrief --issue 456
# ํน์ ์ปค๋ฐ/PR ๊ธฐ๋ฐ
/debrief --pr 789
Parameters#
| Parameter | Required | Description |
|---|---|---|
description | โ * | ์ธ์๋ํธ ์ค๋ช |
--issue | โ * | ๊ด๋ จ ZenHub ์ด์ ๋ฒํธ |
--pr | โ * | ๊ด๋ จ PR ๋ฒํธ |
*ํ๋ ์ด์ ํ์
Options#
| Option | Default | Description |
|---|---|---|
--depth |
standard |
๋ถ์ ๊น์ด (quick, standard, deep) |
--output | docs/debriefs/ | ์ฐ์ถ๋ฌผ ์ ์ฅ ๊ฒฝ๋ก |
Execution Flow#
Phase 1: Information Gathering#
-
์ธ์๋ํธ ์ปจํ ์คํธ ์์ง
- ์ด์/PR์์ ์ ๋ณด ์ถ์ถ (ZenHub MCP ํ์ฉ)
- ๊ด๋ จ ์ฝ๋ ๋ณ๊ฒฝ ์ด๋ ฅ ์กฐํ (
git log,git diff) - ์ํฅ๋ฐ์ ํ์ผ/๋ชจ๋ ์๋ณ
-
ํ์๋ผ์ธ ๊ตฌ์ฑ
- ๋ฌธ์ ๋ฐ์ ์์
- ๊ฐ์ง ์์ ๋ฐ ๋ฐฉ๋ฒ
- ๋์ ์์ ์์
- ํด๊ฒฐ ์์
- ์ ์ฒด MTTR (Mean Time To Resolve) ์ฐ์
Phase 2: Root Cause Analysis#
-
5 Whys ๋ถ์
- Why 1: ์ง์ ์ ์์ธ
- Why 2: ์ ๊ทธ ์์ธ์ด ๋ฐ์ํ๋๊ฐ
- Why 3-5: ๊ทผ๋ณธ ์์ธ๊น์ง ์ฌ๊ท์ ์ถ์
- ๊ฐ ๋จ๊ณ์์ ์ฆ๊ฑฐ(์ฝ๋, ์ปค๋ฐ, ์ค์ ) ์ฒจ๋ถ
-
Blast Radius ๋ถ์
- ์ํฅ๋ฐ์ ์ฌ์ฉ์/์๋น์ค ๋ฒ์
- ์ํฅ๋ฐ์ ์ฝ๋ ๋ชจ๋ (Grep ๊ธฐ๋ฐ ์์กด์ฑ ์ถ์ )
- ๋ฐ์ดํฐ ์ํฅ (์์ค, ๋ถ์ผ์น ์ฌ๋ถ)
Phase 3: Gate Gap Analysis#
-
๊ฒ์ดํธ์์ ๋์น ๊ฒ ๋ถ์
- Specification Gate: ์ด ์๋๋ฆฌ์ค๊ฐ ์คํ์ ํฌํจ๋์ด ์์๋๊ฐ?
- Analysis Gate: Acceptance Criteria์ ์ด ์ผ์ด์ค๊ฐ ์์๋๊ฐ?
- Implementation Gate: ํ ์คํธ๊ฐ ์ด ์ผ์ด์ค๋ฅผ ์ปค๋ฒํ๋๊ฐ?
- Code Review: ๋ฆฌ๋ทฐ์ด๊ฐ ์ด ํจํด์ ๊ฐ์งํ ์ ์์๋๊ฐ?
-
๊ธฐ์ฌ ์์ธ ์๋ณ
- ์์คํ ์ ์์ธ (์ํคํ ์ฒ, ์ธํ๋ผ)
- ํ๋ก์ธ์ค์ ์์ธ (๋ฆฌ๋ทฐ, ํ ์คํธ)
- ๋๊ตฌ์ ์์ธ (๋ชจ๋ํฐ๋ง, ์๋ฆผ)
Phase 4: Action Items#
-
๊ฐ์ ์กฐ์น ๋์ถ (๊ฐ ํญ๋ชฉ์ ์ฐ์ ์์ ๋ถ์ฌ)
Prevent (์ฌ๋ฐ ๋ฐฉ์ง):
- ์ฝ๋ ๋ณ๊ฒฝ ์ ์ (๊ตฌ์ฒด์ ํ์ผ/๋ผ์ธ)
- ํ ์คํธ ์ถ๊ฐ ์ ์ (๊ตฌ์ฒด์ ์๋๋ฆฌ์ค)
- ๊ฒ์ดํธ ๊ธฐ์ค ๊ฐํ ์ ์
Detect (์กฐ๊ธฐ ํ์ง):
- ๋ชจ๋ํฐ๋ง/์๋ฆผ ์ถ๊ฐ
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ํ๋
- ๋ฆฐํธ ๊ท์น ์ถ๊ฐ
Respond (๋์ ๊ฐ์ ):
- ๋ฐ๋ถ ์ ๋ฐ์ดํธ
- ์์ค์ปฌ๋ ์ด์ ๊ฒฝ๋ก ๊ฐ์
- ๋กค๋ฐฑ ์ ์ฐจ ํ์ธ
Phase 5: Document & Learn#
-
Debrief ๋ฌธ์ ์์ฑ
docs/debriefs/YYYY-MM-DD-{topic}-debrief.md์ ์ฅ
-
ํ์ต ์ฐ๋
/session:wrapํธ์ถํ์ฌ ํ์ต ์ฌํญ ์๋ ์ถ์ถ- ๊ฒ์ดํธ ๊ฐ์ ์์ด ์์ผ๋ฉด ๊ด๋ จ ๊ฒ์ดํธ ํ์ผ์ TODO ์ฝ๋ฉํธ ์ถ๊ฐ
Artifact Structure#
# Debrief: {incident_title}
**Date**: YYYY-MM-DD
**Severity**: Critical | Major | Minor
**MTTR**: Xh Ym
## Summary
{1-2 paragraph incident summary}
## Timeline
| Time | Event |
|------|-------|
| HH:MM | {event} |
## Impact
- **Users affected**: {scope}
- **Services affected**: {list}
- **Data impact**: {description}
## Root Cause (5 Whys)
1. **Why**: {direct cause}
2. **Why**: {underlying cause}
3. **Why**: {systemic cause}
...
## Gate Gap Analysis
| Gate | Should Have Caught? | Why Missed |
|------|---------------------|------------|
| Specification | Yes/No | {reason} |
| Analysis | Yes/No | {reason} |
| Implementation | Yes/No | {reason} |
| Code Review | Yes/No | {reason} |
## Contributing Factors
- {factor 1}
- {factor 2}
## Action Items
### Prevent (์ฌ๋ฐ ๋ฐฉ์ง)
- [ ] {action} โ Owner: {who} โ Due: {when}
### Detect (์กฐ๊ธฐ ํ์ง)
- [ ] {action} โ Owner: {who} โ Due: {when}
### Respond (๋์ ๊ฐ์ )
- [ ] {action} โ Owner: {who} โ Due: {when}
## Lessons Learned
{blameless insights}
## References
- Issue: #{number}
- PR: #{number}
- Related commits: {hashes}
Key Rules#
- Blameless: ๊ฐ์ธ์ด ์๋ ์์คํ /ํ๋ก์ธ์ค์ ์ด์ . "๋๊ฐ"๊ฐ ์๋๋ผ "์"๋ฅผ ์ถ์
- Evidence-based: ๋ชจ๋ ๋ถ์์ ์ฝ๋/์ปค๋ฐ/๋ก๊ทธ ์ฆ๊ฑฐ ์ฒจ๋ถ
- Actionable: Action Items๋ ๊ตฌ์ฒด์ ์ด๊ณ ๋ด๋น์/๊ธฐํ์ด ๋ช ํํด์ผ ํจ
- Gate-aware: ํ์ดํ๋ผ์ธ ๊ฒ์ดํธ ๊ด์ ์์ ๋ถ์ํ์ฌ ์์คํ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ
- Time-sensitive: ์ธ์๋ํธ ํ 48์๊ฐ ์ด๋ด ์ํ ๊ถ์ฅ (BMAD ์ ์ฑ )
Related Commands#
/dev:bugfixโ ๋ฒ๊ทธ ์์ ์ฌ์ดํด/session:wrapโ ์ธ์ ํ์ต ์ถ์ถ/projectโ ํ์ดํ๋ผ์ธ ๊ฒ์ดํธ ์ฐธ์กฐ