Token导航 LogoToken导航TokenDH.com
前端设计敏感数据github未标认证来源可访问clear审计异常

understanding-tauri-architectureunderstanding Tauri 架构

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

3,544

周安装

142

GitHub Stars

18

下载量

1,147
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:understanding-tauri-architecture(understanding Tauri 架构)
来源仓库:https://github.com/dchuk/claude-code-tauri-skills
仓库路径:skills/understanding-tauri-architecture
安装命令:
npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill understanding-tauri-architecture
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill understanding-tauri-architecture

简介

理解 Tauri 架构的分层设计,包括核心、外壳和 WebView 组件。

  • 强调安全性、性能和跨平台兼容性。understanding-tauri-architecture 属于前端设计类 Skill,可作为该场景下的辅助能力补充。
  • 适合开发桌面应用时参考架构决策和模块划分。
  • 需结合具体项目选择合适的前端框架和后端逻辑。
  • 建议配合本地构建和预览工具验证实现效果。

SKILL.md

Tauri Architecture

Tauri is a polyglot toolkit for building desktop applications that combines a Rust backend with HTML/CSS/JavaScript rendered in a native webview. This document covers the fundamental architecture concepts.

Architecture Overview

+------------------------------------------------------------------+
|                        TAURI APPLICATION                         |
+------------------------------------------------------------------+
|                                                                  |
|  +---------------------------+    +---------------------------+  |
|  |      FRONTEND (Shell)     |    |     BACKEND (Core)        |  |
|  |---------------------------|    |---------------------------|  |
|  |                           |    |                           |  |
|  |  HTML / CSS / JavaScript  |    |        Rust Code          |  |
|  |  (or any web framework)   |    |    (tauri crate + app)    |  |
|  |                           |    |                           |  |
|  |  - React, Vue, Svelte,    |    |  - System access          |  |
|  |    Solid, etc.            |    |  - File operations        |  |
|  |  - Standard web APIs      |    |  - Native features        |  |
|  |  - Tauri JS API           |    |  - Plugin system          |  |
|  |                           |    |                           |  |
|  +-------------+-------------+    +-------------+-------------+  |
|                |                                |                 |
|                |       IPC (Message Passing)    |                 |
|                +<------------------------------->+                |
|                |     Commands & Events          |                 |
|                                                                  |
|  +------------------------------------------------------------+  |
|  |                    WEBVIEW (TAO + WRY)                     |  |
|  |------------------------------------------------------------|  |
|  |  - Platform-native webview (not bundled)                   |  |
|  |  - Windows: WebView2 (Edge/Chromium)                       |  |
|  |  - macOS: WKWebView (Safari/WebKit)                        |  |
|  |  - Linux: WebKitGTK                                        |  |
|  +------------------------------------------------------------+  |
|                                                                  |
+------------------------------------------------------------------+
                                |
                                v
+------------------------------------------------------------------+
|                     OPERATING SYSTEM                             |
|  - Windows, macOS, Linux, iOS, Android                          |
+------------------------------------------------------------------+

Core vs Shell Design

Tauri follows a Core-Shell architecture where the application is split into two distinct layers:

The Core (Rust Backend)

The Core is the Rust-based backend that handles all system-level operations:

  • System access: File system, network, processes
  • Native features: Notifications, dialogs, clipboard
  • Security enforcement: Permission validation, capability checking
  • Plugin management: Extending functionality through plugins
  • App lifecycle: Window management, updates, configuration

The Core NEVER exposes direct system access to the frontend. All interactions go through validated IPC channels.

The Shell (Frontend)

The Shell is the user interface layer rendered in a webview:

  • Web technologies: HTML, CSS, JavaScript/TypeScript
  • Framework agnostic: Works with React, Vue, Svelte, Solid, or vanilla JS
  • Sandboxed execution: Runs in the webview's security sandbox
  • Tauri API access: Calls backend through @tauri-apps/api

Key Ecosystem Components

tauri Crate

The central orchestrator that:

  • Reads tauri.conf.json at compile time
  • Manages script injection into the webview
  • Hosts the system interaction API
  • Handles application updates
  • Integrates runtimes, macros, and utilities

tauri-runtime

The glue layer between Tauri and lower-level webview libraries. Abstracts platform-specific webview interactions so the rest of Tauri can remain platform-agnostic.

