Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

flutter-drift

DriftをFlutterアプリに導入・修正・レビュー・移行・テスト・デバッグするスキルで、SQLiteや`drift_flutter`を使った型安全なDartクエリ、生成テーブル、`StreamBuilder`またはRiverpod `StreamProvider`によるUI連携、書き込み操作、トランザクション、スキーママイグレーション、Webアセット、isolate共有、ローカルDBテストに対応します。Flutterのタスクでdrift・ローカルDBストレージ・SQLite・リアクティブDBストリーム・CRUD・`schemaVersion`・`build_runner`・`drift_dev` make-migrations・マイグレーションテスト、またはモバイル/Web/デスクトップ向けのDB構築が話題になった際に使用してください。

description の原文を見る

Implement, fix, review, migrate, test, or debug Drift persistence in Flutter apps using SQLite, drift_flutter, type-safe Dart queries, generated tables, StreamBuilder or Riverpod StreamProvider UI, write operations, transactions, schema migrations, web assets, isolate sharing, and local database testing. Use when a Flutter task mentions drift, local database storage, SQLite, reactive database streams, CRUD, schemaVersion, build_runner, drift_dev make-migrations, migration tests, or Flutter-specific database setup across mobile, web, or desktop.

SKILL.md 本文

Flutter Drift

このスキルを使用して、Flutter アプリケーションで Drift ベースのローカル永続化を追加または修復します。このスキルは運用ワークフローです。対象アプリケーションを最初に検査し、関連する参照ファイルのみを選択し、現在の Drift API を使用して実装し、生成されたコードを検証します。

コアワークフロー

  1. 編集前にアプリケーションを検査します:
    • pubspec.yaml、既存のデータベースファイル、build.yaml、状態管理パッケージ、対象プラットフォーム、およびテストを確認します。
    • このスキルの例よりも、アプリケーションの現在のアーキテクチャと命名規則を優先します。
  2. パッケージコマンドを使用して依存関係を追加または検証します。バージョンをハードコーディングしないでください:
    • dart pub add drift drift_flutter path_provider dev:drift_dev dev:build_runner
    • provider または flutter_riverpod は、アプリケーションが既に使用している場合、またはユーザーがその統合を要求した場合にのみ追加します。
  3. データベースエントリポイントを作成または更新します:
    • Dart または .drift ファイルでテーブルを定義します。
    • テーブルを @DriftDatabase に追加します。
    • プロジェクトがカスタムエグゼキューターを必要としない限り、package:drift_flutter/drift_flutter.dart から driftDatabase を使用して Flutter データベースを開きます。
  4. Drift 呼び出しをデータベースオブジェクトにスコープします:
    • ウィジェット、サービス、リポジトリから database.select(database.todoItems)database.into(database.todoItems)database.update(database.todoItems)、および database.delete(database.todoItems) を使用します。
    • メソッドとテーブルゲッターがスコープ内にある GeneratedDatabase サブクラスまたは DatabaseAccessor クラス内でのみ、ベアの select(todoItems) を使用します。
  5. Drift 宣言を変更した後、コードを生成します:
    • dart run build_runner build を実行します。
    • ジェネレーターエラーをオプションのクリーンアップではなく、ブロッカーとして扱います。
  6. 既存アプリケーションのスキーマ変更については、Drift のガイド付きマイグレーションワークフローを使用します:
    • build.yamldrift_dev データベースを設定します。
    • 必要に応じて、スキーマ変更の前後に dart run drift_dev make-migrations を実行します。
    • schemaVersion をバンプし、生成されたステップバイステップマイグレーションを記述し、生成されたマイグレーションテストを実行します。
  7. 完了前に検証します:
    • 編集した Dart ファイルで dart format を実行します。
    • パッケージに対して flutter analyze または dart analyze を実行します。
    • マイグレーションが変更された場合は、生成されたマイグレーションテストを含むターゲット化されたテストを実行します。

