Agent skill
add-tauri-command
Fügt einen neuen Tauri-Command hinzu mit Einträgen in commands/, lib.rs und tauri-api.ts. Stellt konsistente Benennung, Parameter-Escaping und Fehlerbehandlung sicher. Nutze diesen Skill wenn eine neue Backend-Funktion vom Frontend aus aufgerufen werden soll. Aufruf mit /add-tauri-command [command-name] [beschreibung].
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/add-tauri-command
SKILL.md
Tauri-Command hinzufügen
Du fügst einen neuen Tauri-Command zur Speicher Analyse App hinzu.
Argumente
$ARGUMENTS[0]= Command-Name in snake_case (z.B.get_disk_health)$ARGUMENTS[1]= Beschreibung (optional)
Voranalyse
- Lies
src-tauri/src/commands/— das passende Modul (cmd_scan, cmd_files, cmd_network, cmd_privacy, cmd_system, cmd_terminal, cmd_misc) identifizieren - Lies
src-tauri/src/commands/mod.rsum die Re-Export-Struktur zu verstehen - Lies
src-tauri/src/lib.rsum die Command-Registrierung imgenerate_handler![]zu sehen - Lies
src/api/tauri-api.tsum die typisierte API-Bridge zu verstehen - Prüfe ob ein ähnlicher Command bereits existiert
3 Dateien ändern
1. src-tauri/src/commands/cmd_*.rs — Command-Funktion
Im passenden Modul hinzufügen:
#[tauri::command]
pub async fn command_name(param: String) -> Result<serde_json::Value, String> {
// SECURITY: Parameter für PowerShell escapen
let safe_param = param.replace("'", "''");
let script = format!("Get-Something '{}'", safe_param);
let output = crate::ps::run_ps(&script).await?;
let json: serde_json::Value = serde_json::from_str(&output)
.map_err(|e| format!("JSON-Parse-Fehler: {}", e))?;
Ok(json)
}
Security-Regeln (PFLICHT bei JEDEM Command):
- PowerShell-Escaping: Alle String-Parameter die in
format!()für PowerShell verwendet werden MÜSSEN mit.replace("'", "''")escaped werden - Pfad-Validierung: Pfade vom Frontend validieren (existiert? innerhalb erlaubter Verzeichnisse?)
- Enum-Whitelist: Parameter mit festen Werten per
matchauf erlaubte Werte prüfen - IP-Validierung: IP-Adressen mit Regex validieren
Konventionen:
snake_casefür Funktionsnamen#[tauri::command]AttributResult<serde_json::Value, String>Rückgabetyp- Async für I/O-Operationen
- PowerShell über
crate::ps::run_ps()odercrate::ps::run_ps_json()
2. src-tauri/src/lib.rs — Command registrieren
.invoke_handler(tauri::generate_handler![
// ... bestehende Commands ...
commands::command_name, // NEU
])
3. src/api/tauri-api.ts — Typisierte Export-Funktion
export const commandName = (param: string) =>
invoke<ReturnType>('command_name', { param });
Benennungs-Konvention:
- Rust-Command:
snake_case(z.B.get_disk_health) - TypeScript-Funktion:
camelCase(z.B.getDiskHealth) - Frontend-Import:
import { getDiskHealth } from '../api/tauri-api'
Frontend-Aufruf (optional)
// In src/views/SomeView.tsx
import { commandName } from '../api/tauri-api';
import { useAppContext } from '../context/AppContext';
const { showToast } = useAppContext();
try {
const result = await commandName(arg);
} catch (err: any) {
showToast('Fehler: ' + err.message, 'error');
}
Security-Checkliste (PFLICHT vor Commit)
- Alle String-Parameter für PowerShell mit
.replace("'", "''")escaped? - Pfade vom Frontend validiert?
- Enum-Parameter per Whitelist/match geprüft?
- IP-Adressen per Regex validiert?
- Keine
format!()mit unescaptem User-Input?
Häufige Fehler vermeiden
- Command in
cmd_*.rsdefiniert aber NICHT inmod.rsre-exportiert → Compile-Fehler - Command NICHT in
lib.rsregistriert → "unknown command" camelCasein Rust → musssnake_casesein- TypeScript-Funktion mit falschem invoke-Namen → stille Fehler
- Parameter in
format!()ohne Escaping → Command Injection
Ausgabe
- Rust-Command:
commands::command_name(in welchem cmd_*.rs Modul) - TypeScript-Funktion:
commandName()insrc/api/tauri-api.ts - Parameter: Typen und Escaping-Status
- Registrierung: In
lib.rs+mod.rseingetragen
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?