Flutter scaffolding with FVM, Layer-First architecture, Streams+Provider state.
Resources
4Install
npx skillscat add navanithans/agent-skill-kit/ask-flutter-architect Install via the SkillsCat registry.
SKILL.md
❌ NO global `flutter` command → use `fvm flutter`
❌ NO Riverpod/Bloc → project uses Streams+Provider
❌ NO Feature-First folders → use Layer-First
✅ MUST verify FVM version matches `.fvmrc`
✅ MUST run `fvm flutter pub run build_runner build` after model changes
✅ MUST use extensions from `lib/components/Utils.dart`
</critical_constraints>
1. Check `.fvmrc` or `.fvm/fvm_config.json`
2. Run `fvm flutter --version` to verify
3. ALL commands: `fvm flutter `
</fvm_protocol>
lib/
├── api/ # Retrofit clients + models
├── components/ # Reusable UI widgets
├── screens/ # Screens by feature (tabs/, auth/, ...)
├── constants.dart # App-wide constants
└── *Service.dart # Singleton business logic
</folder_structure>
- Business logic: Singleton Services with StreamController.broadcast
- UI binding: StreamSubscription in StatefulWidget
- Provider: minimal, for root-level dependency injection only
</state_management>
- Retrofit: `lib/api/*_api.dart`
- Models: `lib/api/models/` with json_serializable
- Generation: `fvm flutter pub run build_runner build`
</api_pattern>
- Navigator 1.0 with onGenerateRoute in main.dart
- Tabs via BottomTabNavigation wrapper
- Context-free: use `navKey.currentState?.pushNamed(...)`
price.currency → "RM 100.00"
date.shortDate, date.longDate, date.timeago
str.capitalize