ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming,…
Tauri 2.x commands, IPC bridge, permission system, plugins, window management, system tray, packaging
Claude Code
$ npx -y skills add agents-inc/skills --skill desktop-framework-tauri --agent claude-code
Codex
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a codex -y
Cursor
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a cursor -y
Gemini CLI
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a gemini-cli -y
GitHub Copilot
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a github-copilot -y
OpenCode
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a opencode -y
Windsurf
$ npx skills add agents-inc/skills --skill desktop-framework-tauri -a windsurf -y
name: desktop-framework-tauri description: Tauri 2.x commands, IPC bridge, permission system, plugins, window management, system tray, packaging
> **Quick Guide:** Tauri 2.x uses system webviews (not bundled Chromium) with a Rust backend. Define Rust commands with `#[tauri::command]`, invoke from frontend via `invoke()` from `@tauri-apps/api/core`. Every sensitive operation requires an explicit permission grant in a capability file. Plugins follow a dual-install pattern: Cargo crate + npm package. Tauri 2 supports desktop (Windows, macOS, Linux) and mobile (iOS, Android). > > **Current version:** Tauri 2.x (stable, 2024+). Tauri 1.x is legacy and uses a fundamentally different security model (allowlist vs capabilities).
---
<critical_requirements>
**(You MUST use the Tauri 2.x capability/permission system -- the v1 allowlist is removed)**
**(You MUST register every command in `tauri::generate_handler![]` -- unregistered commands silently fail on invoke)**
**(You MUST add plugin permissions to a capability file -- plugins with missing permissions throw runtime errors)**
**(You MUST use `#[cfg_attr(mobile, tauri::mobile_entry_point)]` on `pub fn run()` for mobile support)**
**(You MUST use `@tauri-apps/api/core` for `invoke()` -- not the removed `@tauri-apps/api/tauri` path from v1)**
</critical_requirements>
---
**Auto-detection:** Tauri, tauri.conf.json, src-tauri, tauri::command, tauri::Builder, invoke, @tauri-apps/api, tauri-plugin, capabilities, #[tauri::command], generate_handler, AppHandle, WebviewWindow, TrayIconBuilder
**When to use:**
**When NOT to use:**
**Key patterns covered:**
**Detailed resources:**
---
<philosophy>
Tauri is **security-first, small, and native**. It uses the OS system webview instead of bundling Chromium, producing binaries 10-100x smaller than alternatives. The Rust backend provides memory safety and native performance. The permission system enforces least-privilege access -- nothing is allowed unless explicitly granted.
**Tauri vs alternatives -- when Tauri is the right choice:**
**When Tauri may NOT be the right choice:**
</philosophy>
---
<patterns>
Define commands in Rust with `#[tauri::command]`, register them with `generate_handler![]`, invoke from frontend. Commands support arguments, return values, async, and error handling.
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
// Register in main.rs or lib.rs
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");import { invoke } from "@tauri-apps/api/core";
const greeting = await invoke<string>("greet", { name: "World" });**Key point:** Arguments are passed as a single object. The Rust parameter names must match the object keys. Forgetting to register a command in `generate_handler![]` causes silent failure. See [examples/core.md](examples/core.md) for async commands, error handling, and state access.
---
Every Tauri 2 app needs at least one capability file granting permissions. Without permissions, plugin and core API ca
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.