本文へ移動
cccskills
無料GitHub で公開

erpc-communication

Guides using eRPC (electron-tRPC) for inter-process communication (IPC) between Electron main and renderer processes. Triggered when handling Electron IPC or tRPC-based systems.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md2.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

eRPC Communication Guide

This skill provides mandatory instructions for implementing type-safe IPC using eRPC in this project.

1. Main Process Implementation

  • Route Definition: Must use the project's provided router utility to define tRPC routes.
  • Handler Initialization: Must use createIPCHandler from erpc/main to bind the router to Electron windows.
  • Context Injection: Should provide necessary instances (e.g., BrowserWindow or Tray) through createContext.
// Always initialize createIPCHandler within the app ready lifecycle
import { createIPCHandler } from 'erpc/main'

import { routers } from './rpcs'

createIPCHandler({
	createContext: async () => ({ win: mainWindow, tray: appTray }),
	router: routers,
	windows: [mainWindow]
})

2. Preload Script Configuration

  • Expose Bridge Interface: Must call exposeElectronTRPC() provided by erpc/main in the preload script.
  • Lifecycle: Should be called inside process.once('loaded').
import { exposeElectronTRPC } from 'erpc/main'

process.once('loaded', () => {
	exposeElectronTRPC()
})

3. Renderer Process Usage

  • Client Creation: Create tRPC client using ipcLink from erpc/renderer.
  • Type Safety: Always import Router type from main process to ensure complete end-to-end type safety.
import { createTRPCClient } from '@trpc/client'
import { ipcLink } from 'erpc/renderer'

import type { Router } from '@desktop/rpcs' // Import Router type from main process

export const trpc = createTRPCClient<Router>({
	links: [ipcLink()]
})

4. Routes and Endpoints Best Practices

  • Single Responsibility: Each route should correspond to a specific service in the main process (e.g., window, file, dialog).
  • Parameter Validation: It is strictly prohibited to write complex business logic in Router. Router is only responsible for validating input and output parameters; business logic must be delegated to Service (e.g., calling WindowService.open()).
  • Type Reference: For complex object parameters, type definitions must be placed under the packages/erpc package and shared between both ends, avoiding direct cross-package imports of entity logic.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Maintain package-level `agentmap.md` files as outline-level maps of the real file tree and core responsibilities. Use when package structure or responsibility boundaries change and the corresponding `agentmap.md` must be created or updated.

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

Guides the generation, reading, and updating of agentmap.md files. This skill ensures a consistent and up-to-date codebase map for AI Agents.

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

Interacts with local browser via Chrome DevTools Protocol (only triggered after user explicitly requests to inspect, debug, or interact with pages open in Chrome)

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

css

無料

Guides styling implementation using TailwindCSS + CSS Modules. Triggered when handling component styles, layout design, or CSS patterns.

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

Specialized for translating document files and their content into English. Triggered when localization, translation, or converting Chinese documents to English is requested.

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

i18n

無料

Guides internationalization (i18n) implementation using i18next with TypeScript. Triggered when handling localization, translation files, or multilingual support.

日本語の概要は準備中です。原文の説明を表示しています。

MatrixAges/polywise6632026年6月11日 更新

MatrixAges のスキルをすべて見る

このスキルの問題を報告する