用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/RocketChat/Rocket.Chat.Electron --skill new-ipc-channel命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Drive and screenshot the running Rocket.Chat Desktop dev app (yarn start) through the main-process inspector on port 9339 — trigger menu items (Simulate Download/Update), evaluate in the renderer DOM, capture titlebar screenshots. Use whenever a UI change needs runtime/visual verification that component tests can't see (paint, clipping, colors, animation, layout).
Ship a Rocket.Chat.Electron release end-to-end. Collects merged fixes since the last tag, drafts release notes, bumps the version on a chore/release branch, opens the bump PR, and — after explicit user approval at each gate — merges, tags, monitors the build-release pipeline in the background, and verifies the published release has the full platform asset matrix. Handles alpha (on dev), stable promotion (dev→master), and patch releases (release/X.Y.x). Trigger when the user says "ship release X.Y.Z", "release 4.16.0", "cut a patch release", "promote alpha to stable", or "/ship-release".
Upgrade the Electron version in Rocket.Chat.Electron safely. Detects breaking changes between the current and target Electron release, produces a migration plan gated on user approval, applies the fixes (using GitNexus impact analysis to find every affected callsite), bumps coupled config (electron-builder bundle id, CI node-version, @types/node), runs lint + tests, and opens a ready PR from a fresh branch off dev. Trigger when the user says "bump electron", "upgrade electron", "update electron to X", "/electron-bump", or asks to move to a newer Electron release.
正在显示 SKILL.md
基于 SOC 职业分类
| name | new-ipc-channel |
| description | Scaffold a new IPC channel with proper TypeScript types |
Add a new type-safe IPC channel to the Rocket.Chat Electron app. This scaffolds the channel definition, main process handler, and renderer invoke call.
name: Channel name using domain/action format (e.g., downloads/clear-all, notifications/dismiss)args: TypeScript argument types (e.g., (itemId: string) or () for no args)return: TypeScript return type (e.g., void, boolean, { success: boolean })Edit src/ipc/channels.ts and add the new channel to the ChannelToArgsMap type:
type ChannelToArgsMap = {
// ... existing channels ...
'<name>': (<args>) => <return>;
};
Add any needed imports at the top of the file if the types reference domain-specific types.
Identify the correct main process file based on the channel domain:
downloads/* → src/downloads/main.tsnotifications/* → src/notifications/main.tsservers/* → src/servers/main.tsvideo-call-window/* → src/videoCallWindow/main.tsoutlook-calendar/* → src/outlookCalendar/main.tsdocument-viewer/* → src/documentViewer/main.tsAdd the handler using the existing pattern in that file. Look at sibling handlers for the correct pattern - they use ipcMain.handle or the project's handle wrapper from src/ipc/main.ts.
If this channel is called from the renderer process, add the invoke call in the appropriate renderer file or in src/ipc/renderer.ts following the existing pattern.
Run type checking to ensure the new channel compiles:
npx tsc --noEmit
The IPC system uses a centralized type map (ChannelToArgsMap) that enforces type safety between main and renderer processes. The Channel and Handler types are derived from this map:
export type Channel = keyof ChannelToArgsMap;
export type Handler<N extends Channel> = ChannelToArgsMap[N];
All 71+ existing channels follow the 'domain/action' naming convention.