AI/사람의 결정, 계획, 코드, 설계를 구조화된 프레임워크로 도전하는 비판적 리뷰 레이어. Pre-mortem, Inversion, Socratic 질문을 활용하여 블라인드 스팟과 숨겨진 가정을 발견합니다.
AI 생성 결과물과 의사결정에 대한 구조화된 비판적 리뷰를 수행합니다.
AI는 반박하지 않습니다. "그건 나쁜 아이디어야" 또는 "이 서비스가 다운되면 어떻게 되지?"라고 말하지 않습니다. 이 스킬은 사고 자체를 도전합니다 — 코드뿐만 아니라 계획, 아키텍처, 설계 결정 모두.
/architecture → /devils-advocate)/devils-advocate review the auth flow/architecture → 설계 완료 → /devils-advocate → 설계 도전
/api-design → API 설계 → /devils-advocate → API 구멍 찾기
/feature-planner → 계획 수립 → /devils-advocate → 계획 스트레스 테스트
구현 완료 → Two-Stage Review → /devils-advocate → 결정 자체 검증
비판 전에 현재 접근법이 합리적인 이유를 먼저 명확히 진술합니다. Straw man 공격 금지.
레퍼런스 파일에 정의된 프레임워크를 상황에 맞게 적용합니다:
| Framework | 적용 시점 |
|---|---|
| Pre-Mortem | 배포/출시 전 계획 검증 |
| Inversion | 설계 견고성 평가 |
| Socratic Questioning | 가정 탐색, 의사결정 검증 |
| Five Whys (Reverse) | 기술 결정의 근본 동기 추적 |
| Six Thinking Hats | 포괄적 설계 리뷰 |
레퍼런스 로딩: @references/questioning-frameworks.md
11개 엔지니어링 블라인드 스팟 + 12개 AI 특유 약점을 점검합니다.
Engineering Blind Spots: Security, Scalability, Data Lifecycle, Integration Points, Failure Modes, Concurrency, Environment Gaps, Observability, Deployment, Multi-Tenancy, Edge Cases
AI Blind Spots: Happy Path Bias, Scope Acceptance, Confidence Without Correctness, Test Rewriting, Pattern Attraction, Reactive Patching, Context Rot, Library Hallucination, Architectural Inconsistency, XY Problem Blindness, Over-Abstraction, Security as Afterthought
레퍼런스 로딩: @references/blind-spots.md, @references/ai-blind-spots.md
| Verdict | 의미 |
|---|---|
| Ship it | 견고함. 진짜 좋은 작업은 인정 |
| Ship with changes | 아키텍처는 건전하나 특정 수정 필요 |
| Rethink this | 근본적 접근 재고 필요 |
각 concern은 반드시 포함:
## Devil's Advocate Review
### Steel-man
이벤트 드리븐 알림 시스템 접근법은 합리적입니다 — 큐 기반 비동기 처리,
템플릿 렌더링, 멀티채널 전송. 관심사 분리가 잘 되어 있고 비동기에 적합한
선택입니다.
### Concern 1: 전송 보장/재시도 전략 부재
**Severity**: Critical
**Framework**: Pre-mortem
**What I see**: 큐 컨슈머가 알림을 처리하지만 dead-letter queue, 재시도
로직, idempotency key가 없습니다.
**Why it matters**: 사용자가 중요한 알림(비밀번호 재설정, 결제 확인)을
놓칩니다. 더 심각한 건 — 실패 알림이 없어서 문제 발생 자체를 모릅니다.
**What to do**: DLQ + 3회 재시도 + exponential backoff 추가.
notification_id + channel로 idempotency key 구성. DLQ depth > 0 알림.
### Concern 2: 큐 컨슈머 내 템플릿 렌더링
**Severity**: High
**Framework**: Inversion — "규모에서 실패를 보장하려면?"
**What I see**: 템플릿 렌더링이 메시지 디큐 프로세스 안에서 실행됩니다.
**Why it matters**: 하나의 잘못된 템플릿이 전체 알림 파이프라인을 차단합니다.
**What to do**: 인큐 전에 렌더링하거나(fail fast), 렌더링을 try/catch로
격리하여 실패를 DLQ로 라우팅.
### Verdict: Ship with changes
아키텍처는 건전하나 전송 파이프라인에 안전장치가 없습니다.
Concern 1, 2를 배포 전에 수정하세요.
위 프로세스에 따라 제공된 결정/계획/코드/설계를 비판적으로 리뷰하세요.