# taste-skill PRD Agent Meeting 합의 기록

> 일시: 2026-04-11
> 대상 PRD: `/home/jay/workspace/memory/specs/prd-taste-skill-integration.md`
> 참석자: 6명 페르소나
> 총 사이클: 2 (Cycle 1: 초기 검토, Cycle 2: 미합의 항목 재논의)
> 결과: **전원합의 달성**

---

## 참석 페르소나

1. **디자인 시스템 아키텍트** — Anti-Slop 패턴, 3-Dial, 타이포/색상 체계
2. **개발팀장 (Opus 승격)** — 코딩 생산성 영향, 스킬 로딩 성능, 팀원 봇 실행력
3. **프론트엔드 전문가** — UI 감사 현실성, 모션/레이아웃 적합성
4. **품질 엔지니어** — QC 체계 통합, output-skill/QC-RULES 정합성
5. **프로덕트 매니저** — CEO 관점, 보험/금융 도메인 적합성
6. **레드팀 (비판자)** — 오버엔지니어링, 규칙 과다, 실제 효과 의문

---

## Cycle 1: 초기 검토 (12개 Feature 전수 검토)

### Feature별 초기 판정

| Feature | 디자인아키텍트 | 개발팀장 | 프론트엔드 | 품질엔지니어 | PM | 레드팀 | 합의? |
|---------|------------|---------|----------|-----------|----|----|------|
| F1 Anti-Slop 47 | 수정 필요 | 수정 필요 | 수정 필요 | - | - | 수정 필요 | X |
| F2 AI 게으름 방지 | - | 수정 필요 | - | 수정 필요 | 수정 필요 | **반대** | X |
| F3 3-Dial | 수정 필요 | 수정 필요 | 동의(보완) | - | - | 수정 필요 | X |
| F4 완전 출력 | - | 동의 | - | 수정 필요 | 수정 필요 | 동의(조건부) | X |
| F5 UI 감사 90 | 수정 필요 | 수정 필요 | 수정 필요 | 수정 필요 | 수정 필요 | **반대** | X |
| F6 Lazy-load | - | 수정 필요 | - | 수정 필요 | 수정 필요 | 수정 필요 | O(방향) |
| F7 타이포그래피 | 수정 필요 | 수정 필요 | 수정 필요 | - | - | 수정 필요 | O(방향) |
| F8 Variance Engine | **반대** | **반대** | **반대** | - | - | **반대** | **O** |
| F9 Pre-Flight 10 | - | 수정 필요 | - | 수정 필요 | 수정 필요 | 수정 필요 | O(방향) |
| F10 색상 보정 | 수정 필요 | 수정 필요 | - | - | - | 수정 필요 | O(방향) |
| F11 Spring Physics | 수정 필요 | **반대** | 수정 필요 | - | - | **반대** | X |
| F12 콘텐츠 Anti-Slop | - | 수정 필요 | - | - | - | 수정 필요 | O(방향) |

### Cycle 1 합의 사항 (8건 잠금)

**합의 1: F8 Variance Engine → Insurance Layout Template System으로 전면 재설계**
- 근거: 보험 도메인에서 "매번 다른 스타일"은 브랜드 신뢰를 훼손. "Ethereal Glass"는 F1의 "no glassmorphism"과 자기모순. 9가지 CSS 변형 유지보수 비용 과다.
- 대안: 페이지 유형별 정해진 레이아웃 패턴 선택 시스템
  - Landing/Marketing: Editorial Split
  - Product Page: Structured Grid
  - Comparison Page: Data-First Table Layout
  - Application Form: Single-column Progressive Disclosure
  - Knowledge Base: Editorial Typography-First

**합의 2: F12 콘텐츠 Anti-Slop → F1과 통합**
- 근거: F1과 F12의 경계 불명확, 중복 규칙 발생 위험. 통합 관리가 효율적.
- 결정: ANTI-SLOP-RULES.md에 "콘텐츠" 섹션으로 포함

