실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기. CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원. DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
2.1 KiB
2.1 KiB
| name | description | argument-hint | allowed-tools |
|---|---|---|---|
| scaffold-component | D3RO-VOICE 프로젝트 컨벤션에 맞게 새 컴포넌트/서비스를 스캐폴딩. 이름을 인자로 전달. | [component or service name] | Read Write Glob Grep Edit |
Scaffold
프로젝트 컨벤션에 맞는 새 모듈을 생성합니다.
모듈명: $ARGUMENTS
0. 중복 방지 가드 (스킵 불가)
생성 전 반드시 확인:
- 서비스:
src/main/services/내 동일 이름 파일 Glob 검색. 존재 시 유저에게 확인 - 컴포넌트:
src/renderer/components/내 동일 이름 Glob 검색. 존재 시 유저에게 확인 - IPC 채널:
shared/ipc-channels.ts에서 해당 feature 네임스페이스 Grep 검색. 충돌 시 경고 - i18n 키:
src/renderer/locales/ko.json에서 해당 키 접두사 검색. 충돌 시 경고
서비스 스캐폴딩 (메인 프로세스)
Speakly 패턴:
- 싱글톤 + EventEmitter
- 로거 태그
[ServiceName](electron-log, console.log 금지) - 초기화/종료 메서드 (
initialize()/dispose()) - IPC 채널
shared/ipc-channels.ts에 추가 - 에러: D3ROError + ErrorCode enum
생성 파일:
src/main/services/$ARGUMENTS.ts— 서비스 본체shared/ipc-channels.ts— 채널 추가 (Edit)src/main/ipc/— 핸들러 등록 (Edit)
React 컴포넌트 스캐폴딩 (렌더러)
- 함수형 컴포넌트 + TypeScript Props 인터페이스
- 스타일: d3roPalette/d3roTypo/d3roShadow 토큰만 (hex 리터럴 금지)
- DS 컴포넌트(MetalCard, PhosphorText, Led, PhysicalButton 등) 적극 활용
- i18n: t() 함수 사용, 하드코딩 문자열 금지
- IPC: window.electronAPI.* 호출
생성 파일:
src/renderer/components/$ARGUMENTS.tsx— 컴포넌트 본체src/renderer/locales/ko.json— i18n 키 추가 (Edit)src/renderer/locales/en.json— i18n 키 추가 (Edit)
Vanilla JS 팝업 스캐폴딩
Speakly 패턴:
- 별도 HTML 엔트리포인트, React 미사용
- 순수 DOM 조작
- 2-phase 리사이즈: prepare(측정) → resize → show
- d3roPalette 토큰의 CSS var 사용