skills/vp-k/flutter-craft/flutter-planning

flutter-planning

SKILL.md

Writing Flutter Implementation Plans

Overview

Write comprehensive implementation plans assuming the engineer has zero context for our codebase. Document everything they need: which files to create/modify for each task, complete code, testing approach, how to verify it works. Give them the whole plan as bite-sized tasks following Clean Architecture layer order.

Announce at start: "I'm using the flutter-planning skill to create the implementation plan."

Save plans to: docs/plans/YYYY-MM-DD-<feature-name>-plan.md

Feature-Driven Development Order

CRITICAL: Follow Clean Architecture layer order:

1. Domain Layer (First)
   ├── Entities
   ├── Repository interfaces
   └── UseCases (optional)

2. Data Layer (Second)
   ├── Models (DTOs with fromJson/toJson)
   ├── DataSources (Remote/Local)
   └── Repository implementations

3. Presentation Layer (Third)
   ├── State Management (BLoC/Provider/Riverpod)
   ├── Widgets
   └── Screens

4. Tests (After implementation)
   ├── 1순위: Repository, DataSource unit tests
   ├── 2순위: State management unit tests
   └── 3순위: Widget tests (optional)

5. Integration & Wiring
   └── DI setup (get_it, injectable, etc.)

Plan Document Header

Every plan MUST start with this header:

# [Feature Name] Implementation Plan

> **For Claude:** REQUIRED SUB-SKILL: Use flutter-craft:flutter-executing to implement this plan task-by-task.

**Goal:** [One sentence describing what this builds]

**Architecture:** Clean Architecture with [BLoC/Provider/Riverpod]

**Dependencies:** [New packages needed]

---

Task Structure

### Task N: [Component Name]

**Layer:** Domain / Data / Presentation / Test

**Files:**
- Create: `lib/features/<feature>/domain/entities/user.dart`
- Modify: `lib/features/<feature>/data/repositories/user_repository_impl.dart`
- Test: `test/features/<feature>/data/repositories/user_repository_test.dart`

**Implementation:**

```dart
// Complete code here - no placeholders like "add validation"
class User {
  final String id;
  final String name;
  final String email;

  const User({
    required this.id,
    required this.name,
    required this.email,
  });
}

Verification:

flutter analyze lib/features/<feature>/
# Expected: No issues found!

Commit:

git add lib/features/<feature>/domain/entities/user.dart
git commit -m "feat(<feature>): add User entity"

## Task Granularity

**Each task is one logical unit (2-10 minutes):**

| Task Type | Example |
|-----------|---------|
| Entity | Create User entity with properties |
| Repository Interface | Define UserRepository abstract class |
| Model | Create UserModel with fromJson/toJson |
| DataSource | Implement RemoteUserDataSource |
| Repository Impl | Implement UserRepositoryImpl |
| State | Create UserBloc with states and events |
| Widget | Create UserListItem widget |
| Screen | Create UserListScreen |
| Test | Write UserRepository unit tests |

## Example Plan Structure

```markdown
# Authentication Implementation Plan

> **For Claude:** REQUIRED SUB-SKILL: Use flutter-craft:flutter-executing

**Goal:** Implement user login/logout with token-based auth

**Architecture:** Clean Architecture with BLoC

**Dependencies:**
```bash
flutter pub add dio
flutter pub add flutter_bloc
flutter pub add get_it

Domain Layer

Task 1: User Entity

Layer: Domain Files:

  • Create: lib/features/auth/domain/entities/user.dart ...

Task 2: AuthRepository Interface

Layer: Domain Files:

  • Create: lib/features/auth/domain/repositories/auth_repository.dart ...

Data Layer

Task 3: UserModel

Layer: Data Files:

  • Create: lib/features/auth/data/models/user_model.dart ...

Task 4: AuthRemoteDataSource

Layer: Data Files:

  • Create: lib/features/auth/data/datasources/auth_remote_datasource.dart ...

Task 5: AuthRepositoryImpl

Layer: Data Files:

  • Create: lib/features/auth/data/repositories/auth_repository_impl.dart ...

Presentation Layer

Task 6: AuthBloc

Layer: Presentation Files:

  • Create: lib/features/auth/presentation/bloc/auth_bloc.dart
  • Create: lib/features/auth/presentation/bloc/auth_event.dart
  • Create: lib/features/auth/presentation/bloc/auth_state.dart ...

Task 7: LoginScreen

Layer: Presentation Files:

  • Create: lib/features/auth/presentation/screens/login_screen.dart ...

Testing

Task 8: AuthRepository Unit Tests

Layer: Test (Priority 1) Files:

  • Create: test/features/auth/data/repositories/auth_repository_impl_test.dart ...

Task 9: AuthBloc Unit Tests

Layer: Test (Priority 2) Files:

  • Create: test/features/auth/presentation/bloc/auth_bloc_test.dart ...

Integration

Task 10: DI Setup

Layer: Integration Files:

  • Modify: lib/core/di/injection.dart ...

## Remember

- **Exact file paths always** - Full path from lib/ or test/
- **Complete code in plan** - No "add validation here"
- **Verification commands** - flutter analyze, flutter test
- **Layer order** - Domain → Data → Presentation → Test
- **One commit per task** - Keep commits atomic
- **Conventional commits** - feat(), fix(), test(), refactor()

## Execution Handoff

After saving the plan, offer execution choice:

**"Plan complete and saved to `docs/plans/<filename>.md`. Two execution options:**

**1. Subagent-Driven (this session)** - Dispatch fresh subagent per task, review between tasks, fast iteration

**2. Batch Execution (this session)** - Execute 3 tasks at a time with checkpoints

**Which approach?"**

**If Subagent-Driven chosen:**
- **REQUIRED SUB-SKILL:** Use flutter-craft:flutter-subagent-dev
- Fresh subagent per task + 2-stage code review

**If Batch Execution chosen:**
- **REQUIRED SUB-SKILL:** Use flutter-craft:flutter-executing
- Execute 3 tasks, verify, checkpoint, continue

## REQUIRED SUB-SKILL

After completing the plan, you MUST offer execution options and invoke one of:
→ **flutter-craft:flutter-executing** (batch execution)
→ **flutter-craft:flutter-subagent-dev** (subagent per task)

This is NOT optional. Plans without execution are incomplete.
Weekly Installs
1
GitHub Stars
4
First Seen
Feb 24, 2026
Installed on
cursor1