mcpField
F
flutter-init

flutter-init

github.com/bear2u開発93555 回インストール18 週間前に更新
リポジトリ

flutter-init について

flutter-initは、ドメインとスタックプリセットを選んでFlutterアプリを生成する対話型スキルです。Clean Architectureに基づくCRUD構成を作り、選択したパッケージを設定してflutter analyzeで検証します。

主な機能

  1. 01Todo・Habit・Note・Expense・独自アプリの生成
  2. 02プロジェクトとスタックプリセットの対話選択
  3. 03Clean ArchitectureのCRUDひな形作成
  4. 04パッケージとプロジェクト設定
  5. 05コード生成とflutter analyzeの実行

活用シーン

  1. 01FlutterでTodoやHabitのトラッカーを開始
  2. 02NoteやExpenseの管理アプリを作成
  3. 03独自エンティティのCRUDプロジェクトを構築

インストール

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

$npx skills add https://github.com/bear2u/my-skills --skill flutter-init

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

同梱ファイルREADME.mdreferences/setup-guide.md

詳細

Flutter Init スキル

ドメインベースの Flutter プロジェクトを生成し、最新のアーキテクチャで自動設定します。 Todo、Habit、Note、Expense、または Custom ドメインを選択すると、Clean Architecture に基づく完全な CRUD アプリをすぐに生成できます。

クイックスタート

スキルの実行時に、次の情報を入力します:

  • フォルダー名(例:my_habit_app)
  • プロジェクト名/パッケージ名(例:habit_app)
  • ドメインの選択(Todo/Habit/Note/Expense/Custom)
  • スタックプリセット(Minimal/Essential/Full Stack/Custom)

その後、次の手順が自動的に実行されます:

# 1. 프로젝트 생성 (Android/Kotlin, iOS/Swift)
flutter create --platforms android,ios --android-language kotlin --org com.example [폴더명]

# 2. 패키지 설치
flutter pub get

# 3. 도메인별 Clean Architecture 코드 자동 생성
# - domain/entities/[domain].dart (Freezed 엔티티)
# - data/datasources/local/app_database.dart (Drift 테이블)
# - data/repositories/[domain]_repository_impl.dart (Repository 구현)
# - presentation/providers/[domain]_providers.dart (Riverpod 3.0)
# - presentation/screens/* (List/Detail/Form 화면)

# 4. 코드 생성 (Freezed, Drift, JSON Serializable)
dart run build_runner build --delete-conflicting-outputs

# 5. 코드 검증 및 오류 자동 수정 (필수)
flutter analyze

# 6. 앱 실행
flutter run

タスクの手順

重要:このスキルは対話形式で進行します。

Step 1: ドメインとプロジェクトの設定に関する質問

まず、ユーザーに次のように尋ねてください:

「Flutter アプリを生成します。次の情報を教えてください:

1. ドメイン(エンティティ)の選択

どのドメインのアプリを作成しますか?

A) Todo(ToDo 管理)

  • フィールド:title、description、isCompleted、createdAt、completedAt
  • 機能:CRUD、フィルタリング(全件/進行中/完了)、チェックボックスの切り替え

B) Habit(習慣トラッカー)

  • フィールド:name、description、frequency(daily/weekly/monthly)、streak、lastCompletedAt、goal、isActive
  • 機能:CRUD、連続記録の追跡、目標達成率、完了チェック

C) Note(メモ)

  • フィールド:title、content、tags、isPinned、createdAt、updatedAt
  • 機能:CRUD、タグによるフィルタリング、メモの固定、検索

D) Expense(支出管理)

  • フィールド:amount、category、description、date、paymentMethod
  • 機能:CRUD、カテゴリ別の集計、月別統計、フィルタリング

E) Custom(独自に定義)

  • エンティティ名とフィールドを直接入力

2. プロジェクト情報

  • フォルダー名:プロジェクトを作成するフォルダー名(デフォルト:[ドメイン]_app、例:habit_app)
    • このフォルダーに Flutter プロジェクトが作成されます
  • プロジェクト名(パッケージ名):Flutter パッケージ名(デフォルト:フォルダー名と同じ)
    • pubspec.yaml の name フィールドに使用されます
    • import 文で使用されます(例:package:habit_app/...)
  • 組織名:(デフォルト:com.example)
    • Android/iOS のパッケージ識別子に使用されます(例:com.example.habit_app)

3. スタックプリセットの選択

次から1つ選択してください:

A) Essential(推奨)

  • ✅ GoRouter(型安全なルーティング)
  • ✅ SharedPreferences(ローカル設定の保存)
  • ✅ FPDart(関数型エラーハンドリング)
  • ✅ Google Fonts
  • ✅ FluentUI Icons
  • ❌ Auth システムは含まれません
  • ❌ Responsive Utils は含まれません

