All skills

Tauri v2+ cross-platform app development with Rust backend. Use when configuring tauri.conf.json, implementing Rust commands (#[tauri::command]), setting up IPC patterns (invoke, emit, channels), configuring permissions/capabilities, troubleshooting build issues, or deploying desktop/mobile apps. Triggers on Tauri, src-tauri, invoke, emit, capabilities.json.

Use this Skill: https://skilld.dev/gh/nodnarbnitram/claude-code-extensions/tauri-v2

This session only. Nothing lands on disk.

referencesplugin-reference.md

≈2.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Tauri v2+ Plugin Reference

Contents

  • General Installation Pattern
  • File System
  • Dialog
  • Shell
  • HTTP
  • Store
  • Clipboard Manager
  • Notification
  • Global Shortcut
  • Updater
  • Deep Link
  • Opener
  • Process

Important: Installing a plugin is not enough. Every plugin's permissions must be explicitly granted in a capability file under src-tauri/capabilities/. Without this, plugin calls will fail silently with permission errors.

Last verified: 2026-04-02. Check the official plugin changelogs when install flow or permission names change.

General Installation Pattern

For most official plugins, the preferred installation method is using the Tauri CLI:

cargo tauri add <plugin-name>

This command automatically:

  1. Adds the Rust crate to src-tauri/Cargo.toml.
  2. Adds the JS/TS package to package.json (if applicable).
  3. Registers the plugin in src-tauri/src/lib.rs (often requiring manual verification).

1. File System (tauri-plugin-fs)

Access the local file system.

Install:

cargo tauri add fs

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_fs::init())

JS Package: @tauri-apps/plugin-fs

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["fs:default"]
}

Common permissions:

  • fs:allow-read-file: Read file contents.
  • fs:allow-write-file: Write/create files.
  • fs:allow-read-dir: List directory contents.
  • fs:allow-exists: Check if path exists.

Scopes: Path access is restricted by scopes. Common variables: $APPDATA, $HOME, $DOCUMENTS, $DOWNLOADS. Cross-reference: See capabilities-reference.md for scope examples.

2. Dialog (tauri-plugin-dialog)

Native system dialogs for file picking and messages.

Install:

cargo tauri add dialog

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_dialog::init())

JS Package: @tauri-apps/plugin-dialog

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["dialog:default"]
}

Common permissions:

  • dialog:allow-open: Open file/directory picker.
  • dialog:allow-save: Save file picker.
  • dialog:allow-message: Show message box.
  • dialog:allow-ask: Show ask dialog (Yes/No).

3. Shell (tauri-plugin-shell)

Spawn child processes or open URLs.

Install:

cargo tauri add shell

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_shell::init())

JS Package: @tauri-apps/plugin-shell

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["shell:default"]
}

Common permissions:

  • shell:allow-open: Open URLs in default browser.
  • shell:allow-execute: Execute arbitrary programs (requires heavy scoping).

Scoping: allow-execute requires defining specific programs and allowed arguments in the capability file. Cross-reference: See capabilities-reference.md for shell scope examples.

4. HTTP (tauri-plugin-http)

Perform HTTP requests from the Rust backend (bypassing CORS).

Install:

cargo tauri add http

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_http::init())

JS Package: @tauri-apps/plugin-http

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["http:default"]
}

Common permissions:

  • http:default: Basic request/response capabilities.

Scoping: Access can be restricted to specific domains or URL patterns. Cross-reference: See capabilities-reference.md for URL scope examples.

5. Store (tauri-plugin-store)

Simple key-value persistence.

Install:

cargo tauri add store

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_store::Builder::default().build())

JS Package: @tauri-apps/plugin-store

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["store:default"]
}

Common permissions:

  • store:allow-get: Retrieve values.
  • store:allow-set: Save values.
  • store:allow-load: Load store from disk.

6. Clipboard (tauri-plugin-clipboard-manager)

Read and write to the system clipboard.

Install:

cargo tauri add clipboard-manager

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_clipboard_manager::init())

JS Package: @tauri-apps/plugin-clipboard-manager

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["clipboard-manager:default"]
}

Common permissions:

  • clipboard-manager:allow-read: Read clipboard content.
  • clipboard-manager:allow-write: Write to clipboard.

7. Notification (tauri-plugin-notification)

Send native desktop notifications.

Install:

cargo tauri add notification

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_notification::init())

JS Package: @tauri-apps/plugin-notification

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["notification:default"]
}

