Synthèse automatique
Guide pas à pas pour ajouter, renommer ou modifier une commande Tauri côté src-tauri, en gardant le noyau Rust et l'interface React typés de bout en bout.
Points forts
- Liste de contrôle ordonnée couvrant module de domaine, signature, enregistrement, bindings, wrapper TS, tests et capacités
- Rappelle les pièges réels de Tauri : second invoke_handler ignoré, erreurs en String qui perdent le discriminant, events au lieu de Channel<T> pour le streaming
- Impose une séparation claire entre commande fine et logique métier déplacée dans engine / db / jobs
- Couvre la régénération des bindings specta et les tests des deux côtés, y compris mockIPC et clearMocks
Limites
- Suppose une stack précise (specta, TanStack Query, justfile, structure commands/<domain>.rs) et s'applique mal à un projet Tauri organisé autrement
- Ne détaille pas le contenu du code à écrire ni les variantes de signature, seulement la checklist
- Dépend de commandes externes (just bindings, just check) dont le comportement n'est pas décrit
À utiliser dès qu'on touche à la surface IPC d'une application Tauri : nouvelle commande, renommage ou changement de signature.
À éviter pour du travail frontend sans IPC, ou sur un projet Tauri sans specta ni conventions de dossiers similaires.
Analyse de sécurité
SûrThe skill is a documentation-only checklist for adding Tauri commands. It does not execute commands, handle secrets, modify system state, or instruct destructive/network exfiltration actions. References to `just check` and bindings generation are normal developer workflow steps without embedded payloads.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Add a Tauri command that exports the current project to PDF, register it, regenerate the bindings, and wire it to a React button with a typed wrapper and a test.Rename the `save_note` Tauri command to `update_note` and change it to take a note id plus the updated body, then update the bindings, TS wrapper, and tests.Add a Tauri command that runs a long import job and streams progress to the UI — use Channel<T> rather than events, and add Rust and TS tests.name: add-tauri-command description: Use when adding, renaming, or changing the signature of a Tauri command in src-tauri — any new IPC surface between the Rust core and the React UI.
Add a Tauri command
End-to-end checklist. A command is not "done" until both sides are typed and tested.
Checklist (todo per item)
- Domain module. Add the command to
src-tauri/src/commands/<domain>.rs(create the domain file if new — never a catch-all module). Name: snake_case verb phrase, one command per user-facing action. - Signature.
async fnif it does I/O; owned params;State<'_, AppState>for state;Channel<T>param if it streams. ReturnsResult<T, Error>(the app error enum — add a variant if no existing one fits; wrap engine errors via#[from]). - Thin shell. Body = unwrap args → call engine /
db/repository / jobs layer → map errors. If you're writing SQL or business logic inside the command, stop and move it down a layer. - Register. Add to the single
generate_handler![...]list inlib.rs(and totauri_specta::Buildercommand list). There is exactly one registration site. - Regenerate bindings. Run the specta export (see
justfile:just bindings) sosrc/lib/ipc/bindings.gen.tsupdates. Never hand-edit that file. - Typed wrapper. Expose it from
src/lib/ipc/<domain>.tsre-exporting the generated function with any ergonomics (query-key helpers for TanStack Query). Feature code imports the wrapper, never the bindings file or rawinvoke. - Tests, both sides. Rust: unit test for the layer the command delegates to (the command itself stays thin enough not to need one); if the command has branching, test it with a test
AppState. TS: if a hook/component consumes it, mock viamockIPCin the colocated test. - Capabilities. If the command needs a plugin permission, add it to the relevant file in
src-tauri/capabilities/(per-concern files, minimum scope). - Gate.
just check.
Common mistakes
- Registering in a second
invoke_handlercall — Tauri silently keeps only the last one. - Returning
Stringerrors — the frontend loses thekinddiscriminant. - Streaming via events instead of
Channel<T>— events are broadcast and unordered per docs; channels are the streaming path. - Forgetting
clearMocks()in the TS test — IPC mocks leak across tests.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/add-a-tauri-command-mrx3y02b' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/add-a-tauri-command-mrx3y02b/download' --output '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md.part' && mv '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md.part' '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && test -s '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/add-tauri-command' && cp -R '.skill-downloads/add-a-tauri-command-mrx3y02b' '.claude/skills/add-tauri-command'Cursor
test -f '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && test -s '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/add-tauri-command' && cp -R '.skill-downloads/add-a-tauri-command-mrx3y02b' '.cursor/skills/add-tauri-command'Codex
test -f '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && test -s '.skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/add-tauri-command' && cp -R '.skill-downloads/add-a-tauri-command-mrx3y02b' '.agents/skills/add-tauri-command'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/add-a-tauri-command-mrx3y02b'openskills read 'add-a-tauri-command-mrx3y02b'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/add-a-tauri-command-mrx3y02b/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.