リソースルーティング

  • Drift を追加する場合、データベースを開く場合、Web サポートを設定する場合、またはデータベースを複数の isolate 間で共有する場合は references/setup.md を読みます。
  • テーブル、列、デフォルト値、キー、インデックス、制約、生成列、またはストリクトテーブルを定義する場合は references/tables.md を読みます。
  • セレクト、フィルター、ソート、ページネーション、結合、集約、サブクエリ、カスタム列、または和集合を実装する場合は references/queries.md を読みます。
  • 挿入、更新、削除、アップサート、コンパニオン、トランザクション、またはバッチ操作を実装する場合は references/writes.md を読みます。
  • リアクティブな Drift ストリーム、StreamBuilder、StreamProvider、カスタムセレクトストリーム、テーブル更新リスナー、またはマニュアルストリーム無効化を実装する場合は references/streams.md を読みます。
  • schemaVersion、既存のユーザーデータ、build.yamlmake-migrations、生成されたスキーマファイル、またはマイグレーションテストが関わる場合は references/migrations.md を読みます。
  • Provider、Riverpod、StreamBuilder、検索、フィルタリング、ページネーション、またはユーザー向けのローディング状態とエラー状態を使用して Drift データを Flutter ウィジェットに接続する場合は references/flutter-ui.md を読みます。

必須 API ルール

  • ウィジェットからトップレベル関数として select(database.table) を呼び出さないでください。データベースクラスの外側では database.select(database.table) を使用します。
  • watch(...)todoUpdates(...)、または notifyTableUpdates(...) を使用しないでください。代わりに customSelect(...).watch()tableUpdates(...)、および notifyUpdates(...) を使用します。
  • delete(table).go(id) を呼び出さないでください。where 句を追加してから go() を呼び出すか、プロジェクトが既に使用している場合は生成されたテーブル拡張ヘルパーを使用します。
  • batch.updateAll(...) を使用したり、batch.delete(...) に未処理 id を渡さないでください。batch.update(..., where: ...)batch.delete(...) と挿入可能な行、または batch.deleteWhere(...) を使用します。
  • Provider と Riverpod API を混在させないでください。Provider.of<AppDatabase>(context)provider に属し、Provider<AppDatabase>((ref) { ... })AsyncValue.when(...) は Riverpod に属します。
  • マイグレーション計画なしで schemaVersion をバンプしないでください。
  • UI ストリームを更新する必要がある場合は、未処理 SQLite 書き込みに依存しないでください。Drift 書き込み API を使用するか、明示的な TableUpdate メタデータで notifyUpdates を呼び出します。

フォールバック

  • パッケージダウンロードがブロックされている場合は、ソースファイルを更新し、ユーザーのために正確な dart pub add または flutter pub add コマンドを残してから、依存関係の解決が検証されなかったことを述べます。
  • プロジェクトが build_runner を実行できない場合は、生成された *.g.dart ファイルを手書きしないでください。ソース宣言を修正し、ジェネレーターブロッカーを報告します。
  • マイグレーション状態が不明な場合は、schemaVersion を変更する前に停止し、現在リリースされているスキーマ履歴またはデータベースファイルを要求します。
  • Web サポートが必要であるが sqlite3.wasmdrift_worker.js が見つからない場合は、コードパスを追加し、必要な Web アセットを明示的に報告します。

検証チェックリスト

  • pubspec.yaml には Drift ランタイムおよびジェネレーター依存関係が含まれています。
  • データベースファイルは有効な part ディレクティブ、テーブル宣言、@DriftDatabase、コンストラクター、および schemaVersion を持っています。
  • すべてのクエリと書き込み例は、正しいデータベース/アクセッサコンテキストにスコープされています。
  • 生成されたコードは build_runner で再ビルドされました。
  • Flutter UI の例は、AsyncValue をリストとして扱わずに、ローディング、空、エラー、およびデータ状態を処理しています。
  • マイグレーションは、生成されたスキーマスナップショット、ステップバイステップマイグレーションコード、およびテストのみで変更されました。
  • 編集されたパッケージに対して flutter analyze または dart analyze が成功するか、残存するアナライザーエラーがブロッカーとともに報告されています。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
madteacher
リポジトリ
madteacher/mad-agents-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/madteacher/mad-agents-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: madteacher · madteacher/mad-agents-skills · ライセンス: MIT