PO Translator — 기획자 요구사항 번역기

마지막 업데이트 2026-07-22

기획자가 작성한 요구사항을 PPI 프로젝트 컨텍스트(관련 파일·기존 패턴·가드 조건)가 담긴 구현 가능한 개발 프롬프트로 자동 변환하는 Claude Code 스킬. AI가 쓴 코드의 예외처리 부족 문제를 프롬프트 단계에서 예방한다.

⚡ 한 줄 요약

기획자는 요구사항만 작성 → 번역기가 관련 파일·패턴·가드 조건을 자동 주입 → AI가 프로젝트에 맞는 코드 생성.

기획자가 모르는 암묵적 제약(쿨다운, cleanup, 소켓 서버 수정 등)을 번역 단계에서 표면화한다.

1. 배경 — 왜 만들었나

기획자가 AI를 활용해 PR을 올리는 케이스가 증가하면서 두 가지 문제가 반복됐다.

문제 1 — 예외처리 부족

기획자는 happy path만 기술한다. AI도 요청에 없으면 구현하지 않는다.

예: 아동 알림 프리셋 — 발송 후 15초간 표시되는 알림인데, 그 사이에 다른 알림을 계속 보낼 수 있는 쿨다운 부재 버그 발생.

문제 2 — 프로젝트 컨텍스트 부재

AI는 기존 훅/패턴을 모르고 새로 만든다. 소켓 이벤트를 상수 없이 문자열로 하드코딩하거나, 서버 핸들러를 빠뜨리거나, 타이머 cleanup을 누락한다.

해결 — 중간 번역 레이어

기획자 요구사항 → 번역기 → 컨텍스트가 풍부한 개발 프롬프트 → AI 구현.

번역기가 코드베이스를 실제로 탐색해서 관련 파일·기존 패턴·가드 조건을 자동으로 주입한다.

2. 전체 흐름

🙋 기획자
요구사항 작성
🔄 PO Translator
코드베이스 탐색
컨텍스트 주입
⚠️ 기획자 확인
엣지케이스 답변
🤖 AI 구현
enriched 프롬프트
👨‍💻 개발자 리뷰
체크리스트 확인
번역기는 프롬프트 생성까지만 담당한다. 실행(코드 생성·PR 작성)은 항상 사람이 트리거한다. 번역 결과를 기획자가 개발자에게 공유해 "이 방향 맞아요?" 확인 후 진행하는 것을 권장한다.

3. 사용법

스킬 실행 방법

Claude Code에서 아래와 같이 호출한다.

/po-translator [요구사항 텍스트]

예시 입력 (기획자 작성)

프리셋 버튼 누르면 핑퐁이가 해당 문구를 말하게 해줘. 15초간 표시되고 사라지는 알림이야.

번역기가 자동으로 추가하는 것

추가 항목내용
관련 파일코드베이스를 직접 grep해서 수정해야 할 파일 목록과 역할 설명 주입
기존 패턴유사 기능의 실제 코드 스니펫 — "이 패턴을 따라 구현할 것" 형태로 제공
컨벤션 규칙소켓 상수 위치, 파일 구조, 타이머 관리 방식 등 PPI 프로젝트 규칙
가드 조건요구사항 유형별로 자동 감지된 중복 방지·cleanup·상태 초기화 체크리스트
수정 금지 영역건드리면 안 되는 핵심 파일 명시

4. 출력 구조

번역기는 세 블록으로 출력한다.

📋 개발 프롬프트 (AI에게 전달할 내용)
  • 요구사항 — 기획자 원문 그대로
  • 구현 범위 — 수정해야 할 파일/레이어 목록
  • 관련 파일 — grep으로 찾은 실제 파일 경로 + 역할
  • 기존 패턴 — 유사 구현의 코드 스니펫
  • 컨벤션 규칙 — PPI 프로젝트 고유 규칙
  • 가드 조건 체크리스트 — 자동 감지된 안전장치 목록
  • 수정 금지 영역 — 핵심 파일 명시
⚠️ 기획자 확인 필요 (개발 전 반드시 답할 것)

요구사항 유형에 따라 자동 생성된 구체적 질문 목록.

예: "이미 알림 표시 중(15초 이내)에 버튼을 다시 누르면 A) 무시 B) 타이머 연장 C) 내용 교체 중 어느 것인가요?"

🔍 개발자 리뷰 체크리스트 (PR 머지 전 확인)

기획자 AI PR에 특화된 리뷰 항목.

일반 리뷰(로직·타입) + 기획자 AI 추가 항목(가드 조건 구현 여부, 기존 패턴 재사용 여부, 소켓 서버 핸들러 수정 여부 등)

