electron-development — скилл для Claude Code: правила разработки
Скилл задаёт агенту правила разработки десктопных приложений на Electron: разделение процессов, IPC, безопасность окон.
npx skills add Mindrally/skills --skill electron-development -a claude-codeЧто делает electron-development
Скилл описывает, как устроен проект на Electron, и подсказывает агенту, куда класть код. Внутри — структура каталогов src/ с папками main/, renderer/, preload/ и shared/, примеры для главного и рендер-процесса, обработчики IPC через ipcMain.handle и ipcMain.on.
Отдельный блок про безопасность: contextIsolation: true, nodeIntegration: false, preload-скрипты с contextBridge и белым списком каналов, а также заголовок Content Security Policy. Есть разделы про управление окнами, автообновление через electron-updater, нативные модули и сборку через electron-builder.
Скилл пригодится, если вы уже пишете на Electron или только начинаете проект. Для нативных зависимостей он советует electron-rebuild, а тесты предлагает писать на Spectron или Playwright. Ничего ставить заранее не нужно: это набор инструкций для агента, а не библиотека.
Какие задачи решает
- разложить код Electron по процессам main, renderer и preload
- настроить безопасные окна с contextIsolation и preload-скриптом
- связать рендер и главный процесс через IPC-каналы
- подключить автообновление через electron-updater
- собрать установщики через electron-builder
Примеры запросов агенту
- Разложи мой проект на Electron по структуре из скилла electron-development
- Проверь настройки BrowserWindow на безопасность по electron-development
- Добавь IPC-обработчик для чтения файла, как описано в electron-development
Как установить electron-development
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill electron-development -a claude-code2Вручную: положить файлы
~/.claude/skills/electron-development/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/electron-development/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill electron-development -a codex2Вручную: положить файлы
.agents/skills/electron-development/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill electron-development -a cursor2Вручную: положить файлы
.cursor/skills/electron-development/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills electron-development2Вручную: положить файлы
.github/skills/electron-development/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill electron-development -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path electron-developmentВручную: положить файлы
.devin/skills/electron-development/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill electron-development -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о electron-development
Как установить electron-development в Claude?
Выполните npx skills add Mindrally/skills --skill electron-development -a claude-code. Скилл появится в ~/.claude/skills/electron-development/SKILL.md.
Что делает electron-development?
Даёт агенту правила разработки десктопных приложений на Electron: структуру проекта, работу с IPC, безопасность окон и сборку.
Нужны ли дополнительные зависимости для работы скилла?
Нет, это текстовые инструкции для агента. Пакеты вроде electron-updater и electron-builder упоминаются как часть самого проекта на Electron.
Исходный текст
SKILL.md · Apache-2.0
---
name: electron-development
description: Electron development guidelines for building cross-platform desktop applications with JavaScript/TypeScript
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Electron Development Guidelines
You are an expert in Electron development for building cross-platform desktop applications.
## Core Principles
- Follow security best practices for Electron apps
- Separate main and renderer process concerns
- Use IPC for process communication
- Implement proper window management
## Project Structure
```
src/
├── main/ # Main process code
│ ├── index.ts # Entry point
│ ├── ipc/ # IPC handlers
│ └── utils/ # Utilities
├── renderer/ # Renderer process code
│ ├── components/ # UI components
│ ├── pages/ # Application pages
│ └── styles/ # Stylesheets
├── preload/ # Preload scripts
│ └── index.ts # Expose APIs to renderer
└── shared/ # Shared types and utilities
```
## Security Best Practices
### Context Isolation
```javascript
// main.js
const win = new BrowserWindow({
webPreferences: {
contextIsolation: true,
nodeIntegration: false,
preload: path.join(__dirname, 'preload.js')
}
});
```
### Preload Scripts
```javascript
// preload.js
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', {
sendMessage: (channel, data) => {
const validChannels = ['toMain'];
if (validChannels.includes(channel)) {
ipcRenderer.send(channel, data);
}
},
onMessage: (channel, callback) => {
const validChannels = ['fromMain'];
if (validChannels.includes(channel)) {
ipcRenderer.on(channel, (event, ...args) => callback(...args));
}
}
});
```
### Content Security Policy
```html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
```
## IPC Communication
### Main Process
```javascript
const { ipcMain } = require('electron');
ipcMain.handle('read-file', async (event, filePath) => {
const content = await fs.promises.readFile(filePath, 'utf-8');
return content;
});
ipcMain.on('save-file', (event, { path, content }) => {
fs.writeFileSync(path, content);
event.reply('file-saved', { success: true });
});
```
### Renderer Process
```javascript
// Using exposed API from preload
const content = await window.electronAPI.readFile('/path/to/file');
```
## Window Management
```javascript
const { BrowserWindow } = require('electron');
function createWindow() {
const win = new BrowserWindow({
width: 1200,
height: 800,
minWidth: 800,
minHeight: 600,
webPreferences: {
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
}
});
// Handle window events
win.on('closed', () => {
// Cleanup
});
// Load content
if (process.env.NODE_ENV === 'development') {
win.loadURL('http://localhost:3000');
win.webContents.openDevTools();
} else {
win.loadFile('dist/index.html');
}
}
```
## Auto Updates
```javascript
const { autoUpdater } = require('electron-updater');
autoUpdater.on('update-available', () => {
// Notify user
});
autoUpdater.on('update-downloaded', () => {
autoUpdater.quitAndInstall();
});
app.whenReady().then(() => {
autoUpdater.checkForUpdatesAndNotify();
});
```
## Native Modules
- Use electron-rebuild for native dependencies
- Consider node-addon-api for custom modules
- Test native modules on all platforms
- Handle architecture differences (x64, arm64)
## Performance
- Minimize main process blocking
- Use web workers for heavy computation
- Implement lazy loading
- Profile with DevTools
## Testing
- Use Spectron or Playwright for E2E tests
- Unit test main process logic
- Test IPC handlers
- Test on all target platforms
## Building and Distribution
- Use electron-builder for packaging
- Configure proper app signing
- Set up auto-update infrastructure
- Test installers on all platforms
© Mindrally · Apache-2.0 · Mindrally/skills