[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M799M505MPY3FT81YNCTCSK5":3,"skill-same:01M799M505MPY3FT81YNCTCSK5":43},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":13,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":28,"install":29,"resources":42},"01M799M505MPY3FT81YNCTCSK5","electron-pro",null,"Expert in building cross-platform desktop applications using web technologies (HTML\u002FCSS\u002FJS) with the Electron framework.","bignormal\u002Faera","bignormal","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F115865544?v=4","01M799M2P9PNFDA0MDQFMW3NPN","01M799M2QDFX0CYX25ECN9B98X",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Felectron-pro\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: electron-pro\ndescription: Expert in building cross-platform desktop applications using web technologies (HTML\u002FCSS\u002FJS) with the Electron framework.\n---\n\n# Electron Desktop Developer\n\n## Purpose\n\nProvides 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.\n\n## When to Use\n\n- Building cross-platform desktop apps (VS Code, Discord style)\n- Migrating web apps to desktop with native capabilities (File system, Notifications)\n- Implementing secure IPC (Main ↔ Renderer communication)\n- Optimizing Electron memory usage and startup time\n- Configuring auto-updaters (electron-updater)\n- Signing and notarizing apps for app stores\n\n---\n\n---\n\n## 2. Decision Framework\n\n### Architecture Selection\n\n```\nHow to structure the app?\n│\n├─ **Security First (Recommended)**\n│  ├─ Context Isolation? → **Yes** (Standard since v12)\n│  ├─ Node Integration? → **No** (Never in Renderer)\n│  └─ Preload Scripts? → **Yes** (Bridge API)\n│\n├─ **Data Persistence**\n│  ├─ Simple Settings? → **electron-store** (JSON)\n│  ├─ Large Datasets? → **SQLite** (`better-sqlite3` in Main process)\n│  └─ User Files? → **Native File System API**\n│\n└─ **UI Framework**\n   ├─ React\u002FVue\u002FSvelte? → **Yes** (Standard SPA approach)\n   ├─ Multiple Windows? → **Window Manager Pattern**\n   └─ System Tray App? → **Hidden Window Pattern**\n```\n\n### IPC Communication Patterns\n\n| Pattern                        | Method               | Use Case                                        |\n| ------------------------------ | -------------------- | ----------------------------------------------- |\n| **One-Way (Renderer → Main)**  | `ipcRenderer.send`   | logging, analytics, minimizing window           |\n| **Two-Way (Request\u002FResponse)** | `ipcRenderer.invoke` | DB queries, file reads, heavy computations      |\n| **Main → Renderer**            | `webContents.send`   | Menu actions, system events, push notifications |\n\n**Red Flags → Escalate to `security-auditor`:**\n\n- Enabling `nodeIntegration: true` in production\n- Disabling `contextIsolation`\n- Loading remote content (`https:\u002F\u002F`) without strict CSP\n- Using `remote` module (Deprecated & insecure)\n\n---\n\n---\n\n### Workflow 2: Performance Optimization (Startup)\n\n**Goal:** Reduce launch time to \u003C 2s.\n\n**Steps:**\n\n1.  **V8 Snapshot**\n    - Use `electron-link` or `v8-compile-cache` to pre-compile JS.\n\n2.  **Lazy Loading Modules**\n    - Don't `require()` everything at top of `main.ts`.\n\n    ```javascript\n    \u002F\u002F Bad\n    import { heavyLib } from \"heavy-lib\";\n\n    \u002F\u002F Good\n    ipcMain.handle(\"do-work\", () => {\n      const heavyLib = require(\"heavy-lib\");\n      heavyLib.process();\n    });\n    ```\n\n3.  **Bundle Main Process**\n    - Use `esbuild` or `webpack` for Main process (not just Renderer) to tree-shake unused code and minify.\n\n---\n\n---\n\n## 4. Patterns & Templates\n\n### Pattern 1: Worker Threads (CPU Intensive Tasks)\n\n**Use case:** Image processing or parsing large files without freezing the UI.\n\n```typescript\n\u002F\u002F main.ts\nimport { Worker } from \"worker_threads\";\n\nipcMain.handle(\"process-image\", (event, data) => {\n  return new Promise((resolve, reject) => {\n    const worker = new Worker(\".\u002Fworker.js\", { workerData: data });\n    worker.on(\"message\", resolve);\n    worker.on(\"error\", reject);\n  });\n});\n```\n\n### Pattern 2: Deep Linking (Protocol Handler)\n\n**Use case:** Opening app from browser (`myapp:\u002F\u002Fopen?id=123`).\n\n```typescript\n\u002F\u002F main.ts\nif (process.defaultApp) {\n  if (process.argv.length >= 2) {\n    app.setAsDefaultProtocolClient(\"myapp\", process.execPath, [\n      path.resolve(process.argv[1]),\n    ]);\n  }\n} else {\n  app.setAsDefaultProtocolClient(\"myapp\");\n}\n\napp.on(\"open-url\", (event, url) => {\n  event.preventDefault();\n  \u002F\u002F Parse url 'myapp:\u002F\u002F...' and navigate renderer\n  mainWindow.webContents.send(\"navigate\", url);\n});\n```\n\n---\n\n---\n\n## 6. Integration Patterns\n\n### **frontend-ui-ux-engineer:**\n\n- **Handoff**: UI Dev builds the React\u002FVue app → Electron Dev wraps it.\n- **Collaboration**: Handling window controls (custom title bar), vibrancy\u002Facrylic effects.\n- **Tools**: CSS `app-region: drag`.\n\n### **devops-engineer:**\n\n- **Handoff**: Electron Dev provides build config → DevOps sets up CI pipeline.\n- **Collaboration**: Code signing certificates (Apple Developer ID, Windows EV).\n- **Tools**: Electron Builder, Notarization scripts.\n\n### **security-engineer:**\n\n- **Handoff**: Electron Dev implements feature → Security Dev audits IPC surface.\n- **Collaboration**: Defining Content Security Policy (CSP) headers.\n- **Tools**: Electronegativity (Scanner).\n\n---\n","# Electron Desktop Developer\n\n## Purpose\n\nProvides 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.\n\n## When to Use\n\n- Building cross-platform desktop apps (VS Code, Discord style)\n- Migrating web apps to desktop with native capabilities (File system, Notifications)\n- Implementing secure IPC (Main ↔ Renderer communication)\n- Optimizing Electron memory usage and startup time\n- Configuring auto-updaters (electron-updater)\n- Signing and notarizing apps for app stores\n\n---\n\n---\n\n## 2. Decision Framework\n\n### Architecture Selection\n\n```\nHow to structure the app?\n│\n├─ **Security First (Recommended)**\n│  ├─ Context Isolation? → **Yes** (Standard since v12)\n│  ├─ Node Integration? → **No** (Never in Renderer)\n│  └─ Preload Scripts? → **Yes** (Bridge API)\n│\n├─ **Data Persistence**\n│  ├─ Simple Settings? → **electron-store** (JSON)\n│  ├─ Large Datasets? → **SQLite** (`better-sqlite3` in Main process)\n│  └─ User Files? → **Native File System API**\n│\n└─ **UI Framework**\n   ├─ React\u002FVue\u002FSvelte? → **Yes** (Standard SPA approach)\n   ├─ Multiple Windows? → **Window Manager Pattern**\n   └─ System Tray App? → **Hidden Window Pattern**\n```\n\n### IPC Communication Patterns\n\n| Pattern                        | Method               | Use Case                                        |\n| ------------------------------ | -------------------- | ----------------------------------------------- |\n| **One-Way (Renderer → Main)**  | `ipcRenderer.send`   | logging, analytics, minimizing window           |\n| **Two-Way (Request\u002FResponse)** | `ipcRenderer.invoke` | DB queries, file reads, heavy computations      |\n| **Main → Renderer**            | `webContents.send`   | Menu actions, system events, push notifications |\n\n**Red Flags → Escalate to `security-auditor`:**\n\n- Enabling `nodeIntegration: true` in production\n- Disabling `contextIsolation`\n- Loading remote content (`https:\u002F\u002F`) without strict CSP\n- Using `remote` module (Deprecated & insecure)\n\n---\n\n---\n\n### Workflow 2: Performance Optimization (Startup)\n\n**Goal:** Reduce launch time to \u003C 2s.\n\n**Steps:**\n\n1.  **V8 Snapshot**\n    - Use `electron-link` or `v8-compile-cache` to pre-compile JS.\n\n2.  **Lazy Loading Modules**\n    - Don't `require()` everything at top of `main.ts`.\n\n    ```javascript\n    \u002F\u002F Bad\n    import { heavyLib } from \"heavy-lib\";\n\n    \u002F\u002F Good\n    ipcMain.handle(\"do-work\", () => {\n      const heavyLib = require(\"heavy-lib\");\n      heavyLib.process();\n    });\n    ```\n\n3.  **Bundle Main Process**\n    - Use `esbuild` or `webpack` for Main process (not just Renderer) to tree-shake unused code and minify.\n\n---\n\n---\n\n## 4. Patterns & Templates\n\n### Pattern 1: Worker Threads (CPU Intensive Tasks)\n\n**Use case:** Image processing or parsing large files without freezing the UI.\n\n```typescript\n\u002F\u002F main.ts\nimport { Worker } from \"worker_threads\";\n\nipcMain.handle(\"process-image\", (event, data) => {\n  return new Promise((resolve, reject) => {\n    const worker = new Worker(\".\u002Fworker.js\", { workerData: data });\n    worker.on(\"message\", resolve);\n    worker.on(\"error\", reject);\n  });\n});\n```\n\n### Pattern 2: Deep Linking (Protocol Handler)\n\n**Use case:** Opening app from browser (`myapp:\u002F\u002Fopen?id=123`).\n\n```typescript\n\u002F\u002F main.ts\nif (process.defaultApp) {\n  if (process.argv.length >= 2) {\n    app.setAsDefaultProtocolClient(\"myapp\", process.execPath, [\n      path.resolve(process.argv[1]),\n    ]);\n  }\n} else {\n  app.setAsDefaultProtocolClient(\"myapp\");\n}\n\napp.on(\"open-url\", (event, url) => {\n  event.preventDefault();\n  \u002F\u002F Parse url 'myapp:\u002F\u002F...' and navigate renderer\n  mainWindow.webContents.send(\"navigate\", url);\n});\n```\n\n---\n\n---\n\n## 6. Integration Patterns\n\n### **frontend-ui-ux-engineer:**\n\n- **Handoff**: UI Dev builds the React\u002FVue app → Electron Dev wraps it.\n- **Collaboration**: Handling window controls (custom title bar), vibrancy\u002Facrylic effects.\n- **Tools**: CSS `app-region: drag`.\n\n### **devops-engineer:**\n\n- **Handoff**: Electron Dev provides build config → DevOps sets up CI pipeline.\n- **Collaboration**: Code signing certificates (Apple Developer ID, Windows EV).\n- **Tools**: Electron Builder, Notarization scripts.\n\n### **security-engineer:**\n\n- **Handoff**: Electron Dev implements feature → Security Dev audits IPC surface.\n- **Collaboration**: Defining Content Security Policy (CSP) headers.\n- **Tools**: Electronegativity (Scanner).\n\n---\n",{"name":5,"description":7},"main","ea31dd552a654a3ab91d1825aa37dc2e0584c095",".agents\u002Fskills\u002Felectron-pro","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera","https:\u002F\u002Fgithub.com\u002Fbignormal","2026-08-13 19:05:55",{"source":8,"skillName":5,"commands":30,"prompt":40,"zipAvailable":41},[31,34,37],{"tool":32,"command":33},"npx","npx skills add bignormal\u002Faera --skill electron-pro",{"tool":35,"command":36},"bunx","bunx skills add bignormal\u002Faera --skill electron-pro",{"tool":38,"command":39},"pnpm","pnpm dlx skills add bignormal\u002Faera --skill electron-pro","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Felectron-pro\u002FSKILL.md",true,[],[44,51,58,65,72,77],{"skillNo":45,"name":46,"nameZh":6,"description":47,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":48,"categories":49,"keywords":50,"publishedAt":18},"01M799N63452CVR344QJ1T0SPQ","learned-fixture","Synthetic learned skill used by the immutable boundary test.","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fhermes-profile-boundary\u002Fskills\u002Flearned\u002FSKILL.md",[],[],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":18},"01M799N2S7P1TE90KZJA91H0ZY","lat-md","Writing and maintaining lat.md documentation files — structured markdown that describes a project's architecture, design decisions, and test specs. Use when creating, editing, or reviewing files in the lat.md\u002F directory.","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flat-md\u002FSKILL.md",[],[],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":18},"01M799MT1H9NXGR740ME3A180F","hermes-agent","Expert in building self-improving AI agents with tool use, multi-platform messaging, and a closed learning loop. Proficient in LLM orchestration, tool integration, session management, and agent autonomy.","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhermes-agent\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":18},"01M799MN5NH7A91FM1W0827BXY","typescript-expert","TypeScript and JavaScript expert with deep knowledge of type-level programming, performance optimization, monorepo management, migration strategies, and modern tooling.","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftypescript-expert\u002FSKILL.md",[],[],{"skillNo":73,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":18},"01M799MHH4HE7G4CQXQ62KHC7P","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Flat-md\u002FSKILL.md",[],[],{"skillNo":78,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":18},"01M799M8QV81T564YVNXB5CSMD","https:\u002F\u002Fgithub.com\u002Fbignormal\u002Faera\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fhermes-agent\u002FSKILL.md",[],[]]