/cc-product:review — 전문가 한 명에게 콕 집어 검토받기#
| 항목 | 내용 |
| 실행 명령 | /cc-product:review |
| 분류 | 워크플로우 |
| 난이도 | ●●○ 보통 |
| MCP 서버 | zenhub |
한마디로#
특정 분야 전문가(아키텍트, 기획자, UX 디자이너 등) 한 명을 지목해 그 사람 관점으로만 검토를 받는 명령입니다.
회의 전체를 부르지 않고 "이 부분은 보안 담당자에게만 한번 봐주세요"처럼 딱 필요한 전문가에게만 의견을 청하는 것과 같아요.
누가·언제 쓰나요#
- 전체 검토가 아니라 특정 전문가의 검토만 필요할 때
- 게이트(품질 관문)에서 한번 떨어진 뒤, 고치고 나서 다시 검토받고 싶을 때
- 전체가 아닌 일부만 빠르게 점검하고 싶을 때
무엇을 해주나요#
지목한 전문가(페르소나) 기준으로 검토를 돌려, 통과(APPROVED) 또는 반려(REJECTED) 결과를 보여줍니다.
- 통과하면 무엇이 잘 됐는지 항목별로 정리해 줍니다.
- 반려되면 무엇이 문제인지 + 어떻게 고쳐야 하는지 + 다시 검토받는 명령어까지 알려줍니다.
-
검토 기준은
.claude/personas/(전문가 정의)와 .claude/orchestrators/phase-gates.md(게이트 기준)를 따릅니다.
선택할 수 있는 전문가(페르소나)는 다음과 같습니다.
analyst — 요구사항·범위·수용 기준 검토
product-manager — Epic/Story, 포인트, 라벨 검토
architect — 아키텍처, Pure DI, API 검토
ux-designer — CoUI, 레이아웃, 인터랙션 검토
flutter-developer — BLoC, 위젯, 테스트 검토
backend-developer — 모델, 엔드포인트, DB 검토
scrum-master — 워크플로우, 블로커 검토
어떻게 쓰나요#
# 아키텍트에게 검토받기
/cc-product:review --persona architect " 현재 PR 검토 "
# 기획자(애널리스트)에게 요구사항 검토받기
/cc-product:review --persona analyst " 요구사항 검토 "
# UX 디자이너에게 UI 검토받기
/cc-product:review --persona ux-designer " UI 검토 "
# 피드백 반영 후 다시 검토받기
/cc-product:review --persona architect --retry
# 두 전문가에게 동시에(병렬) 검토받기
/cc-product:review --persona architect,ux-designer " 디자인 검토 "
--persona(필수): 누구에게 검토받을지 지정합니다. 쉼표로 여러 명을 한 번에 부를 수 있어요.
- 검토 대상("현재 PR 검토" 등): 새 검토일 때는 무엇을 볼지 함께 적어 줍니다.
--retry: 이전 피드백을 바탕으로 다시 검토합니다.
--verbose: 검토 결과를 더 자세히 보여줍니다.
안에서 무슨 일이 벌어지나요#
- 전문가 설정 불러오기 — 지목한 페르소나의 검토 기준(체크리스트)을 읽어 옵니다.
- 체크리스트 실행 — 그 기준에 맞춰 항목 하나하나를 점검합니다.
- 결과 집계 — 모든 항목을 통과하면 합격, 하나라도 걸리면 반려로 판정합니다.
- 피드백 생성 — 반려된 경우 문제점과 고쳐야 할 내용을 정리해 알려 줍니다.
- 여러 명일 때는 동시에 — 전문가를 여럿 지정하면 각자 병렬로 검토해 결과를 한꺼번에 돌려줍니다.
- 다시 검토(재검토) —
--retry로 부르면 앞서 지적된 항목을 집중적으로 다시 보고, 통과하면 다음 단계로 넘어갑니다.
⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)
Triggers#
- When only a specific persona review is needed
- When re-reviewing after gate failure
- When partial review is needed
Usage#
Basic Usage#
# Architect review
/cc-product:review --persona architect " current PR review "
# Analyst review
/cc-product:review --persona analyst " requirements review "
# UX Designer review
/cc-product:review --persona ux-designer " UI review "
Re-review Request#
# Re-review after applying feedback
/cc-product:review --persona architect --retry
Multi-persona simultaneous review#
# Architect and UX Designer parallel review
/cc-product:review --persona architect,ux-designer " design review "
Parameters#
| Parameter | Required | Description | Example |
|---|
--persona | ✅ | Persona to review with | architect, analyst |
review target | ⚠️ | Content to review (required for new reviews) | "current PR review" |
Options#
| Option | Default | Description |
|---|
--retry | false | Re-review based on previous feedback |
--verbose | false | Detailed review result output |
Available Personas#
| Persona | Phase | Review Items |
|---|
analyst | Analysis | Requirements, scope, Acceptance Criteria |
product-manager | Planning | Epic/Story, Point, labels |
architect | Solutioning | Architecture, Pure DI, API |
ux-designer | Solutioning | CoUI, layout, interaction |
flutter-developer | Implementation | BLoC, Widget, tests |
backend-developer | Implementation | Model, Endpoint, DB |
scrum-master | Implementation | Workflow, blockers |
Review Execution Logic#
Single Persona Review#
async function runPersonaReview(
persona: PersonaType,
input: ReviewInput,
options: ReviewOptions
): Promise < ReviewResult > {
// Load persona configuration
const personaConfig = loadPersona(persona);
// Execute checklist
const checks = await runChecklist(personaConfig.checks, input);
// Aggregate results
const pass = checks.every(c = > c.status === " pass " );
return {
persona,
pass,
checks,
feedback: pass ? undefined : generateFeedback(checks),
};
}
Multi-Persona Parallel Review#
async function runParallelReviews(
personas: PersonaType[],
input: ReviewInput
): Promise < ReviewResult[] > {
return Promise.all(
personas.map(persona = > runPersonaReview(persona, input, {}))
);
}
Review Passed#
╔════════════════════════════════════════════════════════════════╗
║ 🏗️ Architect Review: APPROVED ║
╠════════════════════════════════════════════════════════════════╣
║ ║
║ ✅ Clean Architecture: PASS ║
║ - Layer separation correct ║
║ - BLoC → UseCase → Repository flow normal ║
║ ║
║ ✅ Dependency wiring: PASS ║
║ - Pure DI pattern compliant ║
║ - BlocProvider direct creation verified ║
║ ║
║ ✅ API design: N/A (No backend changes) ║
║ ║
║ ✅ Security: PASS ║
║ ║
╚════════════════════════════════════════════════════════════════╝
Review Rejected#
╔════════════════════════════════════════════════════════════════╗
║ 🏗️ Architect Review: REJECTED ║
╠════════════════════════════════════════════════════════════════╣
║ ║
║ ✅ Clean Architecture: PASS ║
║ ║
║ ❌ Dependency wiring: FAIL ║
║ - getIt < Bloc > () usage found - Pure DI pattern violation ║
║ ║
║ Required fixes: ║
║ 1. Change to direct creation in BlocProvider: ║
║ create: (_) = > AuthorBloc() ║
║ ║
║ Re-review command: ║
║ /cc-product:review --persona architect --retry ║
║ ║
╚════════════════════════════════════════════════════════════════╝
Re-review Flow#
┌─────────────────────────────────────────────────────────────────┐
│ Re-review Flow │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Initial review │
│ /cc-product:review --persona architect " review target " │
│ │
│ 2. On review failure │
│ → Check feedback │
│ → Perform corrections │
│ │
│ 3. Request re-review │
│ /cc-product:review --persona architect --retry │
│ │
│ 4. Execute re-review │
│ → Focus review on previous feedback items │
│ → Additional feedback if new issues found │
│ │
│ 5. On pass, proceed to next step │
│ │
└─────────────────────────────────────────────────────────────────┘
/cc-product:bmad - Full BMAD workflow/cc-product:bmad-status - Status check/cc-product:gate - Gate verification
.claude/personas/ - Persona definitions.claude/orchestrators/phase-gates.md - Gate criteria