Tauri Command Conventions
Use this skill when adding or changing Tauri commands, command payloads, or event wiring.
Preferred Path
- Define command in
src-tauri/src/commands/*.rswith#[tauri::command]. - Validate inputs at command boundary and return
crate::errors::Result<T>. - Register command/event in
src-tauri/src/ipc_contract.rs. - Route frontend command/event usage through
src/lib/tauri/client.ts. - Regenerate/check bindings and run standard checks.
Command Skeleton
use crate::errors::{AppError, Result};
#[tauri::command]
pub async fn my_command(payload: MyPayload) -> Result<MyResult> {
if payload.input.is_empty() {
return Err(AppError::InvalidInput("input is required".into()));
}
Ok(MyResult::default())
}
Hard Invariants
- Command and event contracts remain registered in
ipc_contract::builder(). - TS/Rust contract parity is verified via generated bindings.
- Progress-stage authority is not duplicated here; use
job-registry-and-progressskill +src/types/events.tsas canonical source.
Verification
scripts/checks.sh standard
# release-critical contract checks
bun run bindings:check
Pointers
src-tauri/src/ipc_contract.rssrc-tauri/src/errors.rssrc/lib/tauri/client.tssrc/lib/generated/tauri.tsscripts/check-generated-bindings.sh
Done Criteria
- Command compiles, is registered, and callable from TS boundary adapter.
- Errors map to stable
AppErrorvariants. - Contract checks are green for non-doc changes.
Alignment
- Use root AGENTS precedence.
- No implicit internal legacy assumptions.
- Fallback behavior requires explicit trigger/evidence/sunset and fallback-policy compliance.
- For external API uncertainty, invoke
lib-research.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.