**합의 3: "$200 tip" 심리적 프롬프트 제거**
- 근거: GPT 모델 연구이며 Claude 전이 증거 없음(레드팀). 금융감독원 감사 시 "AI에 팁 약속" 내용이 시스템 신뢰성 의문 유발(PM). cargo-culting 우려(레드팀).
- 대안: 도메인 맥락 기반 프롬프트 → "이 시스템은 보험 핵심 인프라입니다. 불완전한 코드 생성은 규제 위반으로 이어집니다."

**합의 4: 로드맵 4일 → 6일로 확대**
- 근거: Phase 2의 dispatch.py/team_prompts.py 수정은 Python 로직 변경 포함(품질 엔지니어). Phase 3의 90 체크포인트 구현 1일은 비현실적(전원). Phase 4 테스트 1일 부족(전원).
- 결정: 테스트를 각 Phase에 분산. Phase별 Definition of Done은 qc_verify.py 통과.

**합의 5: "프롬프트/규칙 파일 수정 중심" 표현 정정**
- 수정: "프롬프트·규칙·검증 코드 통합 수정"
- 이유: qc_verify.py, team_prompts.py, dispatch.py 수정은 실질적 소프트웨어 엔지니어링 작업. 코드 변경 범위를 과소평가하면 일정 리스크 증가.

**합의 6: prefers-reduced-motion 지원 필수**
- 근거: 보험 고객 중 전정기관 장애/광과민성 위험군 존재. 웹 접근성 법규 위반 가능성. WCAG 2.3.3 준수 필수.
- 적용: 모든 모션 규칙에 `@media (prefers-reduced-motion: reduce)` 대응 필수

**합의 7: ANTI-SLOP-RULES.md를 QC-RULES.md와 별도 파일로 신설**
- 근거: QC-RULES는 "검증(verification)" 체계. Anti-Slop은 "행동 규범(behavioral norm)". 레이어가 다름.
- 조건: QC-RULES.md에 참조 1줄 추가 + qc_verify.py에 `completeness_check` verifier 신규 추가

**합의 8: F9 Pre-Flight 10항목 분리 배치**
- verification-before-completion (6개): useEffect cleanup, empty/loading/error states, touch targets 44px, z-index cap 50, min-h-[100dvh], global state usage
- UI 감사 체크리스트 (4개): card overuse, animation isolation, mobile layout collapse, semantic color tokens

### Cycle 1 미합의 사항 (4건 → Cycle 2)

1. **F1 패턴 수**: 레드팀 15개 vs 디자인 아키텍트 47+보험특화 vs 개발팀장 25개
2. **F2 절단 금지 패턴**: 레드팀 전면 반대 vs 나머지 부분 유지
3. **F3 다이얼 vs 프로파일**: 레드팀 프로파일만 vs 디자인 아키텍트 다이얼 유지
4. **F11 모션 표준**: 레드팀·개발팀장 반대 vs 디자인 아키텍트 조건부 찬성

---

## Cycle 2: 미합의 항목 재논의

### 논점 1: F1 Anti-Slop 패턴 수와 구조

**쟁점**: 47개 전부 시스템 프롬프트에 넣으면 토큰 비용 폭증(레드팀). 15개로는 커버리지 부족(디자인 아키텍트).

**중재안 (개발팀장 제시)**:
- **Tier A — 핵심 25개 (시스템 프롬프트 로드)**: 기계 검증 가능한 패턴. font-family, 색상값, Lorem Ipsum, h-screen 등 코드에서 직접 탐지 가능.
- **Tier B — 확장 22개 (참조 파일)**: 리뷰어 판단 필요한 패턴. "과도한 대칭", "AI 클리셰" 등 주관적 판단 필요.
- **Tier C — 보험특화 신규 (Compliance/Trust 카테고리)**: 금융 도메인 전용 6개 추가.
  - Financial_Jargon_Without_Tooltip (보험 전문 용어 툴팁 없이 단독 노출 금지)
  - Trust_Signal_Absence (라이선스/등록 정보 없는 CTA 금지)
  - Fake_Urgency_Countdown (보험 도메인 countdown timer 금지)
  - Ambiguous_CTA_In_Financial_Context (모호한 CTA 금지)
  - Coverage_Detail_Collapse_Abuse (핵심 보장 내용 accordion 숨김 금지)
  - Synthetic_Social_Proof (검증 불가 사회적 증거 금지)

