ipc-development
النجوم١١
التفرعات٠
آخر تحديث٢ مارس ٢٠٢٦ في ١٤:١٨
IPC 채널 추가/수정 시 안전 규칙과 절차
التثبيت
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
SKILL.md
readonlyالقائمة
IPC 채널 추가/수정 시 안전 규칙과 절차
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Prowl 앱을 격리 환경에서 실행하고 UI 동작을 E2E 검증. 작업 완료 후 회귀 확인용.
에이전트 간 상호작용 구조와 워크플로우 정의
컨벤션에 맞춰 커밋 생성
PR 템플릿에 맞춰 Pull Request 생성
TanStack Query 기반 데이터 페칭 패턴
Prowl 앱의 디자인 시스템 (Liquid Glass + 골드 액센트)
| name | ipc-development |
| description | IPC 채널 추가/수정 시 안전 규칙과 절차 |
| user-invocable | false |
모든 IPC 채널은 src/shared/ipc-schema.ts에 정의. 이 스키마에서 타입이 자동 추론되므로 별도 타입 정의 불필요.
새 IPC 채널 추가 시 3곳 수정:
src/shared/ipc-schema.ts — 채널 + params + return 타입 정의src/main/ipc.ts — handleIpc() 핸들러 추가src/preload/index.ts — invokeIpc() 메서드 추가→ Renderer 타입은 자동 반영
| 채널 유형 | 반환 타입 | 예시 |
|---|---|---|
| 데이터 조회 | 구체적 타입 | LaunchdJob[], AppSettings |
| 데이터 변경 (mutation) | IpcResult | { success: true } |
| Fire-and-forget | void | quit, resize, navigate |
handleIpc 래퍼가 try/catch 자동 적용:
{ success: false, error: message } 반환string) 사용.toISOString() 호출 후 전달new Date(isoString) 으로 파싱형식: {domain}:{action} (액션은 kebab-case)
jobs:list # 조회
jobs:toggle # 액션
settings:get # 단일 조회
calendar:add-local-event # 복합 액션
컴포넌트에서 window.electronAPI 직접 호출 금지. 반드시 hooks를 통해 접근:
// Bad
const jobs = await window.electronAPI.listJobs();
// Good
const { jobs } = useLaunchdJobs();
외부 데이터(plist)는 Zod safeParse로 런타임 검증:
// Bad
const data = plist.parse(content) as PlistData;
// Good
const result = PlistDataSchema.safeParse(plist.parse(content));
if (!result.success) { /* handle error */ }