Common permissions:

  • notification:allow-send: Trigger notifications.
  • notification:allow-request-permission: Check/ask for user permission.

8. Global Shortcut (tauri-plugin-global-shortcut)

Register system-wide keyboard shortcuts.

Install:

cargo tauri add global-shortcut

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_global_shortcut::Builder::new().build())

JS Package: @tauri-apps/plugin-global-shortcut

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["global-shortcut:default"]
}

Common permissions:

  • global-shortcut:allow-register: Register a new shortcut.
  • global-shortcut:allow-is-registered: Check if a shortcut is active.

Note: Desktop only.

9. Updater (tauri-plugin-updater)

Automated application updates.

Install:

cargo tauri add updater

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_updater::Builder::new().build())

JS Package: @tauri-apps/plugin-updater

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["updater:default"]
}

Common permissions:

  • updater:allow-check: Check for updates.
  • updater:allow-download-and-install: Execute update.

Note: Requires code signing and an update server/static JSON. Cross-reference: See updater-distribution-reference.md for signing requirements.

10. Deep Link (tauri-plugin-deep-link)

Register and handle custom URL schemes (e.g., myapp://).

Install:

cargo tauri add deep-link

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_deep_link::init())

JS Package: @tauri-apps/plugin-deep-link

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["deep-link:default"]
}

Common permissions:

  • deep-link:allow-get-current-url: Retrieve the URL that launched the app.

11. Opener (tauri-plugin-opener)

Open files or URLs using the system's default applications. Replaces shell:open for many v2 use cases.

Install:

cargo tauri add opener

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_opener::init())

JS Package: @tauri-apps/plugin-opener

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["opener:default"]
}

Common permissions:

  • opener:allow-open-url: Open a website URL.
  • opener:allow-open-path: Open a local file path with its associated app.

12. Process (tauri-plugin-process)

Control the application process (restart, exit).

Install:

cargo tauri add process

Rust registration (in src-tauri/src/lib.rs):

.plugin(tauri_plugin_process::init())

JS Package: @tauri-apps/plugin-process

Capability permissions (add to src-tauri/capabilities/*.json):

{
  "permissions": ["process:default"]
}

Common permissions:

  • process:allow-restart: Restart the app.
  • process:allow-exit: Exit the app programmatically.

See also: Capabilities Reference for the security model | Updater/Distribution for the updater plugin deployment | Advanced Runtime for tray, sidecar, and deep-link plugins

Source: SKILL.md on GitHub

No alerts17d5 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    The skill provides comprehensive and legitimate documentation for Tauri v2 development. It emphasizes the framework's security-first approach, particularly the new capabilities and permissions model. All described behaviors, including plugin usage and the update mechanism, are standard for Tauri and accompanied by appropriate security guidance.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer7mo

    1/7 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3493e21. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 6 months ago
version
1.0.1
  • Rust
  • tauri
  • desktop-apps
  • mobile-apps
  • ipc
  • cross-platform
  • capabilities
  • serde
  • webview

README badge

README badge for nodnarbnitram/claude-code-extensions/tauri-v2

Builds cross-platform desktop and mobile apps with Rust backends and web frontends using Tauri v2+. Covers command registration, IPC patterns (invoke/emit/channels), capability configuration, state management, and common build/deployment issues. Prevents 8+ typical Tauri setup errors including permission denials, unregistered commands, and mobile build failures.

Generated from the current SKILL.md.

Does this skill work with Tauri v1?
No. This skill is for Tauri v2+ only. It covers the v2 API (e.g., `@tauri-apps/api/core`, the `lib.rs` split for mobile, and v2 capability system).
Can I use this for mobile apps?
Yes. The skill covers both desktop and mobile Tauri builds, including the required `#[cfg_attr(mobile, tauri::mobile_entry_point)]` pattern and Rust target setup.
What IPC patterns does this cover?
The skill documents commands, events, channels, and state management. Deeper IPC decision guidance is in the bundled `references/ipc-patterns.md` file.
Does this cover plugin setup?
Yes. The skill explains how to add plugin permissions to capabilities and references the bundled `references/plugin-reference.md` for official Tauri plugins.
What are the minimum Rust changes needed to add a command?
Add a `#[tauri::command]` function in `lib.rs`, register it in `tauri::generate_handler![]`, add required permissions to `capabilities/default.json`, and call it from frontend with `invoke()`.

Generated from the current SKILL.md. These answers refresh after source changes.