**투표 결과**:
- 디자인 아키텍트: 동의 (보험특화 카테고리 포함되어 만족)
- 개발팀장: 동의
- 프론트엔드: 동의 (기계 검증/리뷰어 이분 구조 채택)
- 품질 엔지니어: 동의 (completeness_check verifier에 Tier A 패턴 반영)
- PM: 동의 (감사 대응 가능한 구조)
- 레드팀: **동의** (15→25로 양보하되 시스템 프롬프트 로드는 25개만)

**→ 전원합의. 잠금.**

### 논점 2: F2 AI 게으름 방지 구조

**쟁점**: 레드팀은 F2 전체 반대. 나머지는 절단 금지 패턴(Part A)은 가치 있다고 판단.

**중재안**:
- **Part A 유지**: 코드 절단 금지 9패턴 + 산문 절단 금지 7패턴 → ANTI-SLOP-RULES.md Section B에 포함
- **Part B 제거**: "$200 tip", "Take a deep breath" 류 심리적 프롬프트 전면 삭제
- **Part C 대체**: 도메인 맥락 기반 프롬프트로 교체 → "이 코드는 보험 핵심 인프라에 배포됩니다. 불완전한 출력은 컴플라이언스 위반입니다."
- **Part D 유지**: [PAUSED — X of Y complete] 마커 + completeness_check verifier 연동

**투표 결과**: 전원 동의 (레드팀: "과학적 근거 없는 트릭 제거에 동의. 절단 금지 패턴은 실질적 가치 인정")

**→ 전원합의. 잠금.**

### 논점 3: F3 다이얼 vs 프로파일

**쟁점**: 레드팀은 다이얼 27조합 검증 불가, 프로파일 3-4개만 원함. 디자인 아키텍트는 다이얼의 정밀 제어 가치 주장.

**중재안 (개발팀장 제시)**:
- **다이얼 시스템 유지** (메타 프레임워크로서)
- **보험 도메인 프로파일 4종 사전 정의** (팀원 봇이 실제 사용하는 단위):
  - `COMPLIANCE`: V=3, M=2, D=7 — 약관, 규정 고지, 공시 영역
  - `TRUST_MODERN`: V=5, M=4, D=5 — 주요 상품 페이지 (InsuWiki 기본값)
  - `PREMIUM`: V=6, M=4, D=4 — 프리미엄 서비스 (InsuRo 기본값, V=7→6 하향)
  - `MARKETING`: V=7, M=5, D=4 — 마케팅 랜딩 (보험 도메인 최대치)
- **VARIANCE 상한 7** (보험 도메인 하드 리밋, 8-10 잠금)
- **CSS 매핑 명세 필수 추가**: 각 다이얼 값에 대응하는 구체적 Tailwind/CSS 규칙
- InsuRo 기본값: V=7→6, M=6→4로 하향 조정

**투표 결과**:
- 레드팀: 동의 (프로파일이 실제 사용 단위. 다이얼은 프로파일의 근거로만 존재)
- 디자인 아키텍트: 동의 (VARIANCE 상한 7 포함, InsuRo 조정 수용)
- 프론트엔드: 동의 (CSS 매핑 명세 포함)
- 전원 동의

**→ 전원합의. 잠금.**

### 논점 4: F11 모션 표준

**쟁점**: 레드팀·개발팀장은 spring physics가 보험에 부적합하다고 반대. 디자인 아키텍트는 조건부 찬성.

**중재안**:
- **"Spring Physics 표준" → "모션 가이드라인"으로 격하**
- 핵심 3원칙만 유지:
  1. `prefers-reduced-motion` 필수 대응
  2. `transform`/`opacity`만 애니메이션 (하드웨어 가속)
  3. 전환 시간 300ms 이하