B) Minimal(最もシンプル)

  • ❌ GoRouter(標準の Navigator を使用)
  • ✅ SharedPreferences
  • ❌ FPDart は含まれません
  • ❌ Google Fonts は含まれません
  • ✅ 標準の FluentUI Icons
  • ❌ Auth システムは含まれません
  • ❌ Responsive Utils は含まれません

C) Full Stack(すべての機能)

  • ✅ GoRouter
  • ✅ SharedPreferences
  • ✅ FPDart(関数型エラーハンドリング)
  • ✅ Google Fonts
  • ✅ Responsive Utils
  • ✅ FluentUI Icons
  • ✅ Auth システム(Login/Register)— 選択したドメインに応じて

D) Custom(独自に選択)

  • 各機能を個別に選択

どのドメインとプリセットを選択しますか?(ドメイン:A/B/C/D/E、プリセット:A/B/C/D)」

Step 2: Custom を選択した場合の追加質問
2-1. Custom ドメイン(E)を選択した場合:
  1. エンティティ名:エンティティ名を入力してください(例:Task、Event、Book)
  2. フィールド定義:各フィールドを入力してください(形式:フィールド名:型、例:title:String、amount:double、isActive:bool)
    • 対応する型:String、int、double、bool、DateTime
    • createdAt、updatedAt は自動的に追加されます
  3. 主な機能:フィルタリング/並べ替えの基準にするフィールドを選択してください
2-2. Custom スタックプリセット(D)を選択した場合:

次の質問を順番にしてください:

  1. ナビゲーション:GoRouter を使用しますか?(はい/いいえ)
  2. エラーハンドリング:FPDart を使用しますか?(はい/いいえ)
  3. UI:Google Fonts を使用しますか?(はい/いいえ)
  4. レスポンシブ対応:Responsive Utils を含めますか?(はい/いいえ)
  5. 認証システム:Auth システムを含めますか?(はい/いいえ)
ステップ 3: 選択されたドメインとスタックに応じてプロジェクトを作成
  1. Flutter プロジェクトの作成:

    • ユーザーが指定したフォルダ名でプロジェクトを作成
    • コマンド: flutter create --platforms android,ios --android-language kotlin --org [조직명] [폴더명]
    • 例: flutter create --platforms android,ios --android-language kotlin --org com.example my_habit_app
    • フォルダ名とプロジェクト名(パッケージ名)が異なる場合、作成後に pubspec.yaml の name フィールドを修正
  2. Kotlin DSL の確認 (最新の Flutter は自動的に Kotlin DSL を使用)

  3. 選択されたパッケージのインストール: pubspec.yaml を更新後、flutter pub get

  4. フォルダ構造の作成: Clean Architecture (core, data, domain, presentation)

  5. ドメイン別のボイラープレート生成:

    A) Todo: title, description, isCompleted, createdAt, completedAt

    • Repository: getTodos, createTodo, updateTodo, toggleCompletion, deleteTodo
    • Providers: filteredTodosProvider (all/pending/completed)
    • UI: TodoListScreen (フィルタリング), TodoDetailScreen, TodoFormDialog

    B) Habit: name, description, frequency, streak, lastCompletedAt, goal, isActive

    • Repository: getHabits, createHabit, updateHabit, completeHabit, deleteHabit
    • Providers: filteredHabitsProvider (active/inactive), habitStatsProvider
    • UI: HabitListScreen (統計), HabitDetailScreen, HabitFormDialog

    C) Note: title, content, tags, isPinned, createdAt, updatedAt

    • Repository: getNotes, createNote, updateNote, togglePin, deleteNote
    • Providers: filteredNotesProvider (pinned/all/byTag), searchProvider
    • UI: NoteListScreen (検索/タグ), NoteDetailScreen, NoteFormDialog

    D) Expense: amount, category, description, date, paymentMethod

    • Repository: getExpenses, createExpense, updateExpense, deleteExpense
    • Providers: expensesByCategory, monthlyStats, filteredExpenses
    • UI: ExpenseListScreen (統計), ExpenseDetailScreen, ExpenseFormDialog

    E) Custom: ユーザー定義フィールド

    • Repository: 基本的な CRUD メソッド
    • Providers: 基本的な list provider
    • UI: 基本的な List/Detail/Form 画面
  6. 設定ファイルの作成 (ルーティング、ストレージ、多言語など)

  7. Android 設定の更新 (CRITICAL for flutter_local_notifications):

    • android/app/build.gradle.kts で core library desugaring を有効化:
      android {
          compileOptions {
              sourceCompatibility = JavaVersion.VERSION_11
              targetCompatibility = JavaVersion.VERSION_11
              isCoreLibraryDesugaringEnabled = true  // 추가
          }
      }
      dependencies {
          coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")  // 추가
      }
      
  8. コード生成: dart run build_runner build --delete-conflicting-outputs

  9. コード検証とエラー修正:

    a. flutter analyze を実行

    b. 検出されたエラーを修正:

    • Freezed 3.0 互換性 (CRITICAL): すべての Freezed エンティティは sealed class を使用
      • ❌ class User with _$User
      • ✅ sealed class User with _$User
    • テーマ設定: CardTheme → CardThemeData を使用 (deprecated)
    • API Client Map 型: Map<String, dynamic> を返す際に生成コードを検証
      • retrofit_generator が生成した dynamic.fromJson エラーが発生した場合は修正が必要
    • import パスの修正: すべての相対パスを package: 形式に変更
      • 例: import '../../domain/entities/todo.dart'; → import 'package:todo_app/domain/entities/todo.dart';
    • パッケージ依存関係の確認: 不足しているパッケージを追加 (例: shared_preferences)
    • Riverpod 3.0 互換性: StateNotifier → Notifier、StateProvider → NotifierProvider
    • FluentUI アイコン名の確認: 存在しないアイコンは代替
    • 型安全性: switch expression を使用、null safety を遵守

    c. 再検証: すべての error レベルのエラーがなくなるまで繰り返す

    d. 目標: flutter analyze の結果が "0-1 issues found" (info レベルのみ許容)

    ✅ CRITICAL: このステップは必須です。すべての error を除去しなければ次のステップに進めません。

