diff --git a/.claude/skills/implement-phase/SKILL.md b/.claude/skills/implement-phase/SKILL.md index f07d824..6cc70ae 100644 --- a/.claude/skills/implement-phase/SKILL.md +++ b/.claude/skills/implement-phase/SKILL.md @@ -1,65 +1,71 @@ --- name: implement-phase -description: Speakly RE 노하우를 기반으로 D3RO-VOICE의 특정 페이즈를 구현. 페이즈 번호를 인자로 전달. -argument-hint: "[phase number or feature name]" +description: D3RO-VOICE의 특정 페이즈를 구현. 인자로 Phase 번호 또는 "V2-1" 형식 전달. 완료 후 자동으로 /review-phase → /test-and-commit 체이닝. +argument-hint: "[phase number, e.g. 14, 15.5, V2-1]" allowed-tools: Read Write Edit Bash Glob Grep Agent --- # Feature / Phase Implementation -페이즈 또는 새 기능을 구현합니다. +페이즈 또는 새 기능을 구현합니다. **V1(Electron) + V2(Monorepo)** 모두 지원. ## 0. 사전 조건 가드 (스킵 불가) -구현 시작 전 반드시 아래를 확인하고, 실패 시 유저에게 보고 후 중단: - 1. **Git 클린 상태**: `git status --porcelain` — 커밋되지 않은 변경이 있으면 경고 후 커밋/스태시 제안 -2. **페이즈 문서 존재**: 페이즈 번호 전달 시 `docs/phases/phase-$ARGUMENTS.md` 파일 존재 확인. 없으면 중단 -3. **이전 페이즈 완료 확인**: `memory/project_status.md` 읽어서 선행 페이즈 완료 여부 확인. 미완료 시 경고 -4. **설계서 4종 존재 확인**: `docs/design/00~03` 파일 모두 존재 확인 +2. **페이즈 문서 존재**: + - V1: `docs/phases/phase-$ARGUMENTS.md` + - V2: `docs/v2/phase-$ARGUMENTS.md` 또는 `docs/v2/00-v2-master-plan.md` 참조 +3. **이전 페이즈 완료 확인**: `memory/project_status.md` 읽기 +4. **설계서 확인**: + - V1: `docs/design/00~03` 4종 + - V2: `docs/v2/00-v2-master-plan.md` -## 1. 설계서 로드 (필수) +## 1. 타겟 감지 -- `docs/design/00-master-architecture.md` — 아키텍처, 서비스 의존관계 -- `docs/design/01-service-specifications.md` — 서비스 인터페이스, 상태 머신 -- `docs/design/02-ipc-and-types.md` — IPC 채널, 타입, 에러 코드 -- `docs/design/03-db-and-ui.md` — DB 스키마, 컴포넌트 명세 +인자가 `V2-*` 형식이면 V2 모드, 그 외는 V1 모드. -## 2. 요구사항 파악 +### V2 모드 추가 규칙 +- Monorepo 구조: `packages/core`, `packages/ui`, `apps/desktop`, `apps/web`, `apps/mobile` +- 앱 간 직접 import 금지 (packages/* 통해서만) +- Adapter 패턴: core는 순수 비즈니스 로직, transport는 adapter -- 페이즈 번호 전달 시: `docs/phases/phase-$ARGUMENTS.md` 읽기 -- 피처명 전달 시: 유저 요구사항 분석 + 기존 코드 검토 +## 2. 구현 순서 -## 3. RE 참조 -`docs/re-findings/`에서 관련 Speakly 패턴 확인 +### V1 (Electron) +1. `src/shared/` 타입 정의 +2. 메인 프로세스 서비스 (싱글톤 + EventEmitter) +3. IPC 핸들러 (IPC_CHANNELS 상수) +4. Preload 브릿지 +5. 렌더러 UI (d3roPalette + DS 컴포넌트) +6. i18n 키 추가 (ko/en + 10개 locale) -## 4. 현재 코드 파악 -기존 구현 검토, 영향 범위 분석 +### V2 (Monorepo) +1. `packages/core/src/types/` 타입 정의 +2. `packages/core/src/services/` 서비스 인터페이스 +3. 앱별 구현체 (`apps/desktop/`, `apps/web/`, `apps/mobile/`) +4. `packages/ui/` 공유 컴포넌트 +5. `packages/i18n/` i18n 키 +6. Supabase 마이그레이션 (필요 시) -## 5. 구현 (순서 중요) +## 3. 검증 +```bash +npm run typecheck # 또는 pnpm turbo typecheck +npm run build +``` -- shared/ 타입 정의 -- 메인 프로세스 서비스 -- IPC 핸들러 -- Preload 브릿지 -- 렌더러 UI (d3roPalette + DS 컴포넌트 활용) -- i18n 키 추가 (ko/en) +## 4. 자동 체이닝 (완료 후) -## 6. 검증 -`npm run typecheck` 통과 +구현 완료 시 **자동으로** 다음을 순서대로 실행: +1. `/review-phase $ARGUMENTS` — 코드 리뷰 +2. 리뷰 GO → `/test-and-commit` — 테스트 + 커밋 +3. `memory/project_status.md` 갱신 (즉시) -## 7. 후속 워크플로우 - -구현 완료 후 아래 순서로 유저에게 안내: -1. `/review-phase $ARGUMENTS` 실행을 제안 (코드 리뷰) -2. 리뷰 통과 시 `/test-and-commit` 실행을 제안 (테스트 + 커밋) -3. `memory/project_status.md` 갱신 (즉시, 미루지 말 것) +유저가 중단을 요청하지 않는 한 끝까지 진행. ## 구현 규칙 (위반 불가) -- 서비스: 싱글톤 + EventEmitter, 설계서 01 인터페이스 준수 -- IPC: 설계서 02의 IPC_CHANNELS 상수 사용 -- 에러: D3ROError + ErrorCode enum -- DB: drizzle-orm 스키마 -- UI: d3roPalette/d3roTypo/d3roShadow 토큰만 (hex 리터럴 금지) -- i18n: t() 함수 (하드코딩 문자열 금지) -- any 타입 절대 금지, console.log 절대 금지 +- any 타입 금지, console.log 금지 (logger 사용) +- 서비스: 싱글톤 + EventEmitter +- IPC: IPC_CHANNELS 상수 사용, D3ROError + ErrorCode +- UI: d3roPalette/d3roTypo/d3roShadow 토큰만 (hex 금지) +- i18n: t() 함수 (하드코딩 금지) +- V2: 앱 간 직접 import 금지, packages/* 통해서만