.claude/skills/tauri-project-setup/SKILL.md
Helps users create and initialize new Tauri v2 projects for building cross-platform desktop and mobile applications. Covers system prerequisites and setup requirements for macOS, Windows, and Linux. Guides through project creation using create-tauri-app or manual Tauri CLI initialization. Explains project directory structure and configuration files. Supports vanilla JavaScript, TypeScript, React, Vue, Svelte, Angular, SolidJS, and Rust-based frontends.
npx skillsauth add rdjakovic/todo2 setting-up-tauri-projectsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Tauri is a framework for building tiny, fast binaries for all major desktop and mobile platforms. It combines any frontend that compiles to HTML/JS/CSS with Rust for the backend.
Key characteristics:
# For desktop + iOS development
# Install Xcode from Mac App Store
# For desktop-only development (lighter option)
xcode-select --install
winget install Rustlang.Rustup
rustup default stable-msvc
Debian/Ubuntu:
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
Arch Linux:
sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \
appmenu-gtk-module libappindicator-gtk3 librsvg xdotool
Fedora:
sudo dnf install webkit2gtk4.1-devel openssl-devel curl wget file \
libappindicator-gtk3-devel librsvg2-devel libxdo-devel \
@development-tools
# macOS/Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Windows (PowerShell)
winget install Rustlang.Rustup
Required only for JavaScript/TypeScript frontends. Install LTS version from nodejs.org.
Android (all platforms):
# Install Android Studio, then add Rust targets
rustup target add aarch64-linux-android armv7-linux-androideabi \
i686-linux-android x86_64-linux-android
Set environment variables: JAVA_HOME, ANDROID_HOME, NDK_HOME
iOS (macOS only):
# Requires full Xcode (not just Command Line Tools)
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
# Install Cocoapods
brew install cocoapods
Interactive scaffolding with framework templates.
# npm
npm create tauri-app@latest
# pnpm
pnpm create tauri-app
# yarn
yarn create tauri-app
# bun
bun create tauri-app
# cargo (no Node.js required)
cargo install create-tauri-app --locked
cargo create-tauri-app
# Shell scripts
sh <(curl https://create.tauri.app/sh) # Bash
irm https://create.tauri.app/ps | iex # PowerShell
Prompts you'll see:
com.example.app)After scaffolding:
cd your-project
npm install
npm run tauri dev
Add Tauri to an existing frontend project.
# 1. In your existing project, install Tauri CLI
npm install -D @tauri-apps/cli@latest
# 2. Initialize Tauri (creates src-tauri directory)
npx tauri init
tauri init prompts:
http://localhost:5173)dist)npm run dev)npm run build)# 3. Start development
npx tauri dev
my-tauri-app/
├── package.json # Frontend dependencies
├── index.html # Frontend entry point
├── src/ # Frontend source code
│ └── main.js
└── src-tauri/ # Rust backend
├── Cargo.toml # Rust dependencies
├── Cargo.lock
├── build.rs # Tauri build script
├── tauri.conf.json # Main Tauri configuration
├── capabilities/ # Permission/capability definitions
├── icons/ # App icons (all formats)
└── src/
├── lib.rs # Main Rust code + mobile entry point
└── main.rs # Desktop entry point
tauri.conf.json - Primary configuration:
{
"productName": "my-app",
"version": "0.1.0",
"identifier": "com.example.my-app",
"build": {
"devUrl": "http://localhost:5173",
"frontendDist": "../dist"
},
"app": {
"windows": [{ "title": "My App", "width": 800, "height": 600 }]
}
}
src/lib.rs - Rust application code:
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
src/main.rs - Desktop entry point:
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
app_lib::run();
}
capabilities/ - Define what commands JavaScript can invoke:
{
"identifier": "main-capability",
"windows": ["main"],
"permissions": ["core:default"]
}
# Development with hot reload
npm run tauri dev
# Build production binary
npm run tauri build
# Generate app icons from source image
npm run tauri icon path/to/icon.png
# Add Android target
npm run tauri android init
# Add iOS target
npm run tauri ios init
# Run on Android
npm run tauri android dev
# Run on iOS simulator
npm run tauri ios dev
| Template | Languages | Notes | |----------|-----------|-------| | vanilla | JS, TS | No framework | | react | JS, TS | Vite-based | | vue | JS, TS | Vite-based | | svelte | JS, TS | Vite-based | | solid | JS, TS | Vite-based | | angular | TS | Angular CLI | | preact | JS, TS | Vite-based | | yew | Rust | Rust WASM frontend | | leptos | Rust | Rust WASM frontend | | sycamore | Rust | Rust WASM frontend |
development
Enforce web security and avoid security vulnerabilities
development
Guides users through distributing Tauri applications on Windows, including creating MSI and NSIS installers, customizing installer behavior, configuring WebView2 installation modes, and submitting apps to the Microsoft Store.
documentation
Guides users through Tauri window customization including custom titlebar implementation, transparent windows, window decorations, drag regions, window menus, submenus, and menu keyboard shortcuts for desktop applications.
tools
Assists users with updating Tauri dependencies including the Tauri CLI, Rust crates, JavaScript packages, and checking for outdated versions to upgrade to the latest version.