tauri-macros and tauri-codegen

Generate compile-time code for:

  • Command handlers (#[tauri::command])
  • Context and configuration parsing
  • Asset embedding and compression

TAO (Window Management)

Cross-platform window creation library (forked from Winit):

  • Creates and manages application windows
  • Handles menu bars and system trays
  • Supports Windows, macOS, Linux, iOS, Android

WRY (WebView Rendering)

Cross-platform WebView rendering library:

  • Abstracts webview implementations per platform
  • Handles webview-to-native communication
  • Manages JavaScript evaluation and event bridging

Webview Integration

Tauri uses the operating system's native webview rather than bundling a browser engine:

+-------------------+---------------------------+
|     Platform      |        WebView Engine     |
+-------------------+---------------------------+
| Windows           | WebView2 (Edge/Chromium)  |
| macOS             | WKWebView (Safari/WebKit) |
| Linux             | WebKitGTK                 |
| iOS               | WKWebView                 |
| Android           | Android WebView           |
+-------------------+---------------------------+

Benefits of Native WebViews

  1. Smaller binary size: No bundled browser engine (~600KB vs ~150MB)
  2. Security: OS vendors patch webview vulnerabilities faster than app developers can rebuild
  3. Performance: Native integration with the operating system
  4. Consistency: Users see familiar rendering behavior

Considerations

  • Slight rendering differences between platforms
  • Feature availability depends on OS webview version
  • Testing should cover all target platforms

Inter-Process Communication (IPC)

Tauri implements Asynchronous Message Passing for communication between frontend and backend. This is safer than shared memory because the Core can reject malicious requests.

IPC Flow Diagram

+------------------+                      +------------------+
|    Frontend      |                      |   Rust Backend   |
|   (JavaScript)   |                      |     (Core)       |
+--------+---------+                      +--------+---------+
         |                                         |
         |  1. invoke('command', {args})           |
         +---------------------------------------->|
         |                                         |
         |     [Request serialized as JSON-RPC]    |
         |                                         |
         |                    2. Validate request  |
         |                    3. Check permissions |
         |                    4. Execute command   |
         |                                         |
         |  5. Return Result<T, E>                 |
         |<----------------------------------------+
         |                                         |
         |     [Response serialized as JSON]       |
         |                                         |

Two IPC Primitives

Commands (Request-Response)

Type-safe, frontend-to-backend function calls:

// Rust backend
#[tauri::command]
fn greet(name: String) -> String {
    format!("Hello, {}!", name)
}

// Register in builder
tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![greet])
// JavaScript frontend
import { invoke } from '@tauri-apps/api/core';

const greeting = await invoke('greet', { name: 'World' });
console.log(greeting); // "Hello, World!"

Key characteristics:

  • Built on JSON-RPC protocol
  • All arguments must be JSON-serializable
  • Returns a Promise that resolves with the result
  • Supports async Rust functions
  • Can access app state, window handle, etc.

Events (Fire-and-Forget)

Bidirectional, asynchronous notifications:

// Frontend: emit event
import { emit } from '@tauri-apps/api/event';
emit('user-action', { action: 'clicked' });

// Frontend: listen for events
import { listen } from '@tauri-apps/api/event';
const unlisten = await listen('download-progress', (event) => {
    console.log(event.payload);
});
// Backend: listen for events
use tauri::Listener;

app.listen("user-action", |event| {
    println!("User action: {}", event.payload());
});

// Backend: emit events
app.emit("download-progress", 50)?;

Key characteristics:

  • No return value (one-way)
  • Both frontend and backend can emit/listen
  • Best for lifecycle events and state changes
  • Not type-checked at compile time

Security Model Overview

Tauri implements multiple layers of security to protect both the application and the user's system.

Trust Boundary Model

+------------------------------------------------------------------+
|                     UNTRUSTED ZONE                               |
|  +------------------------------------------------------------+  |
|  |                    WebView Frontend                        |  |
|  |  - JavaScript code (potentially from remote sources)       |  |
|  |  - User input                                              |  |
|  |  - Third-party libraries                                   |  |
|  +------------------------------------------------------------+  |
+------------------------------------------------------------------+
                              |
                    [TRUST BOUNDARY]
                    [IPC Layer validates all requests]
                              |
