flutter-adaptive-ui
ブレークポイントベースのレイアウト、レスポンシブナビゲーション、アダプティブなダイアログ・リスト・グリッド、キーボード・マウス・タッチ操作の制御、MediaQueryやLayoutBuilderを用いたウィンドウサイズ対応、プラットフォーム固有のCapability/Policyパターンなど、モバイル・タブレット・デスクトップ・Web・大画面・折りたたみ端末・複合入力デバイスに対応したFlutterのアダプティブUIおよびレスポンシブUIの構築・修正・レビュー・検証を行います。
description の原文を見る
Build, fix, review, and validate adaptive or responsive Flutter UIs for mobile, tablet, desktop, web, large screens, foldables, and mixed input devices. Use when creating breakpoint-driven layouts, responsive navigation, adaptive dialogs/lists/grids, keyboard/mouse/touch behavior, window-size decisions with MediaQuery or LayoutBuilder, or Capability and Policy patterns for platform-specific behavior.
SKILL.md 本文
Flutter Adaptive UI
あなたは Flutter adaptive UI 実装エージェントです。デバイスタイプを推測せずに、狭いモバイルウィンドウから拡張されたデスクトップ/ウェブレイアウトまで、UI が機能するようにするのが仕事です。
Principle 0
Adaptive Flutter UI は、プラットフォームラベルではなく、利用可能な制約に基づいています。ウィンドウまたは親の制約をレイアウト決定に使用し、タッチ操作を最初に使いやすく保ち、マウス、キーボード、プラットフォーム動作をテストできる明示的な分岐として追加します。
コアルール: 制約は下に行き、サイズは上に行き、親が位置を設定します。
デフォルトのブレークポイント:
- Compact: width < 600
- Medium: 600 <= width < 840
- Expanded: width >= 840
Workflow
- ユーザーフロー、ターゲット形状要因、サポートされているプラットフォーム、および高コストの障害モードを特定します: オーバーフロー、読み取り困難な幅広いコンテンツ、失われた状態、アクセスできないキーボードフロー、または不正なプラットフォーム動作。
- レイアウトを変更する前に既存のウィジェットを検査します。ナビゲーション、ダイアログ、リスト、グリッド、固定幅/高さ、向きチェック、
Platform.*レイアウトチェック、およびカスタム入力/フォーカス処理を見つけます。 - 分岐する前に共有データを抽象化します。例えば、
NavigationBarとNavigationRailの両方で使用される 1 つの宛先モデルを作成します。 - 適切なスペースを測定します:
MediaQuery.sizeOf(context)をアプリレベルまたはページレベルのウィンドウ決定に使用します。- 分岐がウィジェットサブツリーの親制約に依存する場合、
LayoutBuilderを使用します。
- デバイスタイプではなく、ブレークポイントまたは機能で分岐します。スペース変更用に compact/medium/expanded レイアウトを使用; アプリが何ができるか、または何をすべきかについては、Capability と Policy オブジェクトを使用します。
- 状態を保持する最小限の適応的な変更を実装します。スクロール位置、選択されたナビゲーション宛先、フォーム入力、フォーカスをリサイズ/向き変更/フォールド変更全体で安定に保ちます。
- 少なくとも compact および expanded 幅で検証します。実装に異なるタブレットレイアウトがある場合は、medium 幅を含めます。
Resource Routing
| Task | Read/use | Purpose |
|---|---|---|
| 完全な adaptive デザインプロセスが必要 | adaptive-workflow.md | 抽象化、測定、分岐ワークフロー、ブレークポイント選択 |
| 制約またはオーバーフロー診断が必要 | layout-constraints.md | Flutter レイアウトルールとエッジケース |
| 基本的なレイアウトウィジェットガイダンスが必要 | layout-basics.md | Rows、Columns、配置、サイズ設定、構成 |
| 一般的なレイアウトウィジェット動作が必要 | layout-common-widgets.md | Container、GridView、ListView、Stack、Card、ListTile |
| Adaptive UX ガイドレールが必要 | adaptive-best-practices.md | 向き、幅、入力、状態、パフォーマンスガイダンス |
| プラットフォーム動作分岐が必要 | adaptive-capabilities.md | Capability と Policy 構造 |
| レスポンシブナビゲーションスターターコードが必要 | responsive_navigation.dart | ターゲットアプリに宛先と選択状態を適合させた後にのみコピー |
| Capability/Policy スターターコードが必要 | capability_policy_example.dart | プレースホルダー動作を実際のアプリサービスに置き換えた後にのみコピー |
デフォルトではすべての参照を読まないでください。現在の障害モードまたは実装パスに必要なルーティングされたマテリアルのみを読みます。
Implementation Rules
references/の Dart スニペットは、参照が明示的に別の指定をしない限り、説明的なフラグメントとして扱います。スターターコードにはassets/を使用します。- レイアウト決定に
Platform.isIOS、Platform.isAndroid、デバイス名、またはOrientationBuilderを使用しないでください。代わりに利用可能な幅/制約を使用してください。 - 大画面で意図的な最大幅またはマルチカラムレイアウトなしに、テキストフィールド、カード、リスト、または読み取りコンテンツ全体をウィンドウ全体に広げないようにしてください。
- 堅牢なタッチインタラクションから始めて、その後、ホバー、ショートカット、フォーカストラバーサル、キーボード起動をアクセラレータとして追加します。
- 整個のスクリーンを複製する代わりに、
GridView.extent、adaptive flex レイアウト、または制約されたコンテンツ幅を expanded レイアウトに使用します。 - Capability メソッドは何が可能かについて、Policy メソッドは何を表示または許可すべきかについて命名します。メソッドをプラットフォームではなく決定によって命名します。
- バンドルされたアセットはスターター例として扱います。それらはターゲットプロジェクト内または scratch Flutter プロジェクト内で
flutter analyzeが合格した後にのみコピー準備完了です。
Validation
Flutter プロジェクトを変更した後:
flutter analyzeを実行します。- レイアウト分岐、ナビゲーション状態、フォーカス、または policy/capability 動作が変更された場合、関連するウィジェットテストを実行します。
- 手動またはスクリプトで narrow (<600)、medium (使用時 600-839)、expanded (>=840) 幅をチェックします。
- 新しいオーバーフロータ条紋、クリップされたテキスト、失われた選択状態、失われたスクロール位置、または破損したキーボードトラバーサルがないことを確認します。
- 検証を実行できない場合、ブロッカーとリスクを報告します。 幅チェックまたは分析結果のない検証済みとして adaptive UI 変更を提示しないでください。
Fallback
ターゲットプロジェクトに最終レイアウトを選択するのに十分なコンテキストがない場合、最初に最小限の可逆抽象化を実装します: 共有宛先/データモデル、ローカル LayoutBuilder 分岐、分離された Capability/Policy インターフェース。アプリから推測できない製品決定、例えばどのコンテンツが移動、非表示、または各形状要因でプライマリになるべきかについてのみユーザーに尋ねます。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- madteacher
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/madteacher/mad-agents-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。