- **ease-in-out 허용** (단순 색상/opacity 전환에서)
- **linear 허용** (프로그레스바, 로딩 인디케이터)
- **spring physics 선택적** (MOTION ≥ 7인 마케팅 랜딩에서만)
- stiffness/damping 세부 파라미터 삭제 (과도한 규정)

**투표 결과**:
- 레드팀: 동의 (spring physics 강제 삭제에 만족)
- 디자인 아키텍트: 동의 (ease-in-out 허용, transform/opacity 원칙 유지)
- 프론트엔드: 동의 (prefers-reduced-motion 포함)
- 전원 동의

**→ 전원합의. 잠금.**

---

## 추가 합의 사항 (Cycle 1-2 통합)

### F4 완전 출력 강제 — 용어 수정
- "간결성 최적화 금지, 완전성 최적화" → "출력 절단 금지. 코드 간결성 원칙과 별개."
- DIRECT-WORKFLOW에 명확히 분리:
  - 금지: 출력 절단(anti-truncation) — "나머지는 동일합니다"로 코드 생략
  - 허용: 코드 간결성(code conciseness) — 불필요한 보일러플레이트 지양

### F5 UI 감사 90 체크포인트 — Tiered 구조
- **Critical Must (20개)**: 매 PR 감사 필수. qc_verify.py `ui_audit_check` verifier로 자동화.
- **Standard Should (30개)**: 주간 감사. PR 템플릿 체크리스트.
- **Excellence Could (20개)**: 분기 감사.
- 보험 특화 신규: Financial Compliance 카테고리 (접근성, 금융 규정 UI, 법적 고지 가독성)
- 기존 uiux-upgrade과의 관계: 대체가 아닌 상위 호환(supersede). uiux는 "빠른 리프레시", 90-CP는 "심층 감사".

### F6 Lazy-load — 분류 기준 명확화
- Tier 1 즉시 로드: 호출 빈도 상위 20% + 기본 워크플로우 필수
- Tier 2 조건부 로드: 특정 도메인/작업 타입 전용 + 트리거 정의 가능
- Tier 3 명시적 호출: 월 1회 미만 사용 + 충돌 위험
- 35% 절감 수치는 fireauto F6 적용 후 재측정 필요
- 스킬 로드 실패 시 fallback 메커니즘 필수

### F7 타이포그래피 — 화이트리스트 전환
- 금지 목록 → 승인 폰트 화이트리스트로 전환:
  - 한국어: Pretendard (필수), 폴백: Apple SD Gothic Neo, sans-serif
  - Display: Geist (InsuWiki), Outfit (InsuRo)
  - Mono: Geist Mono, JetBrains Mono
- Inter/Roboto: Primary 사용 금지, Fallback 체인에서 허용
- Cabinet Grotesk/Satoshi: self-hosting 전략 없이는 사용 금지 (Fontshare SLA 미보장)
- 추가 명세: 한글/영문 혼용 시 line-height 1.7+, tabular-nums 필수, font-display: swap

### F10 색상 보정 — 검증 방식 전환
- "보정"이 아닌 "검증"으로 재정의
- 브랜드 색상 팔레트 기준 WCAG 4.5:1 대비율 확인
- 보험 색상 심리학 가이드 추가: 파란색 계열(신뢰) 권장, 빨간색 남용 금지
- AI의 임의 색상 변경 금지, 문제 발견 시 인간 검토자 플래그

### 로드맵 재구성 (6일)
- **Phase 1 (1.5일)**: ANTI-SLOP-RULES.md + DESIGN-DIAL.md 작성
- **Phase 2 (1.5일)**: QC-RULES 참조 추가 + DIRECT-WORKFLOW 개정 + dispatch.py 수정 + Phase 2 테스트
- **Phase 3 (2일)**: uiux-upgrade Critical 20개 자동화 + verification-before-completion 6항목 추가 + design.md 폰트 가이드 + Phase 3 테스트
- **Phase 4 (1일)**: Lazy-load 분류 + 통합 테스트 (베이스라인 비교)

