ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
Tauri 2.x deny-by-default security model, capabilities, permissions, scopes, ACL
$ npx -y skills add agents-inc/skills --skill desktop-security-tauri --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/desktop-security-tauriContext preview
The summary Claude sees to decide when to auto-load this skill.
Tauri 2.x deny-by-default security model, capabilities, permissions, scopes, ACL
name: desktop-security-tauri description: Tauri 2.x deny-by-default security model, capabilities, permissions, scopes, ACL
> **Quick Guide:** Tauri 2 uses a deny-by-default security model. Nothing is accessible unless explicitly granted in a capability file (`src-tauri/capabilities/*.json`). Capabilities bind permissions to specific windows. Permissions follow the `plugin:command` identifier pattern. Scopes restrict operations to specific paths or URLs with allow/deny lists (deny always wins). Every plugin and custom command needs a permission grant -- missing permissions cause runtime errors, not compile errors. > > **Current version:** Tauri 2.x (stable). Tauri 1.x used a boolean allowlist which is completely removed in v2.
---
<critical_requirements>
> **All code must follow project conventions in CLAUDE.md** (kebab-case, named exports, import ordering, `import type`, named constants)
**(You MUST create at least one capability file in `src-tauri/capabilities/` -- without it, ALL plugin and core API calls fail at runtime)**
**(You MUST include `core:default` in every capability -- without it, basic app lifecycle commands fail)**
**(You MUST scope permissions to specific windows using the `windows` array -- a window not listed in any capability has zero IPC access)**
**(You MUST use deny scopes to restrict sensitive paths -- deny ALWAYS takes precedence over allow)**
**(You MUST use `plugin:permission-name` format for plugin permissions and plain `permission-name` for app commands)**
</critical_requirements>
---
**Auto-detection:** Tauri capabilities, src-tauri/capabilities, capability file, permissions, ACL, allow-scope, deny-scope, core:default, fs:allow, shell:allow, http:allow, permission set, remote domain, CapabilityRemote, desktop-schema.json, mobile-schema.json, scope allow deny, Tauri security, tauri permission denied, capability identifier
**When to use:**
**When NOT to use:**
**Key patterns covered:**
**Detailed resources:**
---
<philosophy>
Tauri 2 implements a **deny-by-default** access control model. Every potentially dangerous operation (filesystem, network, shell, clipboard) is blocked until explicitly granted in a capability file. This is a fundamental shift from v1's boolean allowlist -- instead of toggling features on/off globally, you define granular permissions scoped to specific windows, platforms, and paths.
**The security hierarchy:**
1. **Capabilities** - Bind permissions to windows/webviews. A window not listed in any capability has zero IPC access. 2. **Permissions** - Define what operations are allowed or denied. Follow the `plugin:command` identifier pattern. 3. **Scopes** - Restrict WHERE operations can act (paths, URLs). Deny always supersedes allow.
**Key design decisions:**
**When to invest in fine-grained capabilities:**
**When simple capabilities suffice:**
</philosophy>
---
<patterns>
Every Tauri 2 app needs at least one capability file in `src-tauri/capabilities/`. The file grants permissions to specific windows.
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"dThe 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?
Repo: agents-inc/skills
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking, virtual keys, and production…
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client patterns
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output, model management, and…
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning, deployments, and training
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling, embeddings, image generation,…