--- name: feature-expansion description: "MVP의 Phase 2 기능과 사용자 추가 요구사항을 설계하고 구현하는 스킬. 새 화면 설계, 컴포넌트 구현, Supabase 스키마 확장, 기존 네비게이션 통합을 포함한다. 새 기능 추가, 화면 추가, 앱 기능 확장, Phase 2 구현 시 반드시 이 스킬을 사용." --- # Feature Expansion Skill 기존 MVP에 새로운 기능을 추가한다. Phase 2 로드맵과 사용자 요구사항을 기반으로 설계부터 구현까지 수행한다. ## 기능 추가 프로세스 ### 1. 기능 선별 - `_workspace/06_audit_report.md`의 Phase 2 재평가 결과에서 구현 대상 선별 - 사용자 추가 요구사항 반영 - 선별 기준: - 사용자 가치가 높은 기능 우선 - 기존 코드베이스와 자연스럽게 통합 가능한 기능 우선 - 다른 에이전트(production, growth)의 작업과 시너지가 있는 기능 우선 ### 2. 기능별 미니 설계 각 기능에 대해 구현 전 미니 설계를 작성한다: ``` ### 기능: {이름} - 목적: {왜 필요한지} - 화면: {새 화면 / 기존 화면 수정} - 컴포넌트: {필요한 컴포넌트} - 데이터: {테이블 추가/변경, RLS} - 네비게이션: {기존 구조에 어떻게 연결} - 의존성: {새 패키지 필요 여부} ``` ### 3. 데이터 모델 확장 - 새 테이블 또는 컬럼 추가 시 `supabase/migrations/`에 SQL 생성 - RLS 정책 반드시 포함 - 기존 테이블 변경 시 비파괴적 마이그레이션 (ALTER TABLE ADD COLUMN 등) - 타입 정의 (`lib/types.ts`) 동기화 ### 4. 화면 구현 기존 프로젝트의 패턴을 따른다: - `app/` 디렉토리에 Expo Router 규칙으로 파일 추가 - `components/features/`에 기능별 컴포넌트 생성 - `hooks/`에 데이터 페칭 훅 추가 - `stores/`에 상태 관리 필요 시 스토어 추가/확장 ### 5. 기존 코드 통합 - 네비게이션: 탭 추가 또는 기존 화면에서 링크 추가 - 공유 컴포넌트: 기존 UI 컴포넌트 재사용 - 상태 관리: 기존 스토어 확장 또는 새 스토어 생성 - 기존 화면 수정 시 영향 범위 최소화 ### 6. 팀 연계 작업 구현 후 다른 에이전트에게 알림: - production-engineer: 새 API의 에러 핸들링/보안 적용 요청 - performance-engineer: 무거운 UI(리스트, 이미지 등) 최적화 요청 - growth-engineer: 새 기능의 트래킹 이벤트 삽입 요청 ## 코드 품질 기준 - 기존 코드와 동일한 네이밍 컨벤션 - TypeScript strict 준수 (any 금지) - 새 화면에 로딩/에러/빈 상태 UI 포함 - 새 Supabase 쿼리에 에러 처리 포함 ## 출력 1. 프로젝트 코드에 직접 추가/수정 2. `_workspace/07_feature_report.md`에 보고서 저장