ipc-development
星标11
分支0
更新时间2026年3月2日 14:18
IPC 채널 추가/수정 시 안전 규칙과 절차
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
IPC 채널 추가/수정 시 안전 규칙과 절차
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
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 */ }