Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Builds and reviews desktop apps. Use when choosing a stack, signing or notarizing releases, adding auto-update, or reviewing Electron/Tauri security.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Build cross-platform and native desktop apps with correct architecture, security defaults, and distribution pipelines.
| Need | Recommended Tool / Framework |
|---|---|
| Cross-platform (JS/TS) | Electron — mature ecosystem, large community, Chromium-based |
| Cross-platform (Go + Web) | Wails — Go backend with an OS webview; verify target dependencies and selected major's release status at Wails |
| Cross-platform (.NET desktop) | Avalonia — Windows/macOS/Linux XAML UI; self-contained deployment bundles .NET, but target native libraries still matter |
| Cross-platform (Rust + Web) | Tauri — smaller bundles, stronger security model, OS webview, also targets iOS/Android from the same codebase (stable since Tauri 2.0, Oct 2024) |
| Cross-platform (Dart) | Flutter Desktop — shared mobile/desktop codebase; strongest on macOS, Windows/Linux slightly behind on package maturity |
| Cross-platform (.NET) | .NET MAUI — Windows (WinUI 3 host) + macOS (Mac Catalyst) only; no first-party native Linux desktop target (check the .NET MAUI supported-platforms docs, including any third-party Linux backends, before promising Linux) |
| Cross-platform (Kotlin) | Compose Multiplatform — shared Android/desktop UI |
| Native macOS | SwiftUI (default for new apps) + AppKit interop for advanced window/menu chrome |
| Native Windows | WPF for established Windows-only line-of-business apps; WinUI 3 when Windows App SDK integration fits the product |
| Native Linux | GTK (GNOME), Qt (KDE) |
| Auto-update | Pick by toolchain: electron-builder → NSIS target + electron-updater; Electron Forge → built-in autoUpdater (Squirrel.Windows via electron-winstaller, or MSIX); Tauri's built-in updater; Sparkle 2 (macOS) |
| Code signing | Apple notarization via notarytool; Windows Authenticode via Azure Artifact Signing (formerly "Trusted Signing") or a traditional EV/OV cert; Linux (distro-specific) |
| Installers | electron-builder, Tauri bundler, create-dmg, Inno Setup, NSIS, AppImage/Flatpak/Snap |
| Tauri capability/plugin migration | references/tauri-2-migration.md — load for migration and WebView2 deployment |
| Verify Developer ID .app signature and ticket | scripts/check_signing.sh — macOS only; non-macOS and unsupported artifacts fail |
| Validate signing configuration before CI | scripts/check_signing_readiness.py — static schema checks; --strict requires referenced files locally, without inspecting key material |
A meaningful fraction of "we need a desktop app" requests are better served by a PWA — no code signing, no update server, no per-OS QA matrix. Push back and confirm desktop is the right call before opening the decision tree below:
manifest.json + service worker) likely covers it with a fraction of the packaging and signing burden.Desktop framework selection (after confirming a PWA won't do):
START
├─ Need full native platform integration and max performance?
│ ├─ macOS only → SwiftUI (+ AppKit for custom chrome)
│ ├─ Windows only → WPF for an existing WPF codebase or WinUI 3 for Windows App SDK integration
│ └─ Linux only → GTK or Qt
├─ Have a web app and want desktop distribution?
│ ├─ Team knows Node.js, needs mature plugins / deepest native integration → Electron
│ ├─ Bundle size, memory, and a stronger default security posture matter, team can absorb some Rust → Tauri
│ ├─ Go backend team → Wails (OS webview; verify release status and native dependencies)
│ └─ Also need iOS/Android from the same codebase → Tauri (mobile targets stable since 2.0; feature parity with desktop plugins still catching up)
├─ Already have a Flutter mobile app?
│ └─ Flutter Desktop (shared codebase; strongest on macOS, fewer production-grade Windows/Linux packages)
├─ Already have a Compose Android app?
│ └─ Compose Multiplatform Desktop
├─ .NET team needing desktop?
│ ├─ Windows + macOS only, want one XAML codebase across mobile too → .NET MAUI (no native Linux target yet)
│ ├─ Windows/macOS/Linux desktop with XAML → Avalonia (self-contained publish per target RID)
│ └─ Windows-only → WPF or WinUI 3
├─ Bundle size and memory footprint critical?
│ └─ Tauri or Wails (OS webview); benchmark the actual release artifacts and full process tree
└─ Security-sensitive app?
└─ Tauri (no Node.js in renderer, capability-scoped IPC, an explicitly configured CSP) — or Electron with `contextIsolation`/`sandbox` enforced as non-negotiables if the team can't take on Rust
webkit2gtk-4.0 vs 4.1 (soup2 vs soup3) differs. WebKitGTK 2.52 removed libsoup2 support in March 2026; check package availability on the minimum supported distro. Pin and test against your minimum supported distro before committing to Tauri on Linux.Electron apps run two process types: the main process (Node.js, one per app) and renderer processes (Chromium, one per window).
Process model and IPC:
contextBridge.exposeInMainWorld.ipcMain.handle / ipcRenderer.invoke).Security model (mandatory):
contextIsolation: true — always. No exceptions.nodeIntegration: false — always. Preload scripts are the only bridge.webSecurity: true — never disable in production.sandbox: true — renderer default since Electron 20; keep it explicit because enabling Node integration disables it.webContents.loadURL to known origins; never load arbitrary remote content.Key anti-patterns:
nodeIntegration: true in BrowserWindow options — exposes full Node.js to renderer.webSecurity to work around CORS — opens the app to remote code execution.Tauri apps pair a Rust backend with a webview frontend (the OS-native webview, not bundled Chromium).
Core design:
#[tauri::command]) exposed to the frontend via an IPC bridge.tauri-plugin-shell's sidecar API) — useful when logic can't or shouldn't be ported to Rust/JS.Security advantages over Electron (no Node.js in the frontend, an explicitly configured CSP, capability-scoped IPC, smaller attack surface) and tradeoffs (cross-platform webview differences, Linux WebKitGTK fragmentation, smaller plugin ecosystem, Rust required, mobile plugin parity still catching up): references/framework-selection.md.
Use framework dialogs for file access (never raw fs in the renderer), follow each platform's tray/menu-bar and shortcut conventions, register protocol handlers and file associations deliberately, and treat local storage as the source of truth with sync-and-merge rather than fetch. Details for file system, tray and menus, native integrations, and offline-first: references/desktop-integration.md.
Update recovery gate.
An updater is production-ready only when the previous signed build can be restored after download failure, signature rejection, crash-on-launch, or incompatible local-data migration. Test interrupted download, offline launch, downgrade protection, and rollback on each supported OS. Keep application-data migrations backward compatible for at least the rollback window, or explicitly block auto-update until recovery is possible.
Sign for every target OS: macOS Developer ID plus notarytool notarization (altool is removed), Windows Authenticode via Azure Artifact Signing or a hardware-token/HSM EV/OV certificate, and the Linux channel's own trust model. Pick one auto-update toolchain per framework (Tauri updater with Minisign keys, electron-updater on NSIS, or Electron's built-in autoUpdater with Squirrel.Windows/MSIX, Sparkle 2 on macOS) and prefer hosted update endpoints over a bespoke server. Signing detail, update-server burden, installers, auto-update mechanisms, and app-store trade-offs: references/distribution-and-signing.md.
package.json dependencies vs devDependencies. Use electron-builder's pruning or Tauri's Rust release profile.tauri.conf.json allowlist, run cargo tauri migrate, review generated capability files, update all plugin imports from tauri::api::* to @tauri-apps/plugin-*, and update frontend invoke calls to @tauri-apps/api/core.references/platform-traps.md for current platform requirements.software-accessibility and audit evidence to qa-testing-accessibility (see the pointer below).autoUpdater with Squirrel.Windows/MSIX for Forge). Implement from day one; retrofitting auto-update is expensive.Whether the EAA applies is a question for qualified counsel; technical conformance mapping is in software-accessibility, legal landscape and audit evidence in qa-testing-accessibility, and desktop-specific checks in platform-traps.
Before choosing a release, read its support/compatibility notes through data/sources.json. For a signing or update pipeline, verify the chosen channel's eligibility, package requirements, and updater API at the linked distribution sources. Record the checked release and target OS/architecture in the recommendation; use measured artifacts for footprint claims.
When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Configures and hardens Claude Code and Codex MCP servers. Use when connecting databases, APIs, SaaS, building servers, or serving a clearance-filtered knowledge base.
日本語の概要は準備中です。原文の説明を表示しています。
Owns instruction files: AGENTS.md, CLAUDE.md, personal and repo rules. Use when writing, pruning, auditing them, sharing rules across Claude and Codex, or fixing ignored rules.
日本語の概要は準備中です。原文の説明を表示しています。
Creates and audits agent skills: SKILL.md, references, scripts, runtime metadata. Use when writing, validating, or security-reviewing a skill, or fixing truncated skill listings.
日本語の概要は準備中です。原文の説明を表示しています。
Adds per-skill learnings loops for dated patterns, mistakes, and domain facts. Use when wiring skill memory, consolidation, or drift audits.
日本語の概要は準備中です。原文の説明を表示しています。
Chooses subagent, team, workflow, or debate and launches it on Claude Code or Codex. Use when delegating, running agent review boards, or installing shared agents.
日本語の概要は準備中です。原文の説明を表示しています。