404kidwiz

electron-pro

6
0
# Install this skill:
npx skills add 404kidwiz/claude-supercode-skills --skill "electron-pro"

Install specific skill from multi-skill repository

# Description

Expert in building cross-platform desktop applications using web technologies (HTML/CSS/JS) with the Electron framework.

# SKILL.md


name: electron-pro
description: Expert in building cross-platform desktop applications using web technologies (HTML/CSS/JS) with the Electron framework.


Electron Desktop Developer

Purpose

Provides cross-platform desktop application development expertise specializing in Electron, IPC architecture, and OS-level integration. Builds secure, performant desktop applications using web technologies with native capabilities for Windows, macOS, and Linux.

When to Use

  • Building cross-platform desktop apps (VS Code, Discord style)
  • Migrating web apps to desktop with native capabilities (File system, Notifications)
  • Implementing secure IPC (Main ↔ Renderer communication)
  • Optimizing Electron memory usage and startup time
  • Configuring auto-updaters (electron-updater)
  • Signing and notarizing apps for app stores

---

2. Decision Framework

Architecture Selection

How to structure the app?
β”‚
β”œβ”€ **Security First (Recommended)**
β”‚  β”œβ”€ Context Isolation? β†’ **Yes** (Standard since v12)
β”‚  β”œβ”€ Node Integration? β†’ **No** (Never in Renderer)
β”‚  └─ Preload Scripts? β†’ **Yes** (Bridge API)
β”‚
β”œβ”€ **Data Persistence**
β”‚  β”œβ”€ Simple Settings? β†’ **electron-store** (JSON)
β”‚  β”œβ”€ Large Datasets? β†’ **SQLite** (`better-sqlite3` in Main process)
β”‚  └─ User Files? β†’ **Native File System API**
β”‚
└─ **UI Framework**
   β”œβ”€ React/Vue/Svelte? β†’ **Yes** (Standard SPA approach)
   β”œβ”€ Multiple Windows? β†’ **Window Manager Pattern**
   └─ System Tray App? β†’ **Hidden Window Pattern**

IPC Communication Patterns

Pattern Method Use Case
One-Way (Renderer β†’ Main) ipcRenderer.send logging, analytics, minimizing window
Two-Way (Request/Response) ipcRenderer.invoke DB queries, file reads, heavy computations
Main β†’ Renderer webContents.send Menu actions, system events, push notifications

Red Flags β†’ Escalate to security-auditor:
- Enabling nodeIntegration: true in production
- Disabling contextIsolation
- Loading remote content (https://) without strict CSP
- Using remote module (Deprecated & insecure)

---

Workflow 2: Performance Optimization (Startup)

Goal: Reduce launch time to < 2s.

Steps:

  1. V8 Snapshot

    • Use electron-link or v8-compile-cache to pre-compile JS.
  2. Lazy Loading Modules

    • Don't require() everything at top of main.ts.
      ```javascript
      // Bad
      import { heavyLib } from 'heavy-lib';

    // Good
    ipcMain.handle('do-work', () => {
    const heavyLib = require('heavy-lib');
    heavyLib.process();
    });
    ```

  3. Bundle Main Process

    • Use esbuild or webpack for Main process (not just Renderer) to tree-shake unused code and minify.

---

4. Patterns & Templates

Pattern 1: Worker Threads (CPU Intensive Tasks)

Use case: Image processing or parsing large files without freezing the UI.

// main.ts
import { Worker } from 'worker_threads';

ipcMain.handle('process-image', (event, data) => {
  return new Promise((resolve, reject) => {
    const worker = new Worker('./worker.js', { workerData: data });
    worker.on('message', resolve);
    worker.on('error', reject);
  });
});

Pattern 2: Deep Linking (Protocol Handler)

Use case: Opening app from browser (myapp://open?id=123).

// main.ts
if (process.defaultApp) {
  if (process.argv.length >= 2) {
    app.setAsDefaultProtocolClient('myapp', process.execPath, [path.resolve(process.argv[1])]);
  }
} else {
  app.setAsDefaultProtocolClient('myapp');
}

app.on('open-url', (event, url) => {
  event.preventDefault();
  // Parse url 'myapp://...' and navigate renderer
  mainWindow.webContents.send('navigate', url);
});

---

6. Integration Patterns

frontend-ui-ux-engineer:

  • Handoff: UI Dev builds the React/Vue app β†’ Electron Dev wraps it.
  • Collaboration: Handling window controls (custom title bar), vibrancy/acrylic effects.
  • Tools: CSS app-region: drag.

devops-engineer:

  • Handoff: Electron Dev provides build config β†’ DevOps sets up CI pipeline.
  • Collaboration: Code signing certificates (Apple Developer ID, Windows EV).
  • Tools: Electron Builder, Notarization scripts.

security-engineer:

  • Handoff: Electron Dev implements feature β†’ Security Dev audits IPC surface.
  • Collaboration: Defining Content Security Policy (CSP) headers.
  • Tools: Electronegativity (Scanner).

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.