ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming,…
Electron Forge build toolchain -- makers, publishers, code signing, fuses, hooks, CI/CD packaging
Claude Code
$ npx -y skills add agents-inc/skills --skill desktop-packaging-electron-forge --agent claude-code
Codex
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a codex -y
Cursor
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a cursor -y
Gemini CLI
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a gemini-cli -y
GitHub Copilot
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a github-copilot -y
OpenCode
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a opencode -y
Windsurf
$ npx skills add agents-inc/skills --skill desktop-packaging-electron-forge -a windsurf -y
name: desktop-packaging-electron-forge description: Electron Forge build toolchain -- makers, publishers, code signing, fuses, hooks, CI/CD packaging
> **Quick Guide:** Electron Forge v7 is the official Electron build toolchain. Configure via `forge.config.ts` with typed imports from `@electron-forge/shared-types`. Use **makers** to produce platform-specific installers (Squirrel for Windows, DMG/ZIP for macOS, deb/rpm for Linux). Use **publishers** to upload artifacts (GitHub Releases, S3, Snapcraft). Always code-sign production builds -- macOS requires both signing and notarization. Enable Electron **Fuses** to harden the binary at package time. Use **hooks** (`prePackage`, `postMake`) for custom build logic. Electron itself MUST be a `devDependency` -- Forge bundles only `dependencies`.
---
<critical_requirements>
**(You MUST place `electron` in `devDependencies` -- Forge provides the Electron binary during packaging; placing it in `dependencies` bloats the app by ~200MB)**
**(You MUST code-sign macOS builds with `osxSign` and `osxNotarize` in `packagerConfig` -- unsigned apps are blocked by Gatekeeper on macOS 10.15+)**
**(You MUST enable `asar: true` in `packagerConfig` -- without ASAR, your source code ships as plain-text files readable by any user)**
**(You MUST store signing credentials in environment variables -- never hardcode secrets in `forge.config.ts`)**
**(You MUST enable Fuses (`FuseV1Options.RunAsNode: false`, `OnlyLoadAppFromAsar: true`) for production security -- without them, attackers can bypass ASAR integrity and run arbitrary Node.js code)**
</critical_requirements>
---
**Auto-detection:** Electron Forge, electron-forge, forge.config.ts, forge.config.js, @electron-forge, maker-squirrel, maker-dmg, maker-deb, maker-rpm, maker-zip, maker-flatpak, maker-snap, maker-appx, maker-wix, maker-pkg, maker-msix, publisher-github, publisher-s3, publisher-snapcraft, plugin-vite, plugin-webpack, plugin-fuses, FusesPlugin, osxSign, osxNotarize, electron-forge make, electron-forge publish, electron-forge package
**When to use:**
**When NOT to use:**
**Key patterns covered:**
---
<philosophy>
Electron Forge is a **unified build pipeline** that composes first-party Electron tools (`@electron/packager`, `@electron/rebuild`, `@electron/osx-sign`, `@electron/notarize`, `@electron/fuses`) into a single workflow. Rather than reimplementing build logic, Forge orchestrates existing tools through three steps:
1. **Package** -- `@electron/packager` creates the platform-specific app bundle (.app, .exe) 2. **Make** -- Makers transform the bundle into distributable installers (.dmg, .msi, .deb) 3. **Publish** -- Publishers upload make artifacts to distribution targets (GitHub, S3)
**Why Forge over alternatives:**
**Key constraint:** Forge runs makers only for the current host OS by default. Cross-platform builds require CI/CD with per-platform runners (macOS for .dmg, Windows for .exe, Linux for .deb).
</philosophy>
---
<patterns>
The configuration file defines packaging options, makers, publishers, plugins, and hooks. All fields are optional.
import type { ForgeConfig } from "@electron-forge/shared-types";
import { FusesPlugin } from "@electron-forge/plugin-fuses";
import { FuseV1Options, FuseVersion } from "@electron/fuses";
const config: ForgeConfig = {
packagerConfig: {
asar: true,
icon: "./assets/icon", // omit extension -- Forge picks .icns/.ico/.png
name: "MyApp",
executableName: "my-app",
appBundleId: "com.example.myapp",
},
makers: [
/* see Pattern 2 */
],
publishers: [
/* see Pattern 5 */
],
plugins: [
/* see Pattern 4 */
],
hooks: {
/* see Pattern 6 */
},
};
export default config;**Key constraint:** You cannot override `dir`, `arch`, `platform`, `out`, or `electronVersion` in `packagerConfig` -- Forge sets these internally.
See [examples/core.md](examples/core.md) for full configuration with makers, signing, and fuses.
---
Each maker produces a specific installer format for a target OS. Install only the makers you need.
| Maker | Package | Platform | Output | | ---------------- | -------------------------------- | ------------ | ------------------------- | | Squirrel.Windows | `@electron-forge/maker-squi
The official skills marketplace for Agents Inc. 230+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming,…
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking,…
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client…
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output,…
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning,…
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.