Claude Code Plugins

Community-maintained marketplace

Feedback

flutter-init

@dayoumin/Skills
1
0

Use when user wants to create a new Flutter project (Todo/Habit/Note/Expense/Custom domain) with Clean Architecture, Riverpod 3.0, Drift, and modern Flutter stack

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name flutter-init
description Use when user wants to create a new Flutter project (Todo/Habit/Note/Expense/Custom domain) with Clean Architecture, Riverpod 3.0, Drift, and modern Flutter stack

Flutter Init Skill

도메인 기반 Flutter 프로젝트를 생성하고 현대적인 아키텍처로 자동 설정합니다. Todo, Habit, Note, Expense 또는 Custom 도메인을 선택하여 Clean Architecture 기반의 완전한 CRUD 앱을 즉시 생성할 수 있습니다.

Quick Start

스킬 실행 시 다음 정보를 입력받습니다:

  • 폴더명 (예: 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

Task Instructions

IMPORTANT: 이 스킬은 대화형으로 진행됩니다.

Step 1: 도메인 및 프로젝트 설정 질문

먼저 사용자에게 이렇게 물어보세요:

"Flutter 앱을 생성합니다. 다음 정보를 알려주세요:

1. 도메인(엔티티) 선택

어떤 도메인의 앱을 만드시겠습니까?

A) 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. 스택 프리셋 선택

다음 중 하나를 선택해주세요:

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 시스템을 포함하시겠습니까? (예/아니오)

Step 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. 코드 생성: dart run build_runner build --delete-conflicting-outputs

  8. 코드 검증 및 오류 수정:

    a. flutter analyze 실행

    b. 발견된 오류 수정:

    • import 경로 수정: 모든 상대 경로를 package: 형식으로 변경
      • 예: import '../../domain/entities/todo.dart';import 'package:todo_app/domain/entities/todo.dart';
    • 패키지 의존성 확인: 누락된 패키지 추가 (예: shared_preferences)
    • Riverpod 3.0 호환성: StateNotifierNotifier, StateProviderNotifierProvider
    • FluentUI 아이콘 이름 확인: 존재하지 않는 아이콘은 대체
    • 타입 안전성: switch expression 사용, null safety 준수

    c. 재검증: 모든 error 레벨 오류가 없을 때까지 반복

    d. 목표: flutter analyze 결과가 "0-1 issues found" (info 레벨만 허용)

    ✅ CRITICAL: 이 단계는 필수입니다. 모든 error를 제거해야 다음 단계로 진행할 수 있습니다.

Step 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: 지출 기록, 카테고리별 통계, 월별 집계, 필터링
    • 공통: 언어 전환 (영어 ↔ 한국어), 다크/라이트 테마 전환

Core Principles

  • Repository 패턴: 데이터 레이어와 도메인 레이어 분리
  • 의존성 주입: Riverpod 3.x를 통한 의존성 관리
  • 불변성: Freezed로 불변 모델 생성
  • 다국어 지원: Easy Localization으로 i18n
  • 모던 UI: FluentUI Icons 사용

Reference Files

references/setup-guide.md - 완전한 가이드

  • 기본 셋업 (도메인별 CRUD, 다국어, FluentUI Icons)
  • 선택 옵션: GoRouter, Auth, FPDart, Google Fonts, Responsive Utils, 패키지 업데이트

Notes

  • 대화형 스킬: 사용자에게 도메인과 프리셋 선택을 통해 맞춤형 앱 구성
  • 도메인 지원: 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 (웹/윈도우/리눅스 제외)
  • 품질 보증:
    • 모든 프로젝트는 flutter analyze 통과 필수
    • package: imports 스타일 준수
    • 타입 안전성 보장
    • 코드 생성 자동화
    • 도메인별 최적화된 UI/UX