5. 가드 조건 자동 감지 기준

요구사항 유형을 분석해 아래 기준으로 가드 조건을 자동 주입한다.

요구사항 유형자동 주입되는 가드 조건
버튼 → 이벤트 발송 중복 발송 방지, 쿨다운, 발송 중 버튼 비활성화
타이머/시간 관련 컴포넌트 언마운트 시 clearTimeout cleanup, 재실행 시 기존 타이머 제거
상태 표시/UI 변경 초기화 시점 명시, 다른 상태와 충돌 여부 확인
소켓 이벤트 추가 서버 핸들러 수정 필요, constants.ts 상수 등록, 재연결 시 재등록 여부
목록/데이터 조회 로딩 상태, 빈 목록 처리, 에러 상태
파일/미디어 처리 실패 처리, 용량 제한, 포맷 검증
핵심 원칙 — 가드 조건은 요구사항에 없어도 유형에 따라 항상 주입된다. "기획자가 안 썼으니 AI도 안 구현했다"는 상황을 구조적으로 차단하는 것이 목표다.

6. 실제 적용 사례

사례 1 — 아동 알림 프리셋 (예외처리 부족 방지)

기획자 입력 "프리셋 버튼 누르면 핑퐁이가 해당 문구를 말하게 해줘. 15초간 표시되고 사라지는 알림이야."

번역기 없이 AI 구현 시 (문제 발생)

→ AI가 버튼 클릭 → 이벤트 발송까지만 구현.

→ 15초 표시 중 버튼 재클릭 시 중복 발송 버그 발생.

번역기 적용 후

번역기가 use-guest-page-session.ts:225showAmbientNoiseAlert() 패턴을 탐색해서 자동 주입:

  • 이미 표시 중(15초 이내)일 때 재트리거 → 타이머만 연장, 내용 고정 패턴 제공
  • 호스트 버튼 disabled={ambientAlertVisible} 처리 필요 명시
  • clearTimeout cleanup 가드 조건 자동 추가
  • 기획자에게 "재클릭 시 무시/연장/교체 중 어느 것?" 질문 자동 생성

사례 2 — 게스트 네트워크 경고 배지 (중복 구현 방지)

기획자 입력 "수업 중 게스트 네트워크가 불안정하면 진행자 화면에 경고 배지를 표시해줘. 네트워크가 회복되면 배지는 자동으로 사라져야 해."

번역기 없이 AI 구현 시 (예상 문제)

→ AI가 새로운 네트워크 감지 로직 + 소켓 이벤트 + 배지 컴포넌트를 처음부터 구현.

→ 이미 존재하는 GUEST_NETWORK_ALERT 이벤트 및 guestNetworkAlertLevel 상태와 중복 구현 발생.

번역기 적용 후 — 이미 구현되어 있음을 발견

코드베이스 탐색 결과 기능이 이미 완성되어 있었음:

  • constants.ts:327GUEST_NETWORK_ALERT 소켓 이벤트 이미 존재
  • use-monitor-session.ts:129guestNetworkAlertLevel: "warning" | "critical" | null 상태 이미 존재
  • monitor-media-display.tsx:271 — warning(amber 배지) / critical(빨간 오버레이) UI 이미 존재
  • monitoring-handlers.ts:371 — 서버 발송 로직 이미 존재

→ 번역기가 "구현 전 테스트 먼저" + "카드뷰/포커스뷰 누락 여부 확인" 질문 생성.

→ 중복 구현 방지. 실제 필요한 작업(카드뷰 prop 추가)만 최소 범위로 진행.

번역기의 핵심 가치 중 하나 — "새로 만들어야 하는가, 이미 있는가"를 구현 전에 판별해준다. AI는 지시받은 대로 새로 만드는 경향이 있어서, 기존 구현을 모르면 중복 코드가 들어온다.

7. PPI 프로젝트 고정 컨텍스트

번역 시 항상 포함되는 PPI 프로젝트 고유 지식이다.

자주 실수하는 영역 (항상 경고 포함)

수정 금지 파일 (항상 명시)

소켓 이벤트 추가 시 필수 수정 파일

packages/shared/src/utils/constants.ts     — 이벤트 상수 정의
apps/socket/src/sfu-socket/handlers/       — 서버 핸들러
apps/web/hooks/ 또는 entities/             — 클라이언트 핸들러

8. 운영 원칙

9. 스킬 파일 위치

스킬 파일
.claude/skills/po-translator/SKILL.md
호출 방법
/po-translator [요구사항]
대상
기획자(PO)가 AI로 구현 요청 시 사용
추가일
2026-06-11