# electron

Правило для Cursor задаёт команде единый стиль разработки на Electron: контекстная изоляция, безопасный contextBridge, IPC через invoke и кросс-платформенные пути.

- правило · `type=rule` · Cursor · ★ 3579
- Автор: sanjeed5
- Лицензия: CC0-1.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/electron.mdc
- Обновлён: 2026-05-19
- HTML: https://affpapa.org/nevibecode/rules/electron

## Что делает

Это правило подключается к Cursor и начинает работать на файлах `**/*.{js,jsx}`. Оно описывает, как писать Electron-приложения начиная с версии 28: проект собирается через Electron Forge, шаблон — Vite + TypeScript, имена файлов через дефис.

Безопасность здесь не обсуждается, а предписывается. `contextIsolation` остаётся включённым, `sandbox: true` рекомендуется, а наружу через `contextBridge.exposeInMainWorld` отдаются только конкретные функции с проверкой аргументов. Прямая передача `ipcRenderer.send` в окно считается ошибкой, потому что рендерер получает возможность слать произвольные IPC-сообщения. Для запросов с ответом правило требует `ipcMain.handle` и `ipcRenderer.invoke` вместо пары `send`/`on`, которая ловит гонки.

Дальше идут мелочи, которые обычно забывают: строгий CSP в `index.html`, расширение `.mjs` для ESM в main- и preload-скриптах, `await` для импортов до `app.whenReady()`, `path.join` и `os.tmpdir()` вместо склейки строк. Линтер и тесты прописаны в `package.json` и запускаются в pre-commit. Учтите: песочные preload-скрипты не поддерживают ESM-импорты, их придётся собирать в бандл, если нужны внешние модули.

## Установка

### Cursor (родная платформа)

**Вручную: положить файлы**
- Файл: `.cursor/rules/electron.mdc` — Во frontmatter: description, globs, alwaysApply

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/electron.md` — Поле paths во frontmatter ограничивает файлы: globs из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/instructions/electron.instructions.md` — Поле applyTo задаёт, к каким файлам применять: globs из источника → applyTo

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/electron.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/electron.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/electron.mdc

## Когда брать
- закрыть рендереру доступ к произвольным IPC-вызовам
- убрать гонки в запросах между окном и main-процессом
- собрать пути к файлам так, чтобы работало и на Windows, и на macOS
- подключить строгий CSP и не сломать загрузку скриптов
- перевести проект на ESM в Electron 28+

## Примеры запросов агенту
- Проверь preload-скрипт: не отдаём ли мы наружу лишние методы через contextBridge?
- Перепиши этот запрос данных на ipcMain.handle и ipcRenderer.invoke
- Замени склейку путей на path.join и os.tmpdir()

## Похожие
- [electron-development](https://affpapa.org/nevibecode/skills/mindrally-electron-development.md) — скилл · 1300 установок
- [electron-pro](https://affpapa.org/nevibecode/agents/electron-pro.md) — субагент · 376 установок
- [electron-best-practices](https://affpapa.org/nevibecode/skills/electron-best-practices.md) — скилл · 820 установок
- [electron-dev](https://affpapa.org/nevibecode/skills/electron-dev.md) — скилл · 305 установок
- [electron-builder](https://affpapa.org/nevibecode/skills/electron-builder.md) — скилл · 392 установки
- [electron-chromium-upgrade](https://affpapa.org/nevibecode/skills/electron-chromium-upgrade.md) — скилл · 618 установок

Из того же набора: [sanjeed5/awesome-cursor-rules-mdc](https://affpapa.org/nevibecode/by/sanjeed5/awesome-cursor-rules-mdc.md) — 69 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
