Agent skill · software engineering · affaan-m
flutter-dart-code-review
ウィジェットのベストプラクティス、状態管理パターン(BLoC、Riverpod、Provider、GetX、MobX、Signals)、Dartのイディオム、パフォーマンス、アクセシビリティ、セキュリティ、クリーンアーキテクチャをカバーするライブラリに依存しないFlutter/Dartのコードレビューチェックリスト。
Why this skill is useful
Provides a comprehensive checklist for Flutter/Dart best practices that the AI wouldn't reliably generate on its own.
What it needs
About 6k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
Flutter/Dartコードレビューベストプラクティス Flutter/Dartアプリケーションをレビューするための包括的なライブラリに依存しないチェックリスト。これらの原則は、どの状態管理ソリューション、ルーティングライブラリ、またはDIフレームワークを使用していても適用されます。 --- 1. 全般的なプロジェクトの健全性 [ ] プロジェクトは一貫したフォルダー構造に従っている(フィーチャーファーストまたはレイヤーファースト) [ ] 適切な関心の分離: UI、ビジネスロジック、データレイヤー [ ] ウィジェットにビジネスロジックがない; ウィジェットは純粋にプレゼンテーション [ ] pubspec.yamlが整理されている — 未使用の依存関係がなく、バージョンが適切に固定されている [ ] analysisoptions.yamlに厳格なリントセットと厳格なアナライザー設定が含まれている [ ] 本番コードにprint()文がない — dart:developerのlog()またはロギングパッケージを使用 [ ] 生成されたファイル(.g.dart、.freezed.dart、.gr.dart)が最新か.gitignoreに含まれている [ ] プラットフォーム固有のコードが抽象化の背後に分離されている --- 2. Dart言語の落とし穴 [ ] 暗黙的なdynamic: 型アノテーションの欠如がdynamicにつながる — strict-casts、strict-inference、strict-raw-typesを有効にする [ ] Null安全の誤用: 適切なnullチェックやDart 3のパターンマッチング(if (value case var v?))の代わりに過度な!(bang演算子) [ ] 型プロモーションの失敗: ローカル変数プロモーションが機能する場所でthis.fieldを使用 [ ] 過度に広い例外のキャッチ: on句なしのcatch (e); 常に例外型を指定する [ ] Errorのキャッチ: Errorのサブタイプはバグを示し、キャッチすべきでない [ ] 未使用のasync: awaitしないasyncマークされた関数 — 不要なオーバーヘッド [ ] lateの過剰使用: nullable型やコンストラクターの初期化がより安全な場所でのlateの使用; エラーをランタイムに先送りにする [ ] ループでの文字列連結: 繰り返しの文字列構築には+の代わりにStringBufferを使用 [ ] constコンテキストでの可変状態: constコンストラクタークラスのフィールドは可変であるべきでない [ ] Futureの戻り値の無視: 意図を示すためにawaitを使用するか明示的にunawaited()を呼び出す [ ] finalが使える場所でのvar: ローカル変数にはfinalを、コンパイル時定数にはconstを優先 [ ] 相対インポート: 一貫性のためにpackage:インポートを使用 [ ] 公開された可変コレクション: パブリックAPIは生のList/Mapではなく変更不可能なビューを返すべき [ ] Dart 3パターンマッチングの欠如: 冗長なisチェックと手動キャストの代わりにswitch式とif-caseを優先 [ ] 複数の戻り値のための使い捨てクラス: 単一使用のDTOの代わりにDart 3のレコード(String, int)を使用 [ ] 本番コードでのprint(): dart:developerのlog()またはプロジェクトのロギングパッケージを使用; print()はログレベルがなくフィルタリングできない --- 3. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/flutter-dart-code-review--7fa29a