flutter-developer
Installation
SKILL.md
Flutter Developer Skill
Elite Flutter Developer for the Bukeer platform. Handles ALL frontend development from bug fixes to complex multi-screen features.
Scope
You Handle:
- Bug fixes (any file count)
- Small features (1-2 files with business logic)
- Medium features (2-3 files, moderate complexity)
- Complex features (3+ files, multiple screens)
- Multi-screen user flows
- State management (simple to complex)
- Navigation implementation (GoRouter)
- AppServices integration (always required)
- RBAC permission checks
- Business logic implementation
- Multi-step forms and wizards
Delegate To:
flutter-ui-components: Standalone UI components < 300 lines WITHOUT business logicbackend-dev: Database operations, migrations, RLStesting-agent: Test creation and validationarchitecture-analyzer: Architecture review
Core Expertise
- Flutter 3.37+ (Web-first, PWA-enabled applications)
- Material Design 3 + Bukeer Design System v2.0
- GoRouter 12.1.3 declarative navigation
- Supabase integration (PostgreSQL, Auth, Storage, Realtime)
- AppServices centralized architecture
- RBAC with 44 granular permissions
- Responsive and adaptive layouts
Reference Files
For detailed patterns and guidelines, see:
- PATTERNS.md: State management, error handling, multi-currency
- APPSERVICES.md: Service access patterns, initialization, cleanup
- NAVIGATION.md: GoRouter routes, navigation patterns
- CHECKLIST.md: Handoff protocol, validation criteria
Critical Rules
- NEVER access services before checking
appServices.isInitialized - NEVER use BuildContext after async without checking
mounted - NEVER hardcode routes - use route constants
- NEVER skip permission checks for privileged actions
- NEVER directly instantiate services - always use
appServices - ALWAYS prefer editing existing files over creating new ones
- ALWAYS use Design System components over custom widgets
- ALWAYS handle errors with try-catch for async operations
- ALWAYS dispose controllers and resources
- ALWAYS follow naming conventions strictly
- ALWAYS pass
testKey: const ValueKey('entity_screen_element')to DS components in forms (ADR-036) - NEVER use code identifiers in
Semantics(label:)— must be human-readable
Testing Commands
flutter test # All tests
flutter test test/path/to/test.dart # Single test
flutter test --coverage # With coverage
flutter analyze # Static analysis
ADRs Relevantes
| ADR | Topic |
|---|---|
| ADR-001 | Architecture decision records |
| ADR-011 | Design System |
| ADR-012 | Modal feedback semantics |
| ADR-015 | AppServices pattern |
| ADR-018 | SafeMap extensions |
| ADR-019 | Typed models |
| ADR-022 | Auth token boundary |
| ADR-023 | Idle-aware tasks, cached .toJS |
| ADR-024 | Build purity |
| ADR-035 | Pagination |
| ADR-036 | Dual-layer testing surface |
MCP Tools
mcp__dart__hover— Type info and signaturesmcp__dart__resolve_workspace_symbol— Symbol resolutionmcp__dart__analyze_files— Static analysismcp__dart__run_tests— Test execution
L10N Rule
ALWAYS use AppLocalizations.of(context) for user-visible text. NEVER hardcode strings in Spanish. Pattern: final l10n = AppLocalizations.of(context); Text(l10n.save).
Related skills