tauri-development
TypeScript、Rust、およびモダンなWeb技術を使用してクロスプラットフォームのデスクトップアプリケーションを構築するための、Tauri開発ガイドラインを提供するスキルです。Tauriプロジェクトのセットアップからビルド・デプロイまで、開発全般をサポートします。
description の原文を見る
Tauri development guidelines for building cross-platform desktop applications with TypeScript, Rust, and modern web technologies
SKILL.md 本文
Tauri 開発ガイドライン
TypeScript と Rust を使用した Tauri によるクロスプラットフォーム デスクトップアプリケーション開発の専門家です。
コア原則
- クリーンで保守性の高い TypeScript と Rust のコードを書く
- TailwindCSS と ShadCN-UI を使用してスタイリングする
- 複雑な機能については段階的な計画に従う
- コード品質、セキュリティ、パフォーマンスを優先する
テクノロジースタック
- フロントエンド: TypeScript、React/Next.js、TailwindCSS、ShadCN-UI
- バックエンド: Rust、Tauri APIs
- ビルド: Tauri CLI、Vite/Webpack
プロジェクト構成
src/
├── app/ # Next.js app directory
├── components/ # React components
│ ├── ui/ # ShadCN-UI components
│ └── features/ # Feature-specific components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── styles/ # Global styles
src-tauri/
├── src/ # Rust source code
│ ├── main.rs # Entry point
│ └── commands/ # Tauri commands
├── Cargo.toml # Rust dependencies
└── tauri.conf.json # Tauri configuration
TypeScript ガイドライン
コードスタイル
- TypeScript を使用した関数型コンポーネントを使う
- すべてのデータ構造に対して適切なインターフェースを定義する
- 非同期操作には async/await を使用する
- 適切なエラーハンドリングを実装する
Tauri インテグレーション
import { invoke } from '@tauri-apps/api/tauri';
// Call Rust commands from frontend
const result = await invoke<string>('my_command', { arg: 'value' });
// Listen to events from Rust
import { listen } from '@tauri-apps/api/event';
await listen('event-name', (event) => {
console.log(event.payload);
});
Rust ガイドライン
コマンド定義
#[tauri::command]
fn my_command(arg: String) -> Result<String, String> {
// Implementation
Ok(format!("Received: {}", arg))
}
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![my_command])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
エラーハンドリング
- 失敗する可能性のある操作には Result 型を使う
- 必要に応じてカスタムエラータイプを定義する
- エラーを適切に伝播させる
- デバッグのためにエラーをログに記録する
セキュリティ
- フロントエンドからのすべての入力を検証する
- Tauri のセキュリティ機能 (CSP、allowlist) を使用する
- tauri.conf.json でパーミッションを最小化する
- ファイルパスとユーザー入力をサニタイズする
UI 開発
TailwindCSS
- ユーティリティファースト アプローチを使用する
- レスポンシブデザインを実装する
- ダークモード対応を使用する
- 一貫したスペースとサイズを保つ
ShadCN-UI コンポーネント
- 事前に構築されたアクセシブルコンポーネントを使用する
- TailwindCSS でカスタマイズする
- 一貫したテーマを保つ
- アクセシビリティのベストプラクティスに従う
状態管理
- グローバル状態には React Context を使用する
- 複雑な状態には Zustand を検討する
- 状態を使用される場所の近くに保つ
- Rust との状態同期を適切に実装する
ファイルシステム操作
use std::fs;
use tauri::api::path::app_data_dir;
#[tauri::command]
fn read_file(path: String) -> Result<String, String> {
fs::read_to_string(&path)
.map_err(|e| e.to_string())
}
#[tauri::command]
fn write_file(path: String, content: String) -> Result<(), String> {
fs::write(&path, content)
.map_err(|e| e.to_string())
}
ビルドと配布
- 適切なアプリケーションメタデータを設定する
- 配布用のコード署名をセットアップする
- Tauri の updater を使用して自動更新を実装する
- すべてのターゲットプラットフォームでテストする
パフォーマンス
- フロントエンドと Rust 間の IPC 呼び出しを最小化する
- 可能な限りバッチ操作を使用する
- 適切なキャッシングを実装する
- ホットパスをプロファイリングして最適化する
テスト
- Rust コマンドのユニットテストを記述する
- フロントエンドコンポーネントをテストする
- 統合テストを実装する
- すべてのターゲットプラットフォームでテストする
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。