tauri
Skill15 starsChanged 42 days agoMITView on GitHub
Expert Tauri assistance covering Rust core backend, web frontend, secure IPC commands, and multi-platform packaging. Use when building lightweight, secure, native desktop/mobile apps.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- delorenj/skillstheir own version, first seen Nov 7, 2026
- Firzus/agent-skillstheir own version, first seen Oct 23, 2026
- webdevarif/claude-skillstheir own version, first seen Oct 20, 2026
- klauswg/sasuketheir own version, first seen Oct 15, 2026
- full-stack-skills/tauri-skillstheir own version, first seen Oct 11, 2026
- epicenter-md/epicentertheir own version, first seen Oct 8, 2026
Used with
Projects with it also use tauri-app-autostart, tauri-app-notification and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
pinkpixel-devSkilltauri-app-autostart
Guidance for Tauri v2 autostart setup with platform differences and rollback.
Also in 3 projects that use this
pinkpixel-devSkilltauri-app-notification
Guidance for Tauri v2 notification plugin with permission flow and click handling.
Also in 3 projects that use this
wpankSkillmonorepo
Build and manage monorepos with Turborepo, Nx, and pnpm workspaces — covering workspace structure, dependency management, task orchestration, caching, CI/CD, and publishing. Use when setting up monorepos, optimizing builds, or managing shared packages.
Also in 3 projects that use this
GoogleSkillprototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
Also in 3 projects that use this
- +5 more from pinkpixel-dev
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- epicenter-md/epicenter★ 4.8ksame name
- EpicenterHQ/epicenter★ 4.8ksame name
- diodeme/Gold-Band★ 164same name
- full-stack-skills/tauri-skills★ 20same name
- delorenj/skills★ 17same name
- klauswg/sasuke★ 17same name
- Firzus/agent-skills★ 4same name
- lindoelio/agent-skills★ 3same name
- musaJawad004/heron★ 1same name
- pinkpixel-dev/tauri-skills★ 1same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository350 other files it gives its agents.
- airflowSkill
- catboostSkill
- claudeSkill
- comfyuiSkill
- cursor-aiSkill
- dalleSkill
- daskSkill
- dbtSkill
- deepseekSkill
- fastaiSkill
- geminiSkill
- github-copilotSkill
- huggingfaceSkill
- jaxSkill
- jupyterSkill
- kerasSkill
- langchainSkill
- lightgbmSkill
- llamaindexSkill
- llamaSkill
- matplotlibSkill
- midjourneySkill
- mistralSkill
- mlflowSkill
- nltkSkill
- numpySkill
- ollamaSkill
- openai-gptSkill
- opencvSkill
- pandasSkill
- perplexitySkill
- plotlySkill
- polarsSkill
- pytorchSkill
- raySkill
- scikit-learnSkill
- seabornSkill
- spacySkill
- sparkSkill
- stable-diffusionSkill
- tensorflowSkill
- vaexSkill
- weights-biasesSkill
- whisperSkill
- xgboostSkill
- api-gatewaySkill
- clean-architectureSkill
- cqrsSkill
- domain-driven-designSkill
- event-drivenSkill
- event-sourcingSkill
- graphqlSkill
- grpcSkill
- hexagonalSkill
- microservicesSkill
- modular-monolithSkill
- monolithSkill
- rest-apiSkill
- sagaSkill
- serverlessSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 158
Use @tauri-apps/api/core for modern Tauri v2 frontend bindings.
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Tauri
Tauri allows building desktop (and now mobile in v2.0) apps using web technologies. It differs from Electron by using the OS Native Webview (WebView2 on Windows, WebKit on macOS/Linux).
When to Use
- Lightweight Cross-Platform Desktop Apps: Building native macOS, Windows, and Linux apps using web frontends and Rust backends.
- Tauri v2 Mobile & Desktop Support: Compiling unified codebases to iOS, Android, and desktop.
- Memory-Efficient Desktop Software: Tiny binary size (< 10MB) and low memory usage utilizing the system webview.
- High-Security Desktop Environments: Strict IPC permissions, cryptographic signature verification, and zero Node runtime.
Quick Start
// src-tauri/src/main.rs
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}// frontend app.js
import { invoke } from "@tauri-apps/api/core";
const greeting = await invoke("greet", { name: "World" });Core Concepts
Rust Command Handlers with #[tauri::command]
Exposing high-performance native Rust functions to the webview:
// src-tauri/src/lib.rs
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct SystemStats {
cpu_cores: usize,
os_name: String,
}
#[tauri::command]
fn get_system_stats() -> Result<SystemStats, String> {
Ok(SystemStats {
cpu_cores: num_cpus::get(),
os_name: std::env::consts::OS.to_string(),
})
}
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![get_system_stats])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}Invoking Rust Commands from Frontend
Type-safe frontend IPC invocation:
// src/services/system.ts
import { invoke } from "@tauri-apps/api/core";
interface SystemStats {
cpu_cores: number;
os_name: string;
}
export async function fetchSystemMetrics(): Promise<SystemStats> {
try {
const stats = await invoke<SystemStats>("get_system_stats");
console.log(`Running on ${stats.os_name} with ${stats.cpu_cores} cores`);
return stats;
} catch (error) {
console.error("Failed to invoke Tauri command:", error);
throw error;
}
}Tauri v2 Permissions & Capabilities System
Configuring granular security rules for plugins and commands:
// src-tauri/capabilities/main.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
"core:default",
"fs:allow-read-text-file",
"dialog:allow-open",
"notification:allow-notify"
]
}Common Patterns
Typed IPC Invocation with Serde Structs
Problem: Passing structured parameters and receiving typed errors across the Rust-to-JS bridge.
Solution: Serialize payloads with serde:
use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
struct LoginRequest {
username: String,
auth_token: String,
}
#[derive(Serialize)]
struct UserSession {
user_id: u64,
display_name: String,
}
#[tauri::command]
async fn authenticate(req: LoginRequest) -> Result<UserSession, String> {
if req.auth_token == "valid" {
Ok(UserSession { user_id: 1, display_name: req.username })
} else {
Err("Authentication failed".into())
}
}Best Practices
Do:
- Target Tauri v2 with explicit capability and permission manifests for least privilege access.
- Handle heavy computation and filesystem operations in Rust, keeping the webview UI smooth and responsive.
- Configure code signing and automated updates using Tauri's built-in updater plugin.
- Use
@tauri-apps/api/corefor modern Tauri v2 frontend bindings.
Don't:
- Pass large binary files across the IPC bridge as base64 strings; use custom protocol streaming.
- Grant wildcard permissions (
fs:allow-all) in capability files. - Block the main Tauri thread; use async Rust commands for I/O operations.
Troubleshooting
| Error | Cause | Solution |
Command ... not found in invoke handler | Command function omitted from tauri::generate_handler![...]. | Register the command name in generate_handler![my_cmd]. |
Tauri build fails: WebView2 / WebKit2GTK missing | Missing system webview libraries on Linux or Windows. | Install libwebkit2gtk-4.1-dev (Linux) or WebView2 runtime (Windows). |
Permission denied calling plugin API in Tauri v2 | Capabilities permission file not granting access to plugin. | Add plugin permissions in src-tauri/capabilities/default.json. |
References
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

