d3ro-voice/.claude/skills/scaffold-component/SKILL.md
Yun Chan d0c4f9ee53 Phase 14 구현: 회의 모드 (Meeting Mode)
실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기.
CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원.
DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
2026-04-08 01:16:52 +09:00

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. 중복 방지 가드 (스킵 불가)

생성 전 반드시 확인:

  1. 서비스: src/main/services/ 내 동일 이름 파일 Glob 검색. 존재 시 유저에게 확인
  2. 컴포넌트: src/renderer/components/ 내 동일 이름 Glob 검색. 존재 시 유저에게 확인
  3. IPC 채널: shared/ipc-channels.ts에서 해당 feature 네임스페이스 Grep 검색. 충돌 시 경고
  4. 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 사용