Skip to content

/desktop-packaging-tauri

Tauri 2.x bundling, code signing, auto-updater, platform installers, CI/CD

shell
$ npx -y skills add agents-inc/skills --skill desktop-packaging-tauri --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/desktop-packaging-tauri
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Tauri 2.x bundling, code signing, auto-updater, platform installers, CI/CD

SKILL.md

desktop-packaging-tauri.SKILL.md
name: desktop-packaging-tauri
description: Tauri 2.x bundling, code signing, auto-updater, platform installers, CI/CD

Tauri 2.x Bundling & Distribution

> **Quick Guide:** Configure bundling in `tauri.conf.json` under `bundle`. Platform targets: NSIS/MSI (Windows), DMG/app bundle (macOS), deb/rpm/AppImage (Linux). Code signing is required for macOS distribution (Apple notarization) and recommended for Windows (SmartScreen). The auto-updater uses Ed25519 (Minisign) signatures -- generate keys with `cargo tauri signer generate`, set `TAURI_SIGNING_PRIVATE_KEY` at build time. Cross-platform CI uses `tauri-apps/tauri-action` with a matrix strategy. Optimize binary size with `[profile.release]` settings in `Cargo.toml`. > > **Current version:** Tauri 2.x (stable). Updater artifacts use `createUpdaterArtifacts: true` (not the v1 `"v1Compatible"` unless migrating).

---

<critical_requirements>

CRITICAL: Before Using This Skill

> **All code must follow project conventions in CLAUDE.md** (kebab-case, named exports, import ordering, `import type`, named constants)

**(You MUST set `TAURI_SIGNING_PRIVATE_KEY` as an environment variable at build time for updater artifacts -- never commit the private key)**

**(You MUST configure code signing for macOS distribution -- unsigned apps are blocked by Gatekeeper)**

**(You MUST use `bundle.identifier` as a valid reverse-domain string -- it is used for code signing, app data paths, and store submissions)**

**(You MUST build platform-specific installers on their native OS -- cross-compilation is limited to NSIS via `cargo-xwin`)**

**(You MUST set `createUpdaterArtifacts: true` in `bundle` to generate `.sig` files alongside installers)**

</critical_requirements>

---

**Auto-detection:** tauri.conf.json bundle, cargo tauri build, bundle targets, NSIS, MSI, DMG, AppImage, deb, rpm, code signing, notarization, APPLE_SIGNING_IDENTITY, certificateThumbprint, tauri-plugin-updater, createUpdaterArtifacts, TAURI_SIGNING_PRIVATE_KEY, sidecar, externalBin, tauri-action, cargo tauri signer, Minisign, installer hooks

**When to use:**

  • Configuring `tauri.conf.json` bundle settings (targets, icons, resources, identifier)
  • Building platform-specific installers (NSIS, MSI, DMG, deb, rpm, AppImage)
  • Setting up macOS code signing and Apple notarization
  • Setting up Windows code signing (OV/EV certificates, Azure Trusted Signing)
  • Configuring the auto-updater plugin with Ed25519 signature verification
  • Optimizing Tauri app binary size (Rust release profile, frontend bundle)
  • Bundling sidecar binaries or extra resources
  • Creating GitHub Actions CI/CD for cross-platform builds
  • Customizing NSIS installers with hooks or templates

**When NOT to use:**

  • Tauri command/IPC bridge, permissions, plugins, window management (use the Tauri framework skill)
  • Frontend framework or build tool configuration (separate skills)
  • General Rust programming or Cargo configuration not specific to Tauri bundling
  • Mobile distribution to App Store / Google Play (different workflow)

**Key patterns covered:**

  • Bundle configuration in `tauri.conf.json` ([examples/core.md](examples/core.md))
  • Platform-specific installer options ([examples/core.md](examples/core.md))
  • macOS code signing and notarization ([examples/code-signing.md](examples/code-signing.md))
  • Windows code signing ([examples/code-signing.md](examples/code-signing.md))
  • Auto-updater setup with Ed25519 signatures ([examples/updater.md](examples/updater.md))
  • Binary size optimization ([examples/core.md](examples/core.md))
  • Sidecar binaries and resources ([examples/core.md](examples/core.md))
  • GitHub Actions cross-platform CI/CD ([examples/ci-cd.md](examples/ci-cd.md))
  • NSIS installer hooks and customization ([examples/core.md](examples/core.md))

**Detailed resources:**

  • [examples/core.md](examples/core.md) - Bundle config, platform targets, size optimization, sidecars, NSIS hooks
  • [examples/code-signing.md](examples/code-signing.md) - macOS notarization, Windows signing, CI/CD signing setup
  • [examples/updater.md](examples/updater.md) - Auto-updater plugin, key generation, endpoint format, JS/Rust usage
  • [examples/ci-cd.md](examples/ci-cd.md) - GitHub Actions workflow, matrix strategy, secrets
  • [reference.md](reference.md) - Bundle config field reference, CLI commands, platform target table

---

<philosophy>

Philosophy

Tauri's bundling system produces small, native installers by leveraging the OS system webview instead of bundling a browser engine. The typical binary is 5-15 MB compared to 150+ MB for alternatives. Distribution requires platform-specific steps: code signing and notarization for macOS, SmartScreen-friendly signing for Windows, and package manager formats for Linux.

**The bundling workflow:**

1. Configure `tauri.conf.json` bundle section (identifier, icons, targets) 2. Set up code signing for target platforms 3. Configure the updater plugin with Ed25519 keys 4. Build with `cargo tauri build` (produces installer + `.sig` files) 5. Distribute via CI/CD pipeline with platform matrix

**Key constraints:**

  • Cross-compilation is limited -- build macOS on macOS, Windows on Windows (NSIS is the exception via `cargo-xwin`)
  • Code signing requires platform-specific certificates and accounts (Apple Developer, Windows code signing cert)
  • The updater requires Ed25519 signatures -- this cannot be disabled
  • AppImage bundles all dependencies (~70+ MB) while deb/rpm rely on system packages (~2-6 MB)

</philosophy>

---

<patterns>

Core Patterns

Pattern 1: Bundle Configuration

The `bundle` section in `tauri.conf.json` controls all packaging behavior. The `identifier` is the most important field -- it must be a unique reverse-domain string used for app data paths, code signing, and store submissions.

{
  "bundle": {
    "active": true,
    "targets": "all",
    "identifier": "com.mycompany.myapp",
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withagents-inc-skills

The official skills marketplace for Agents Inc. 150+ 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?

Get the whole plugin, auto-invoked