Agent skill

flutter-architecture

Comprehensive guide for architecting Flutter applications following MVVM pattern and best practices with feature-first project organization. Use when working with Flutter projects to structure code properly, implement clean architecture layers (UI, Data, Domain), apply recommended design patterns, and organize projects using feature-first approach for scalable, maintainable apps.

Stars 0
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/Im5tu/claude/tree/main/skills/flutter-architecture

SKILL.md

Flutter Architecture

Overview

Provides architectural guidance and best practices for building scalable Flutter applications using MVVM pattern, layered architecture, and recommended design patterns from the Flutter team.

Project Structure: Feature-First vs Layer-First

Choose the right project organization based on your app's complexity and team size.

Feature-First (Recommended for teams)

Organize code by business features:

lib/
├── features/
│   ├── auth/
│   │   ├── data/
│   │   ├── domain/
│   │   └── presentation/
│   ├── todos/
│   │   ├── data/
│   │   ├── domain/
│   │   └── presentation/
│   └── settings/
│       ├── data/
│       ├── domain/
│       └── presentation/
├── shared/
│   ├── core/
│   ├── data/
│   └── ui/
└── main.dart

When to use:

  • Medium to large apps (10+ features)
  • Team development (2+ developers)
  • Frequently adding/removing features
  • Complex business logic

Benefits:

  • Features are self-contained units
  • Easy to add/remove entire features
  • Clear feature boundaries
  • Reduced merge conflicts
  • Teams work independently on features

See Feature-First Guide for complete implementation details.

Layer-First (Traditional)

Organize code by architectural layers:

lib/
├── data/
│   ├── repositories/
│   ├── services/
│   └── models/
├── domain/
│   ├── use-cases/
│   └── entities/
├── presentation/
│   ├── views/
│   └── viewmodels/
└── shared/

When to use:

  • Small to medium apps
  • Few features (<10)
  • Solo developers or small teams
  • Simple business logic

Benefits:

  • Clear separation by layer
  • Easy to find components by type
  • Less nesting

Quick Start

Start with these core concepts:

  1. Separation of concerns - Split app into UI and Data layers
  2. MVVM pattern - Use Views, ViewModels, Repositories, and Services
  3. Single source of truth - Repositories hold the authoritative data
  4. Unidirectional data flow - State flows from data → logic → UI

For detailed concepts, see Concepts.

Architecture Layers

Flutter apps should be structured in layers:

  • UI Layer: Views (widgets) and ViewModels (UI logic)
  • Data Layer: Repositories (SSOT) and Services (data sources)
  • Domain Layer (optional): Use-cases for complex business logic

See Layers Guide for detailed layer responsibilities and interactions.

Core Components

Views

  • Compose widgets for UI presentation
  • Contain minimal logic (animations, simple conditionals, routing)
  • Receive data from ViewModels
  • Pass events via ViewModel commands

ViewModels

  • Transform repository data into UI state
  • Manage UI state and commands
  • Handle business logic for UI interactions
  • Expose state as streams or change notifiers

Repositories

  • Single source of truth for data types
  • Aggregate data from services
  • Handle caching, error handling, retry logic
  • Expose data as domain models

Services

  • Wrap external data sources (APIs, databases, platform APIs)
  • Stateless data access layer
  • One service per data source

Design Patterns

Common patterns for robust Flutter apps:

  • Command Pattern - Encapsulate actions with Result handling
  • Result Type - Type-safe error handling
  • Repository Pattern - Abstraction over data sources
  • Offline-First - Optimistic UI updates with sync

See Design Patterns for implementation details.

When to Use This Skill

Use this skill when:

  • Designing or refactoring Flutter app architecture
  • Choosing between feature-first and layer-first project structure
  • Implementing MVVM pattern in Flutter
  • Creating scalable app structure for teams
  • Adding new features to existing architecture
  • Applying best practices and design patterns

Resources

references/

  • concepts.md - Core architectural principles (separation of concerns, SSOT, UDF)
  • feature-first.md - Feature-first project organization and best practices
  • mvvm.md - MVVM pattern implementation in Flutter
  • layers.md - Detailed layer responsibilities and interactions
  • design-patterns.md - Common patterns and implementations

assets/

  • command.dart - Command pattern template for encapsulating actions
  • result.dart - Result type for safe error handling
  • examples/ - Code examples showing architecture in practice

Expand your agent's capabilities with these related and highly-rated skills.

Im5tu/claude

flutter-animations

Comprehensive guide for implementing animations in Flutter. Use when adding motion and visual effects to Flutter apps: implicit animations (AnimatedContainer, AnimatedOpacity, TweenAnimationBuilder), explicit animations (AnimationController, Tween, AnimatedWidget/AnimatedBuilder), hero animations (shared element transitions), staggered animations (sequential/overlapping), and physics-based animations. Includes workflow for choosing the right animation type, implementation patterns, and best practices for performance and user experience.

0 0
Explore
Im5tu/claude

dotnet-source-gen-logging

Converts logging to use the LoggerMessage source generator for high-performance, AOT-compatible logging. Also use when the user mentions "LoggerMessage," "logging source generator," "high-performance logging," "optimize logging," "AOT logging," or "structured logging source gen." For full AOT analysis, see dotnet-aot-analysis.

0 0
Explore
Im5tu/claude

dotnet-source-gen-options-validation

Converts options validation to use the compile-time source generator for AOT-compatible, reflection-free validation. Also use when the user mentions "OptionsValidator," "options validation source gen," "AOT options validation," "compile-time validation," "ValidateDataAnnotations replacement," or "reflection-free validation." For full AOT analysis, see dotnet-aot-analysis.

0 0
Explore
Im5tu/claude

dotnet-enable-testing-platform

Enables the Microsoft Testing Platform runner in global.json. Also use when the user mentions "testing platform," "Microsoft.Testing.Platform," "new test runner," "migrate test runner," "global.json testing," or "modern test platform."

0 0
Explore
Im5tu/claude

dotnet-json-polymorphic

Configures polymorphic JSON serialization with [JsonPolymorphic] and [JsonDerivedType] attributes. Also use when the user mentions "polymorphic JSON," "JsonDerivedType," "JSON inheritance," "type discriminator," "serialize derived types," or "JSON polymorphism." For full JSON source generation, see dotnet-source-gen-json.

0 0
Explore
Im5tu/claude

competitor-alternatives

When the user wants to create competitor comparison or alternative pages for SEO and sales enablement. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' or 'competitive landing pages.' Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. Emphasizes deep research, modular content architecture, and varied section types beyond feature tables.

0 0
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results