+------------------------------------------------------------------+
|                      TRUSTED ZONE                                |
|  +------------------------------------------------------------+  |
|  |                    Rust Backend                            |  |
|  |  - Your Rust code                                          |  |
|  |  - Tauri core                                              |  |
|  |  - System access (gated by permissions)                    |  |
|  +------------------------------------------------------------+  |
+------------------------------------------------------------------+

Security Layers

  1. WebView Sandboxing: Frontend code runs in the webview's security sandbox
  2. IPC Validation: All messages crossing the trust boundary are validated
  3. Capabilities: Define which permissions each window can access
  4. Permissions: Fine-grained control over what operations are allowed
  5. Scopes: Restrict command behavior (e.g., limit file access to specific directories)
  6. CSP: Content Security Policy restricts what frontend code can do

Capabilities System

Capabilities control which permissions are granted to specific windows:

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "main-window-capability",
  "description": "Permissions for the main application window",
  "windows": ["main"],
  "permissions": [
    "core:path:default",
    "core:window:allow-set-title",
    "fs:read-files",
    "fs:scope-app-data"
  ]
}

Capabilities are defined in src-tauri/capabilities/ as JSON or TOML files.

Permission Structure

Capability
    |
    +-- windows: ["main", "settings"]  // Which windows
    |
    +-- permissions:                    // What's allowed
            |
            +-- "plugin:action"         // Allow specific action
            +-- "plugin:scope-xxx"      // Scope restrictions

Default Security Posture

  • Deny by default: Commands must be explicitly permitted
  • No remote access: Only bundled code can access Tauri APIs by default
  • Window isolation: Each window has its own capability set
  • Compile-time checks: Many security configurations are validated at build time

Rust Backend Structure

A typical Tauri backend follows this structure:

src-tauri/
+-- Cargo.toml              # Rust dependencies
+-- tauri.conf.json         # Tauri configuration
+-- capabilities/           # Permission definitions
|   +-- main.json
+-- src/
    +-- main.rs             # Entry point (desktop)
    +-- lib.rs              # Core app logic
    +-- commands/           # Command modules
    |   +-- mod.rs
    |   +-- file_ops.rs
    +-- state.rs            # App state management

Entry Point Pattern

// src-tauri/src/lib.rs
mod commands;

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_shell::init())
        .invoke_handler(tauri::generate_handler![
            commands::greet,
            commands::read_file,
        ])
        .manage(AppState::default())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Command Patterns

// Basic command
#[tauri::command]
fn simple_command() -> String {
    "Hello".into()
}

// With arguments (camelCase from JS, snake_case in Rust)
#[tauri::command]
fn with_args(user_name: String, age: u32) -> String {
    format!("{} is {} years old", user_name, age)
}

// With error handling
#[tauri::command]
fn fallible() -> Result<String, String> {
    Ok("Success".into())
}

// Async command
#[tauri::command]
async fn async_command() -> Result<String, String> {
    tokio::time::sleep(Duration::from_secs(1)).await;
    Ok("Done".into())
}

// Accessing app state
#[tauri::command]
fn with_state(state: tauri::State<'_, AppState>) -> String {
    state.get_value()
}

// Accessing window
#[tauri::command]
fn with_window(window: tauri::WebviewWindow) -> String {
    window.label().to_string()
}

No Runtime Bundled

Tauri does NOT ship a runtime. The final binary:

  • Compiles Rust code directly into native machine code
  • Embeds frontend assets in the binary
  • Uses the system's native webview
  • Results in small, fast executables

This makes reverse engineering Tauri apps non-trivial compared to Electron apps with bundled JavaScript.

Summary

ComponentRole
Core (Rust)System access, security, business logic
Shell (Frontend)UI rendering, user interaction
WebView (TAO+WRY)Platform-native rendering bridge
IPC (Commands/Events)Safe message passing between layers
CapabilitiesPermission control per window

The architecture prioritizes:

  1. Security: Multiple layers of protection, trust boundaries
  2. Performance: Native code, no bundled runtime
  3. Size: Minimal binary footprint
  4. Flexibility: Any frontend framework, powerful Rust backend

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

28.77%
按下载量换算330

OpenCode

25.09%
按下载量换算288

Gemini CLI

20.95%
按下载量换算240

Antigravity

12.49%
按下载量换算143

windsurf

7.53%
按下载量换算86

Codex

3.96%
按下载量换算45

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills