> electron
Assists with building cross-platform desktop applications using Electron. Use when architecting main/renderer process communication, configuring secure contexts, implementing auto-updates, or packaging apps for Windows, macOS, and Linux. Trigger words: electron, desktop app, browserwindow, ipc, auto-update, electron-builder.
curl "https://skillshub.wtf/TerminalSkills/skills/electron?format=md"Electron
Overview
Electron is a framework for building cross-platform desktop applications using web technologies. It combines a Node.js main process for system access and window management with Chromium renderer processes for the UI, communicating via IPC with context isolation and preload scripts for security.
Instructions
- When setting up the architecture, create a main process for window management and system APIs, renderer processes for UI, and preload scripts to expose a controlled API bridge via
contextBridge.exposeInMainWorld(). - When implementing IPC, use
ipcMain.handle()/ipcRenderer.invoke()for async request-response patterns, andwebContents.send()for main-to-renderer push communication. - When accessing native APIs, use dialogs, file system, clipboard, notifications, and shell operations in the main process, exposing them to the renderer through the preload bridge.
- When configuring security, keep
contextIsolation: trueandnodeIntegration: false(defaults), set CSP headers on all windows, sandbox renderer processes, and validate all IPC inputs in the main process. - When packaging the app, use
electron-builderorelectron-forgeto produce platform-specific installers (NSIS/MSI for Windows, DMG for macOS, AppImage/deb for Linux) with code signing and notarization. - When implementing auto-updates, use
electron-updaterwith GitHub Releases or a custom server, configure delta updates for smaller downloads, and verify update signatures.
Examples
Example 1: Build a file manager with native dialogs
User request: "Create an Electron app that browses and manages files with native dialogs"
Actions:
- Set up main process with
BrowserWindowand preload script exposing file system commands - Implement IPC handlers for
dialog.showOpenDialog(),dialog.showSaveDialog(), and file operations - Build a React-based renderer UI for browsing directories and previewing files
- Add context menus and keyboard shortcuts for file operations
Output: A cross-platform file manager with native OS dialogs and secure IPC-based file access.
Example 2: Add auto-updates with staged rollout
User request: "Set up auto-updates for my Electron app using GitHub Releases"
Actions:
- Configure
electron-builderwithpublishsettings pointing to GitHub Releases - Add
electron-updaterin the main process with update check on startup - Implement update UI in the renderer showing download progress and restart prompt
- Configure staged rollout to update a percentage of users first
Output: An Electron app that automatically checks for updates, downloads them in the background, and prompts the user to restart.
Guidelines
- Always use context isolation and preload scripts; never enable
nodeIntegrationin the renderer. - Validate all IPC message data in the main process since the renderer is untrusted like a browser.
- Use
ipcMain.handle()/ipcRenderer.invoke()for async operations over the oldersend/onpattern. - Minimize main process work to keep it responsive for window management and IPC routing.
- Set CSP headers on all windows:
default-src 'self'; script-src 'self'. - Test on all target platforms since Windows, macOS, and Linux behave differently for menus, shortcuts, and file paths.
- Handle the
renderer-process-goneevent and monitor memory usage withprocess.memoryUsage().
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> xero-accounting
Integrate with the Xero accounting API to sync invoices, expenses, bank transactions, and contacts — and generate financial reports like P&L and balance sheet. Use when: connecting apps to Xero, automating bookkeeping workflows, syncing accounting data, or pulling financial reports programmatically.
> windsurf-rules
Configure Windsurf AI coding assistant with .windsurfrules and workspace rules. Use when: customizing Windsurf for a project, setting AI coding standards, creating team-shared Windsurf configurations, or tuning Cascade AI behavior.