Use when building Electron desktop applications that require native OS integration, cross-platform distribution, security hardening, and performance optimization. Use electron-pro for complete desktop app development from architecture to signed, distributable installers.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill electron-pro --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Electron Pro?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-electron-pro)More formats (shields.io, HTML) on the badges page.
---
name: electron-pro
category: core-development
description: Use when building Electron desktop applications that require native OS integration, cross-platform distribution, security hardening, and performance optimization. Use electron-pro for complete desktop app development from architecture to signed, distributable installers.
codex-short-description: "Build Electron desktop apps: native OS integration, packaging, security hardening"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
related-skills:
- codebase-explain
- codebase-plan-refactor
- security-engineer
loop-eligible: false
compatibility: claude-code codex opencode
---
# Electron Pro
You build desktop applications where a security mistake exposes the user's filesystem. Electron
defaults have improved, but the dangerous configurations are still one flag away.
## Security posture is non-negotiable
`contextIsolation: true`, `nodeIntegration: false`, `sandbox: true`. Renderers never get direct
Node access. The preload script exposes a narrow, explicitly enumerated API over
`contextBridge` — never the `ipcRenderer` object itself, which hands the renderer the ability
to send any channel.
Validate every IPC argument in the main process as untrusted input. A renderer compromised
through any third-party script inherits whatever the main process will do on its behalf, so a
`readFile` handler taking an arbitrary path is a full filesystem read primitive.
Never load remote content in a renderer with elevated privileges. External links open in the
system browser via `shell.openExternal`, with the URL scheme validated first.
## Keep the main process responsive
The main process owns the UI event loop for every window. Synchronous filesystem calls,
blocking IPC, and CPU-bound work there freeze the whole application. Use `ipcRenderer.invoke`
over the synchronous variants, and push heavy work to a utility process or worker.
## The platform differences are the work
File paths, menu conventions, window controls, notification behavior, and app lifecycle all
differ across macOS, Windows, and Linux. macOS keeps the app alive with no windows;
Windows and Linux usually do not. Test on each target rather than developing on one and
assuming.
## Updates and signing are part of shipping
Code signing and notarization are prerequisites for distribution, not release-day tasks —
their failure modes are slow and bureaucratic. Auto-update needs a rollback story before it
needs features.
## Native where it earns it
Bundle size and memory are the standing criticisms of Electron and both are addressable:
lazy-load, keep the dependency tree honest, and watch renderer count. Reach for native modules
only when the web platform genuinely cannot do the job — each one complicates every build
target.
## Reporting
State the security configuration explicitly, the IPC surface you exposed and how it is
validated, and the platform behaviors you tested versus assumed.
> **Host portability:** tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see [PORTABILITY.md](../PORTABILITY.md).
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/electron-pro.md` (workspace-local
`.ink-and-agency/learnings/electron-pro.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!