ステップ 4:最終検証と案内

✅ CRITICAL:このステップはプロジェクトを完了するための必須条件です。

  1. 最終分析の実行:

    flutter analyze
    
  2. 成功基準:

    • ✅ 成功例:

      Analyzing todo_app...
      No issues found!
      

      または

      Analyzing todo_app...
      1 issue found. (ran in 2.3s)
      info • Prefer using lowerCamelCase for constant names • lib/core/constants.dart:5:7 • constant_identifier_names
      
    • ❌ 失敗例(error がある場合は必ず修正してください):

      error • Target of URI doesn't exist: 'package:...' • lib/main.dart:5:8 • uri_does_not_exist
      error • The getter 'xyz' isn't defined for the type 'ABC' • lib/presentation/screens/home.dart:42:15
      
  3. 検証結果の概要(成功時):

    ✅ Flutter 프로젝트 생성 완료!
    ✅ 코드 생성 완료 (Freezed, Drift, JSON Serializable)
    ✅ Flutter analyze 통과 (0-1 issues found, info 레벨만)
    ✅ 모든 패키지 설치 완료
    
  4. プロジェクト情報の提示:

    • フォルダー名:[ユーザー入力値](例:my_habit_app)
    • プロジェクト名(パッケージ名):[ユーザー入力値](例:habit_app)
    • 組織名:[ユーザー入力値](例:com.example)
    • ドメイン:[選択したドメイン](Todo/Habit/Note/Expense/Custom)
    • 選択したスタック:[プリセット名](GoRouter、Drift、FPDart など)
    • 主な機能:[ドメイン] の CRUD、多言語対応、ローカルストレージなど
    • 生成されたファイル:XX 個の Dart ファイル(core、data、domain、presentation)
  5. 実行方法の案内:

    cd [폴더명]
    flutter run
    
  6. 次のステップの提案(任意、ドメイン別):

    • Todo:項目の追加/編集/削除、フィルタリング(すべて/進行中/完了)、完了状態の切り替え
    • Habit:習慣の記録、連続記録の確認、目標達成率、統計の確認
    • Note:メモの作成/編集、タグの追加、メモの固定、検索
    • Expense:支出の記録、カテゴリ別統計、月別集計、フィルタリング
    • 共通:言語の切り替え(英語 ↔ 韓国語)、ダーク/ライトテーマの切り替え

コア原則

  • リポジトリパターン:データレイヤーとドメインレイヤーを分離
  • 依存性注入:Riverpod 3.x による依存関係の管理
  • 不変性:Freezed で不変モデルを生成
  • 多言語対応:Easy Localization による i18n
  • モダンな UI:FluentUI Icons を使用

参考ファイル

references/setup-guide.md - 完全ガイド

  • 基本セットアップ(ドメイン別 CRUD、多言語対応、FluentUI Icons)
  • 選択オプション:GoRouter、Auth、FPDart、Google Fonts、Responsive Utils、パッケージの更新

注意事項

  • 対話型スキル:ユーザーがドメインとプリセットを選択して、カスタムアプリを構成
  • 対応ドメイン:Todo、Habit、Note、Expense、Custom(ユーザー定義)
  • プリセット:Full Stack、Essential、Minimal、Custom
  • 選択可能な機能:GoRouter、Auth、FPDart、Google Fonts、Responsive Utils
  • 標準で含まれる機能:Riverpod 3.x、Easy Localization、FluentUI Icons、Drift、Dio、SharedPreferences
  • 多言語対応:英語/韓国語(拡張可能)
  • プラットフォーム:Android/Kotlin、iOS/Swift(Web/Windows/Linux を除く)
  • 品質保証:
    • すべてのプロジェクトで flutter analyze の合格が必須
    • package: imports のスタイルに準拠
    • 型安全性を保証
    • コード生成を自動化
    • ドメインごとに最適化された UI/UX

コメント