"Cross-platform mobile development with Flutter/Dart. Build performant, maintainable Flutter apps with proper widget architecture, state management, platform channels, and testing patterns."
Resources
1Install
npx skillscat add olino3/forge/flutter-expert Install via the SkillsCat registry.
This skill provides guidance for building cross-platform mobile applications using Flutter and Dart, covering widget architecture, state management, platform integration, and testing. It addresses the challenge of creating maintainable, performant apps across iOS, Android, web, and desktop from a single codebase. Developers should use it when building new Flutter projects, reviewing existing code, or migrating between state management solutions.
skill:flutter-expert — Cross-Platform Mobile Development with Flutter/Dart
Version: 1.0.0
Purpose
Build and architect high-quality cross-platform mobile applications with Flutter and Dart. This skill covers widget composition, state management selection (Riverpod, Bloc, Provider, GetX), navigation patterns (GoRouter, auto_route), platform channel integration, performance optimization, and comprehensive testing strategies. Use when building new Flutter apps, reviewing Flutter code, or migrating between state management solutions.
File Structure
skills/flutter-expert/
├── SKILL.md (this file)
└── examples.mdInterface References
- Context: Loaded via ContextProvider Interface
- Memory: Accessed via MemoryStore Interface
- Shared Patterns: Shared Loading Patterns
- Schemas: Validated against context_metadata.schema.json and memory_entry.schema.json
Mandatory Workflow
IMPORTANT: Execute ALL steps in order. Do not skip any step.
Step 1: Initial Analysis
- Gather inputs: target platforms (iOS, Android, Web, Desktop), project type, existing codebase
- Detect Flutter version and Dart SDK version
- Identify state management solution (Riverpod, Bloc/Cubit, Provider, GetX, signals)
- Identify navigation approach (GoRouter, auto_route, Navigator 2.0)
- Detect dependency injection (get_it, injectable, riverpod)
- Determine project structure (feature-first, layer-first, clean architecture)
- Identify project name for memory lookup
Step 2: Load Memory
Follow Standard Memory Loading with
skill="flutter-expert"anddomain="engineering".
Load per-project memory files if they exist:
project_overview.md— Flutter/Dart versions, target platforms, key packageswidget_patterns.md— Established widget composition and reuse patternsstate_management.md— State management approach and conventionsplatform_integrations.md— Platform channel usage and native integrations
Step 3: Load Context
Follow Standard Context Loading for the
engineeringdomain. Stay within the file budget declared in frontmatter.
Step 4: Flutter Development Core
Apply expert-level Flutter/Dart guidance across these dimensions:
Widget Architecture
- Composition over inheritance
- Stateless vs StatefulWidget selection criteria
- Custom RenderObject for performance-critical widgets
- Widget key management (ValueKey, ObjectKey, GlobalKey)
- BuildContext usage and InheritedWidget patterns
- Sliver-based scrolling for complex layouts
State Management
- Riverpod: Provider types (Provider, StateProvider, FutureProvider, StreamProvider, NotifierProvider), family/autoDispose modifiers, ref patterns
- Bloc/Cubit: Event-driven patterns, BlocObserver, multi-repository patterns, Bloc-to-Bloc communication
- Provider: ChangeNotifier patterns, ProxyProvider, multi-provider setup
- Selection guidance based on project complexity and team experience
Navigation & Routing
- GoRouter declarative routing, ShellRoute for nested navigation
- Deep linking configuration (iOS Universal Links, Android App Links)
- Route guards and redirect logic
- Navigation state restoration
Platform Integration
- MethodChannel/EventChannel for native communication
- Pigeon for type-safe platform channels
- Platform-specific UI adaptation (Cupertino vs Material)
- FFI for direct native library calls
- Plugin development patterns
Performance Optimization
- Widget rebuild minimization (const constructors, selective rebuilds)
- Image caching and optimization (cached_network_image)
- List performance (ListView.builder, SliverList)
- Isolate usage for heavy computation
- DevTools profiling and performance overlay
- Shader compilation jank mitigation
Testing Strategy
- Widget testing with WidgetTester
- Golden (snapshot) testing
- Integration testing with patrol or integration_test
- Mocking with mocktail/mockito
- State management testing (Bloc test, Riverpod testing)
Project Structure
- Feature-first vs layer-first organization
- Clean Architecture implementation
- Monorepo with Melos
- Code generation (freezed, json_serializable, build_runner)
Step 5: Generate Output
- Save output to
/claudedocs/flutter-expert_{project}_{YYYY-MM-DD}.md - Follow naming conventions in
../OUTPUT_CONVENTIONS.md
Step 6: Update Memory
Follow Standard Memory Update for
skill="flutter-expert". Store any newly learned patterns, conventions, or project insights.
Update per-project memory:
- project_overview.md: Flutter/Dart versions, packages, target platforms
- widget_patterns.md: Custom widgets, composition patterns established
- state_management.md: Chosen approach, conventions, patterns
- platform_integrations.md: Native integrations, platform channels documented
Compliance Checklist
Before completing, verify:
- All mandatory workflow steps executed in order
- Standard Memory Loading pattern followed (Step 2)
- Standard Context Loading pattern followed (Step 3)
- Flutter/Dart version and state management detected (Step 1)
- Output saved with standard naming convention
- Standard Memory Update pattern followed (Step 6)
Version History
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-02-12 | Initial release — Flutter/Dart cross-platform development |