### 신규 필수 사항 (PRD에 추가)

1. **롤백 계획**: 각 Feature별 이전 상태 복원 절차. 품질 저하 트리거 정의.
2. **베이스라인 측정**: 배포 전 20개 기준 태스크로 현재 출력 품질 5점 척도 평가. 배포 후 동일 태스크 재평가.
3. **토큰 예산**: 추가 프롬프트 토큰 상한 2,000 토큰. 규칙 최적화로 예산 내 관리.
4. **fireauto 지연 대비**: fireauto와 독립적으로 동작 가능한 Feature(F1, F3, F4, F7, F12) 먼저 진행하는 독립 트랙 분리.

---

## 최종 전원합의 선언

### PRD 수정 내역 총 17건

| # | 수정 항목 | 수정 내용 | 근거 |
|---|---------|---------|------|
| 1 | F1 구조 | 47개 → Tiered(25핵심/22확장/6보험특화) | 토큰 예산 + 도메인 적합성 |
| 2 | F1 카테고리 | Compliance/Trust 신규 카테고리 추가 | 보험 도메인 필수 |
| 3 | F2 심리적 프롬프트 | 제거. 도메인 맥락 프롬프트로 대체 | 과학적 근거 부족 + 감사 리스크 |
| 4 | F2 배치 | ANTI-SLOP-RULES.md Section B (QC-RULES와 별도) | 체계 분리 |
| 5 | F3 프로파일 | 보험 도메인 프로파일 4종 사전 정의 + CSS 매핑 | 팀원 봇 실행력 |
| 6 | F3 VARIANCE | 상한 7 (8-10 잠금) | 보험 브랜드 신뢰 |
| 7 | F3 InsuRo | V=7→6, M=6→4 | 보험 서비스 진지함 |
| 8 | F4 용어 | "간결성 최적화 금지" → "출력 절단 금지" | 기존 원칙과 충돌 방지 |
| 9 | F5 구조 | 90개 → Tiered(20 Critical/30 Standard/20 Excellence) | 현실성 + 도메인 적합 |
| 10 | F6 기준 | 3등급 분류 기준 명확화 + fallback 메커니즘 | 기술 구현 명확성 |
| 11 | F7 방식 | 금지 목록 → 화이트리스트 + 폴백 허용 + 혼용 가이드 | 운영 안정성 |
| 12 | F8 전면 재설계 | Variance Engine → Insurance Layout Template System | 브랜드 일관성 |
| 13 | F9 분리 | 6개(verification) + 4개(UI 감사) | 역할 명확화 |
| 14 | F10 방식 | "보정" → "검증" + 브랜드 보호 | 브랜드 충돌 방지 |
| 15 | F11 격하 | "Spring Physics 표준" → "모션 가이드라인" | 도메인 적합성 |
| 16 | F12 통합 | F1에 흡수 | 중복 제거 |
| 17 | 로드맵 | 4일→6일, 테스트 분산, 표현 정정 | 현실성 |

### 신규 추가 4건

| # | 추가 항목 | 내용 |
|---|---------|------|
| 18 | 롤백 계획 | Feature별 복원 절차 + 품질 저하 트리거 |
| 19 | 베이스라인 측정 | 20개 기준 태스크 사전/사후 평가 |
| 20 | 토큰 예산 | 추가 프롬프트 2,000 토큰 상한 |
| 21 | fireauto 독립 트랙 | 독립 Feature 선행 진행 플랜 |

### 전원합의 서명

- [x] 디자인 시스템 아키텍트 — 동의
- [x] 개발팀장 (Opus 승격) — 동의
- [x] 프론트엔드 전문가 — 동의
- [x] 품질 엔지니어 — 동의
- [x] 프로덕트 매니저 — 동의
- [x] 레드팀 (비판자) — 동의

**2026-04-11 전원합의 달성. PRD 수정본 반영 완료.**
