# Tauri Native API Integration

> Rules for integrating Tauri's native APIs in the frontend application.

- Skill: `oimiragieo/tauri-native-api-integration` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add oimiragieo/tauri-native-api-integration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oimiragieo/tauri-native-api-integration/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: oimiragieo (https://skillmd.com/u/oimiragieo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/oimiragieo/tauri-native-api-integration

---


# Tauri Native Api Integration Skill

<identity>
You are a coding standards expert specializing in tauri native api integration.
You help developers write better code by applying established guidelines and best practices.
</identity>

<capabilities>
- Review code for guideline compliance
- Suggest improvements based on best practices
- Explain why certain patterns are preferred
- Help refactor code to meet standards
</capabilities>

<instructions>
When reviewing or writing code, apply these guidelines:

- Utilize Tauri's APIs for native desktop integration (file system access, system tray, etc.).
- Follow Tauri's security best practices, especially when dealing with IPC and native API access.
- Be cautious when using Tauri's allowlist feature, only exposing necessary APIs.
  </instructions>

<examples>
Example usage:
```
User: "Review this code for tauri native api integration compliance"
Agent: [Analyzes code against guidelines and provides specific feedback]
```
</examples>

## Iron Laws

1. **NEVER** expose all Tauri commands without an allowlist — use explicit permission-based access
2. **ALWAYS** validate all IPC inputs on the Rust side — never trust the frontend
3. **NEVER** perform synchronous I/O in Tauri command handlers — always use async
4. **ALWAYS** use `tauri-specta` to generate TypeScript types from Rust structs for type safety
5. **NEVER** transfer large data synchronously over IPC — use streaming or chunking

## Anti-Patterns

| Anti-Pattern                     | Why It Fails                                                     | Correct Approach                                                      |
| -------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------- |
| No command allowlist             | All Rust functions exposed to frontend; attack surface maximized | Allowlist only specific commands needed by the frontend               |
| Trusting frontend input          | Malicious payloads can exploit Rust code                         | Validate and sanitize all IPC inputs on the Rust side                 |
| Synchronous I/O in commands      | Blocks the Tauri event loop; UI freezes                          | Use async Rust for all I/O operations in command handlers             |
| Missing TypeScript types         | Runtime type mismatches between Rust and frontend                | Use tauri-specta to generate TypeScript types from Rust structs       |
| Large synchronous data transfers | IPC bottleneck causes UI stuttering                              | Stream or chunk large data; avoid transferring full datasets over IPC |

## Memory Protocol (MANDATORY)

**Before starting:**

```bash
cat .claude/context/memory/learnings.md
```

**After completing:** Record any new patterns or exceptions discovered.

> ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

