71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
---
|
|
name: implement-phase
|
|
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. **페이즈 문서 존재**:
|
|
- 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. 타겟 감지
|
|
|
|
인자가 `V2-*` 형식이면 V2 모드, 그 외는 V1 모드.
|
|
|
|
### V2 모드 추가 규칙
|
|
- Monorepo 구조: `packages/core`, `packages/ui`, `apps/desktop`, `apps/web`, `apps/mobile`
|
|
- 앱 간 직접 import 금지 (packages/* 통해서만)
|
|
- Adapter 패턴: core는 순수 비즈니스 로직, transport는 adapter
|
|
|
|
## 2. 구현 순서
|
|
|
|
### V1 (Electron)
|
|
1. `src/shared/` 타입 정의
|
|
2. 메인 프로세스 서비스 (싱글톤 + EventEmitter)
|
|
3. IPC 핸들러 (IPC_CHANNELS 상수)
|
|
4. Preload 브릿지
|
|
5. 렌더러 UI (d3roPalette + DS 컴포넌트)
|
|
6. i18n 키 추가 (ko/en + 10개 locale)
|
|
|
|
### 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 마이그레이션 (필요 시)
|
|
|
|
## 3. 검증
|
|
```bash
|
|
npm run typecheck # 또는 pnpm turbo typecheck
|
|
npm run build
|
|
```
|
|
|
|
## 4. 자동 체이닝 (완료 후)
|
|
|
|
구현 완료 시 **자동으로** 다음을 순서대로 실행:
|
|
1. `/review-phase $ARGUMENTS` — 코드 리뷰
|
|
2. 리뷰 GO → `/test-and-commit` — 테스트 + 커밋
|
|
3. `memory/project_status.md` 갱신 (즉시)
|
|
|
|
유저가 중단을 요청하지 않는 한 끝까지 진행.
|
|
|
|
## 구현 규칙 (위반 불가)
|
|
- any 타입 금지, console.log 금지 (logger 사용)
|
|
- 서비스: 싱글톤 + EventEmitter
|
|
- IPC: IPC_CHANNELS 상수 사용, D3ROError + ErrorCode
|
|
- UI: d3roPalette/d3roTypo/d3roShadow 토큰만 (hex 금지)
|
|
- i18n: t() 함수 (하드코딩 금지)
|
|
- V2: 앱 간 직접 import 금지, packages/* 통해서만
|