에이전트 팀 생성:
TeamCreate(
team_name: "youtube-pulse-team",
members: [
{
name: "architect",
agent_type: "general-purpose",
model: "opus",
prompt: ".claude/agents/architect.md의 역할에 따라 YooBe Pulse 프로젝트를 scaffolding하라.
PRD: youtube-pulse-prd.md를 읽고 Section 2-4, 9를 기준으로 작업하라.
완료 후 _workspace/01_architect_structure.md에 생성 파일 목록과 빌드 결과를 기록하라.
빌드(./gradlew build, npm install)가 성공해야 한다.
완료되면 backend-dev와 frontend-dev에게 시작 가능함을 알려라."
},
{
name: "backend-dev",
agent_type: "general-purpose",
model: "opus",
prompt: ".claude/agents/backend-dev.md의 역할에 따라 백엔드를 구현하라.
PRD: youtube-pulse-prd.md의 Section 5, 7, 8, 9를 기준으로 작업하라.
architect의 scaffolding 완료 알림을 기다린 후 시작하라.
구현 완료 후 _workspace/02_backend_implementation.md에 구현 목록을 기록하라.
API 구현 완료 시 frontend-dev에게 알리고, 전체 완료 시 qa-engineer에게 알려라."
},
{
name: "frontend-dev",
agent_type: "general-purpose",
model: "opus",
prompt: ".claude/agents/frontend-dev.md의 역할에 따라 프론트엔드를 구현하라.
PRD: youtube-pulse-prd.md의 Section 6을 기준으로 작업하라.
architect의 scaffolding 완료 알림을 기다린 후 시작하라.
API 타입은 frontend/src/types/pulse.ts를 참조하라.
구현 완료 후 _workspace/03_frontend_implementation.md에 구현 목록을 기록하라.
완료 시 qa-engineer에게 알려라."
},
{
name: "qa-engineer",
agent_type: "general-purpose",
model: "opus",
prompt: ".claude/agents/qa-engineer.md의 역할에 따라 품질을 검증하라.
PRD: youtube-pulse-prd.md의 Section 11을 기준으로 수용 기준을 확인하라.
backend-dev와 frontend-dev 모두 완료 알림을 받은 후 시작하라.
경계면 교차 비교를 최우선으로 수행하라 (API 응답 shape ↔ 프론트 타입).
결과를 _workspace/04_qa_report.md에 기록하라.
심각 버그 발견 시 해당 에이전트에게 즉시 보고하라."
}
]
)
작업 등록:
TaskCreate(tasks: [
// architect 작업
{ title: "프로젝트 구조 생성", description: "Gradle/npm 프로젝트 scaffolding", assignee: "architect" },
{ title: "도메인 엔티티 생성", description: "Video, Comment, Keyword JPA 엔티티 + Repository", assignee: "architect" },
{ title: "Config 및 데모 데이터", description: "application.yml, CORS, demo-comments.json", assignee: "architect" },
{ title: "프론트 타입 정의", description: "types/pulse.ts TypeScript 타입", assignee: "architect" },
// backend-dev 작업 (architect 완료 후)
{ title: "Collector 모듈", description: "YouTubeApiClient, CommentCollectorService, Scheduler", assignee: "backend-dev", depends_on: ["도메인 엔티티 생성"] },
{ title: "Analyzer 모듈", description: "SentimentAnalyzer, Claude/Simple 구현체, KeywordExtractor", assignee: "backend-dev", depends_on: ["도메인 엔티티 생성"] },
{ title: "API 모듈", description: "Controller, Service, DTO, Exception", assignee: "backend-dev", depends_on: ["도메인 엔티티 생성"] },
{ title: "Demo 데이터 로더", description: "CommandLineRunner, demo-comments.json 파싱", assignee: "backend-dev", depends_on: ["Config 및 데모 데이터"] },
// frontend-dev 작업 (architect 완료 후)
{ title: "API 클라이언트 + 훅", description: "pulseApi.ts, useOverview, useVideos 등", assignee: "frontend-dev", depends_on: ["프론트 타입 정의"] },
{ title: "대시보드 컴포넌트", description: "Gauge, PieChart, LineChart, KeywordRanking, RequestTable", assignee: "frontend-dev", depends_on: ["API 클라이언트 + 훅"] },
{ title: "레이아웃 + 앱 조합", description: "Header, App.tsx, 반응형 레이아웃", assignee: "frontend-dev", depends_on: ["대시보드 컴포넌트"] },
// qa-engineer 작업 (backend + frontend 완료 후)
{ title: "경계면 교차 비교", description: "API 응답 shape ↔ Frontend 타입 정의 1:1 대조", assignee: "qa-engineer", depends_on: ["API 모듈", "API 클라이언트 + 훅"] },
{ title: "JUnit 백엔드 테스트", description: "API 엔드포인트 양성/음성, Service 단위 테스트", assignee: "qa-engineer", depends_on: ["API 모듈", "Demo 데이터 로더"] },
{ title: "Playwright E2E 테스트", description: "대시보드 로딩, 영상 필터, 빈 상태", assignee: "qa-engineer", depends_on: ["레이아웃 + 앱 조합"] },
{ title: "QA 리포트 작성", description: "전체 검증 결과 요약", assignee: "qa-engineer", depends_on: ["경계면 교차 비교", "JUnit 백엔드 테스트", "Playwright E2E 테스트"] }
])