mcpField
D
dart-language

dart-language

github.com/thienqo開発1799 回インストール1 日前に更新
リポジトリ

dart-language について

プロジェクトの SDK 制約や既存の規約、Effective Dart に沿った Dart の記述を支援するコーディングスキルです。API 互換性や生成ファイルの扱いに加え、フォーマット、解析、テストによる検証も扱います。

主な機能

  1. 01pubspec.yaml の SDK 制約を確認
  2. 02Effective Dart とリポジトリの lint に準拠
  3. 03公開 API の互換性を維持
  4. 04生成ファイルの手編集を回避
  5. 05フォーマット、静的解析、関連テストを実行

活用シーン

  1. 01既存の Dart プロジェクトに機能を実装
  2. 02閉じたバリアントと明確な分岐を設計
  3. 03公開パッケージ API の変更と呼び出し元の確認
  4. 04コード生成ソースに関わる変更を検証

MCP 対応

環境で利用できる場合は、Dart MCP による意味検索と解析を使います。それ以外の場合は、ソースを調べてプロジェクトの CLI を利用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/thienqo/flutter-skills --skill dart-language

インストール後、Claude Code で/dart-languageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
code-generation-with-build-runner.md
patterns-and-records-migration.md
sealed-class-hierarchies.md

詳細

Dart 言語

プロジェクトの SDK 制約と既存のスタイルに沿った、明確な Dart コードを書きます。

判断基準

  • 新しい構文を使う前に、pubspec.yaml の SDK 制約を確認します。
  • 再利用の実績がない抽象化よりも、シンプルな型と直接的な制御フローを優先します。
  • 網羅的な switch によって正確性が向上する場合は、閉じたバリエーションを sealed 型でモデル化します。
  • 小さな構造的な値にはレコードを使用し、同一性、検証、ドキュメント化、または将来的な拡張が重要な場合は名前付きのドメイン型を使用します。
  • 分岐や分解が明確になる場合にパターンマッチングを使用し、目新しさだけを理由には使いません。
  • 破壊的変更が求められていない限り、公開 API との互換性を維持します。
  • 可変状態は非公開にし、必要最小限のインターフェースを公開します。
  • 生成されたファイル(*.g.dart、*.freezed.dart、または生成済みと記載されたファイル)は手作業で編集しないでください。注釈付きのソースを編集し、プロジェクトのコマンドで再生成します。

Effective Dart の命名、ドキュメント、使用法、設計に関するガイダンスに従います。競合するスタイル規則を追加せず、リポジトリの lint ルールに合わせます。

検証

現在の環境で利用できる場合は、Dart MCP のセマンティック検索と解析を使用します。利用できない場合は、ソースを確認し、プロジェクトの CLI を使用します。フォーマット、静的解析、関連する最小範囲のテストを実行します。公開パッケージの API を変更する場合は、サンプルと下流の呼び出し箇所を確認します。

適用範囲

  • 非同期処理、ストリーム、キャンセル、アイソレートには dart-concurrency を使用します。
  • Flutter ウィジェットの構成や状態の所有権には、該当する Flutter スキルを使用します。
  • JSON と永続化スキーマの動作は、対応するデータスキルの範囲です。
  • code-generator または build_runner のバージョンを上げた後の再生成は flutter-dependency-upgrades の範囲です。このスキルでは、すでに固定されているジェネレーターバージョンに沿ったコードの記述を担当します。

参考資料

  • パターンマッチング、分解、switch 式、または複数の戻り値を導入する場合は、パターンとレコードの移行を読みます。
  • 代数的データ型、閉じた結果モデル、または網羅性を検証する状態群を設計する場合は、sealed クラス階層を読みます。
  • クラスが freezed、json_serializable、その他の build_runner ジェネレーターを使用する場合、または生成コードが古い、競合している、あるいはビルドに失敗する場合は、build_runner を使ったコード生成を読みます。

出典

コメント