Agent Skillsmuratgur/ordinus › ipc-contract-design

ipc-contract-design

GitHub

规范 Ordinus IPC 接口设计,确保类型安全与稳定性。涵盖通道命名、Schema 定义、主进程处理及预加载桥接流程。强调领域导向方法命名、输入验证及安全限制,避免通用调用和敏感数据泄露。

.codex/skills/ipc-contract-design/SKILL.md muratgur/ordinus

Trigger Scenarios

添加或修改 window.ordinus API 设计新的 IPC 通道或共享类型 更新 Zod 校验规则或预处理逻辑

Install

npx skills add muratgur/ordinus --skill ipc-contract-design -g -y
More Options

Non-standard path

npx skills add https://github.com/muratgur/ordinus/tree/master/.codex/skills/ipc-contract-design -g -y

Use without installing

npx skills use muratgur/ordinus@ipc-contract-design

指定 Agent (Claude Code)

npx skills add muratgur/ordinus --skill ipc-contract-design -a claude-code -g -y

安装 repo 全部 skill

npx skills add muratgur/ordinus --all -g -y

预览 repo 内 skill

npx skills add muratgur/ordinus --list

SKILL.md

Frontmatter
{
    "name": "ipc-contract-design",
    "description": "Design and maintain Ordinus typed IPC contracts. Use when adding or changing window.ordinus APIs, ipcMain handlers, ipc channel names, shared request\/response types, Zod schemas, preload bridge methods, or renderer calls into main process."
}

IPC Contract Design

Objective

Keep Ordinus IPC small, typed, explicit, and stable enough for the renderer to act as a safe UI over main-process capabilities.

Contract Shape

  • Define channel names in src/shared/ipc.ts.
  • Define shared request/response schemas and types in src/shared/contracts.ts.
  • Register handlers in main process modules, not renderer.
  • Expose renderer-facing methods through window.ordinus in preload.
  • Use feature-shaped methods such as workspace.selectFolder() instead of generic transport methods.

Workflow

  1. Name the user-facing capability before creating an IPC method.
  2. Add or update shared types and Zod schemas.
  3. Add the IPC channel constant.
  4. Implement the main handler and validate untrusted input.
  5. Add the narrow preload method that invokes that channel.
  6. Consume the method in renderer through window.ordinus.
  7. Run typecheck, lint, and build.

Guidelines

  • Keep method names domain-oriented: app.getInfo, db.getStatus, workspace.selectFolder.
  • Prefer one explicit method over a generic catch-all channel.
  • Keep renderer errors user-readable and main errors diagnostic enough to debug.
  • When IPC responses drive renderer status, empty states, or error copy, align user-visible naming with DESIGN.md.
  • Do not add IPC for future features until there is an immediate caller.
  • Do not return secrets, raw environment details, or unrestricted local paths unless the UI truly needs them.

Anti-Patterns

  • window.ordinus.invoke(channel, payload).
  • Passing raw command strings from renderer to main.
  • Duplicating response shapes separately in main and renderer.
  • Letting renderer decide privileged policy such as workspace boundaries or executable paths.

Version History

  • f507122 Current 2026-07-05 18:19

Same Skill Collection

.agents/skills/lavish/SKILL.md
.claude/skills/code-review-and-quality/SKILL.md
.claude/skills/code-simplification/SKILL.md
.claude/skills/documentation-and-adrs/SKILL.md
.claude/skills/electron-secure-boundary/SKILL.md
.claude/skills/grill-me/SKILL.md
.claude/skills/idea-discovery/SKILL.md
.claude/skills/ipc-contract-design/SKILL.md
.claude/skills/ordinus-ui-system/SKILL.md
.claude/skills/provider-runtime-adapter/SKILL.md
.claude/skills/shadcn-project-workflow/SKILL.md
.claude/skills/sqlite-minimal-persistence/SKILL.md
.codex/skills/code-review-and-quality/SKILL.md
.codex/skills/code-simplification/SKILL.md
.codex/skills/documentation-and-adrs/SKILL.md
.codex/skills/electron-secure-boundary/SKILL.md
.codex/skills/grill-me/SKILL.md
.codex/skills/idea-discovery/SKILL.md
.codex/skills/ordinus-ui-system/SKILL.md
.codex/skills/provider-runtime-adapter/SKILL.md
.codex/skills/shadcn-project-workflow/SKILL.md
.codex/skills/sqlite-minimal-persistence/SKILL.md

Metadata

Files
0
Version
f25c76b
Hash
12d81031
Indexed
2026-07-05 18:19

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-20 15:32
浙ICP备14020137号-1 $お客様$