| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /debrief |
| Category | dev-cycle |
| Complexity | moderate |
/debrief โ ์ฌ๊ณ ๋ณต๊ธฐ ๋ฆฌํฌํธ#
ํ๋ง๋๋ก#
์๋น์ค์ ๋ฌธ์ (์ฅ์ ยท์ฌ๊ฐํ ๋ฒ๊ทธ)๊ฐ ํฐ์ง ๋ค, "๋๊ตฌ ํ"์ด ์๋๋ผ "์ ์ผ์ด๋ฌ๊ณ ์ด๋ป๊ฒ ๋ค์ ์ ์๊ธฐ๊ฒ ํ ์ง"๋ฅผ ์ฐจ๋ถํ ์ ๋ฆฌํด ์ฃผ๋ ์ฌํ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ๋นํ๊ธฐ ์ฌ๊ณ ์กฐ์ฌ๊ด์ด ๋ธ๋๋ฐ์ค๋ฅผ ์ด์ด ์์ธ์ ์ฐพ๊ณ ์ฌ๋ฐ ๋ฐฉ์ง์ฑ ์ ์ ๋ ๊ฒ๊ณผ ๊ฐ์์.
๋๊ฐยท์ธ์ ์ฐ๋์#
- ์ด์ ์๋น์ค์ ์ฅ์ ๊ฐ ํฐ์ง ์งํ โ ๊ณ ๊ฐ์๊ฒ ์ํฅ์ด ๊ฐ ์ค์ ์ฌ๊ณ ๊ฐ ๋ฌ์ ๋
- ์ฌ๊ฐํ ๋ฒ๊ทธ๊ฐ ๊ฒ์ ๋จ๊ณ๋ฅผ ๊ทธ๋ฅ ํต๊ณผํด ๋ฐฐํฌ๋ ๊ฒฝ์ฐ โ "์ ์ฐ๋ฆฌ๊ฐ ๋ชป ๊ฑธ๋ ์ง?"๋ฅผ ๋ฐ์ ธ๋ด์ผ ํ ๋
- ํ ํ๊ณ (post-mortem)๊ฐ ํ์ํ ๋ โ ์ฌ๊ณ ๋ฅผ ๊ตํ์ผ๋ก ๋จ๊ธฐ๊ณ ์ถ์ ๋
๊ถ์ฅ: ์ฌ๊ณ ํ 48์๊ฐ ์ด๋ด์ ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค (๊ธฐ์ต์ด ์์ํ ๋).
๋ฌด์์ ํด์ฃผ๋์#
์ฌ๊ณ ํ ๊ฑด์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ถ์ํด docs/debriefs/YYYY-MM-DD-{์ฃผ์ }-debrief.md ๋ผ๋ ๋ฆฌํฌํธ ํ์ผ ํ ๊ฐ๋ก ์ ๋ฆฌํด ์ค๋๋ค. ๋ฆฌํฌํธ ์์๋:
- ์์ฝ๊ณผ ํ์๋ผ์ธ โ ์ธ์ ํฐ์ก๊ณ , ์ธ์ ๋ฐ๊ฒฌํ๊ณ , ์ธ์ ํด๊ฒฐํ๋์ง (์ด ๋ณต๊ตฌ ์๊ฐ ํฌํจ)
- ๊ทผ๋ณธ ์์ธ โ "์?"๋ฅผ ๋ค์ฏ ๋ฒ ํ๊ณ ๋ค์ด(5 Whys) ์ง์ง ์์ธ๊น์ง ์ถ์
- ์ํฅ ๋ฒ์ โ ์ด๋ค ์ฌ์ฉ์ยท์๋น์คยท๋ฐ์ดํฐ๊ฐ ์ํฅ์ ๋ฐ์๋์ง
- ๊ฒ์ ๊ตฌ๋ฉ ๋ถ์ โ ์ฐ๋ฆฌ ํ์ง ๊ฒ์ดํธ(์คํยท๋ถ์ยท๊ตฌํยท์ฝ๋ ๋ฆฌ๋ทฐ) ์ค ์ด๋์ ์ด๊ฑธ ๋์ณค๋์ง
- ๊ฐ์ ์ก์ โ ์ฌ๋ฐ ๋ฐฉ์งยท์กฐ๊ธฐ ํ์งยท๋์ ๊ฐ์ ํญ๋ชฉ (๋ด๋น์ยท๊ธฐํ๊น์ง)
์ถ๊ฐ๋ก, ๊ฒ์ดํธ ๊ฐ์ ์์ด ๋์ค๋ฉด ๊ด๋ จ ํ์ผ์ ๋ฉ๋ชจ(TODO)๋ฅผ ๋จ๊ธฐ๊ณ ํ์ต ์ ๋ฆฌ(/session:wrap)์๋ ์ฐ๋๋ฉ๋๋ค.
์ด๋ป๊ฒ ์ฐ๋์#
# ์ธ์๋ํธ ์ค๋ช
์ผ๋ก ์์
/debrief " ๋ก๊ทธ์ธ ์๋น์ค ์ฅ์ โ ์์
๋ก๊ทธ์ธ ํ ํฐ ๋ง๋ฃ ๋ฏธ์ฒ๋ฆฌ "
# ์ด์ ๋ฒํธ ๊ธฐ๋ฐ
/debrief --issue 456
# ํน์ ์ปค๋ฐ/PR ๊ธฐ๋ฐ
/debrief --pr 789
์ ์
์ค ์ต์ ํ๋๋ ๋ฐ๋์ ๋ฃ์ด์ผ ํฉ๋๋ค(์ฌ๊ณ ์ค๋ช
, ์ด์ ๋ฒํธ, PR ๋ฒํธ).
๋ถ์ ๊น์ด๋ฅผ ์กฐ์ ํ๋ ค๋ฉด --depth quick(๋น ๋ฅด๊ฒ) / standard(๊ธฐ๋ณธ) / deep(๊น๊ฒ)์, ์ ์ฅ ์์น๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด
--output ๊ฒฝ๋ก๋ฅผ ๋ง๋ถ์ด์ธ์.
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
ํฌ๊ฒ ๋ค์ฏ ๋จ๊ณ๋ก ์ฌ๊ณ ๋ฅผ ํํค์น๊ณ ๋ง์ง๋ง์ ๋ฆฌํฌํธ๋ก ๋ฌถ์ต๋๋ค.
- ์ ๋ณด ์์ง โ ์ด์ยทPRยท์ฝ๋ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๋ชจ์ ์ฌ๊ณ ์ ํ์๋ผ์ธ(๋ฐ์โ๊ฐ์งโ๋์โํด๊ฒฐ)๊ณผ ์ด ๋ณต๊ตฌ ์๊ฐ์ ์ ๋ฆฌํฉ๋๋ค.
- ๊ทผ๋ณธ ์์ธ ๋ถ์ โ "์?"๋ฅผ ๋ฐ๋ณตํด ์ง์ง ์์ธ๊น์ง ํ๊ณ ๋ค๊ณ , ์ํฅ๋ฐ์ ์ฌ์ฉ์ยท์ฝ๋ยท๋ฐ์ดํฐ ๋ฒ์๋ฅผ ์ง์ต๋๋ค.
- ๊ฒ์ ๊ตฌ๋ฉ ๋ถ์ โ ์คํยท๋ถ์ยท๊ตฌํยท์ฝ๋ ๋ฆฌ๋ทฐ ๊ฐ ๋จ๊ณ์์ "์ฌ๊ธฐ์ ๋ง์์ด์ผ ํ๋๋ฐ ์ ๋ชป ๋ง์๋"๋ฅผ ๋ฐ์ง๋๋ค.
- ๊ฐ์ ์ก์ ๋์ถ โ ์ฌ๋ฐ ๋ฐฉ์ง, ์กฐ๊ธฐ ํ์ง, ๋์ ๊ฐ์ ์ผ๋ก ๋๋ ๊ตฌ์ฒด์ ์ธ ํ ์ผ์ ์ฐ์ ์์์ ํจ๊ป ์ ๋ฆฌํฉ๋๋ค.
- ๋ฌธ์ํยทํ์ต โ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํฌํธ ํ์ผ๋ก ์ ์ฅํ๊ณ , ํ ํ์ต ์ ๋ฆฌ์ ๊ฒ์ดํธ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
โ๏ธ ์์ธ ์ต์ ยท์คํ ๋ช ์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
Triggers#
- Production ์ธ์๋ํธ ๋ฐ์ ํ
- ์ฌ๊ฐํ ๋ฒ๊ทธ๊ฐ ๊ฒ์ดํธ๋ฅผ ํต๊ณผํ์ฌ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ
- ํ ํ๊ณ ๋๋ post-mortem์ด ํ์ํ ๊ฒฝ์ฐ
Usage#
# ์ธ์๋ํธ ์ค๋ช
์ผ๋ก ์์
/debrief " ๋ก๊ทธ์ธ ์๋น์ค ์ฅ์ โ ์์
๋ก๊ทธ์ธ ํ ํฐ ๋ง๋ฃ ๋ฏธ์ฒ๋ฆฌ "
# ์ด์ ๋ฒํธ ๊ธฐ๋ฐ
/debrief --issue 456
# ํน์ ์ปค๋ฐ/PR ๊ธฐ๋ฐ
/debrief --pr 789Parameters#
| 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โ ํ์ดํ๋ผ์ธ ๊ฒ์ดํธ ์ฐธ์กฐ