flutter-expert
Skill18 starsChanged 5 months agoMITView on GitHub
Use when building cross-platform applications with Flutter 3+ and Dart. Invoke for widget development, Riverpod/Bloc state management, GoRouter navigation, platform-specific implementations, performance optimization.
We split this skill into the rules it gives an agent
10 rules. 2 are common, 1 is distinctive, and 7 are very specific to this project.
2
Common
Most of the 15 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
If flutter analyze reports issues: fix all lints and warnings before proceeding.
- Very specific: line 35
If tests fail: inspect widget tree with Flutter DevTools, fix failing assertions, re-run flutter test
- Distinctive: line 37
If coverage drops or tests fail: identify untested branches, add targeted tests, re-run before merging
- Very specific: line 39
If jank persists: check rebuild counts in the Performance overlay, isolate expensive build() calls, apply const or move state closer to …
- Very specific: line 107
Use const constructors wherever possible
- Very specific: line 109
Use Consumer/ConsumerWidget for state (not StatefulWidget)
- Common: line 110
Follow Material/Cupertino design guidelines
- Very specific: line 112
Test widgets with flutter_test
- Very specific: line 117
Use setState for app-wide state
- Common: line 134
When implementing Flutter features, provide:
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Flutter Expert
Senior mobile engineer building high-performance cross-platform applications with Flutter 3 and Dart.
When to Use This Skill
- Building cross-platform Flutter applications
- Implementing state management (Riverpod, Bloc)
- Setting up navigation with GoRouter
- Creating custom widgets and animations
- Optimizing Flutter performance
- Platform-specific implementations
Core Workflow
- Setup — Scaffold project, add dependencies (
flutter pub get), configure routing - State — Define Riverpod providers or Bloc/Cubit classes; verify with
flutter analyze- If
flutter analyzereports issues: fix all lints and warnings before proceeding; re-run until clean
- If
- Widgets — Build reusable, const-optimized components; run
flutter testafter each feature- If tests fail: inspect widget tree with Flutter DevTools, fix failing assertions, re-run
flutter test
- If tests fail: inspect widget tree with Flutter DevTools, fix failing assertions, re-run
- Test — Write widget and integration tests; confirm with
flutter test --coverage- If coverage drops or tests fail: identify untested branches, add targeted tests, re-run before merging
- Optimize — Profile with Flutter DevTools (
flutter run --profile), eliminate jank, reduce rebuilds- If jank persists: check rebuild counts in the Performance overlay, isolate expensive
build()calls, applyconstor move state closer to consumers
- If jank persists: check rebuild counts in the Performance overlay, isolate expensive
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
| Riverpod | references/riverpod-state.md | State management, providers, notifiers |
| Bloc | references/bloc-state.md | Bloc, Cubit, event-driven state, complex business logic |
| GoRouter | references/gorouter-navigation.md | Navigation, routing, deep linking |
| Widgets | references/widget-patterns.md | Building UI components, const optimization |
| Structure | references/project-structure.md | Setting up project, architecture |
| Performance | references/performance.md | Optimization, profiling, jank fixes |
Code Examples
Riverpod Provider + ConsumerWidget (correct pattern)
// provider definition
final counterProvider = StateNotifierProvider<CounterNotifier, int>(
(ref) => CounterNotifier(),
);
class CounterNotifier extends StateNotifier<int> {
CounterNotifier() : super(0);
void increment() => state = state + 1; // new instance, never mutate
}
// consuming widget — use ConsumerWidget, not StatefulWidget
class CounterView extends ConsumerWidget {
const CounterView({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final count = ref.watch(counterProvider);
return Text('$count');
}
}Before / After — State Management
// ❌ WRONG: app-wide state in setState
class _BadCounterState extends State<BadCounter> {
int _count = 0;
void _inc() => setState(() => _count++); // causes full subtree rebuild
}
// ✅ CORRECT: scoped Riverpod consumer
class GoodCounter extends ConsumerWidget {
const GoodCounter({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final count = ref.watch(counterProvider);
return IconButton(
onPressed: () => ref.read(counterProvider.notifier).increment(),
icon: const Icon(Icons.add), // const on static widgets
);
}
}Constraints
MUST DO
- Use
constconstructors wherever possible - Implement proper keys for lists
- Use
Consumer/ConsumerWidgetfor state (notStatefulWidget) - Follow Material/Cupertino design guidelines
- Profile with DevTools, fix jank
- Test widgets with
flutter_test
MUST NOT DO
- Build widgets inside
build()method - Mutate state directly (always create new instances)
- Use
setStatefor app-wide state - Skip
conston static widgets - Ignore platform-specific behavior
- Block UI thread with heavy computation (use
compute())
Troubleshooting Common Failures
| Symptom | Likely Cause | Recovery |
flutter analyze errors | Unresolved imports, missing const, type mismatches | Fix flagged lines; run flutter pub get if imports are missing |
| Widget test assertion failures | Widget tree mismatch or async state not settled | Use tester.pumpAndSettle() after state changes; verify finder selectors |
| Build fails after adding package | Incompatible dependency version | Run flutter pub upgrade --major-versions; check pub.dev compatibility |
| Jank / dropped frames | Expensive build() calls, uncached widgets, heavy main-thread work | Use RepaintBoundary, move heavy work to compute(), add const |
| Hot reload not reflecting changes | State held in StateNotifier not reset | Use hot restart (R in terminal) to reset full app state |
Output Templates
When implementing Flutter features, provide:
- Widget code with proper
constusage - Provider/Bloc definitions
- Route configuration if needed
- Test file structure
Other versions17 projects use a version of this.
Word for word · 1
- PIXARTSeu/Synapse★ 9100% same
Edited · 9
- bagisto/opensource-ecommerce-mobile-app★ 16k70% same
- Jeffallan/claude-skills★ 12k91% same
- FNOSP/FlyNarwhal★ 49670% same
- FNOSP/fntv-client-multiplatform★ 49670% same
- thesaifalitai/claude-setup★ 855% same
- zacklecon/claude-skills★ 370% same
- hu465/claude-skills-★ 091% same
- james-paul25/claude-skill★ 035% same
- usmanmubarak1/ClaudeSkilledAgents★ 064% same
Wrote their own version · 7
- jshsakura/awesome-opencode-skills★ 30same name
- belokonm/claude-supercode-skills★ 11same name
- xfstudio/skills★ 9same name
- marttp/my_agent_skills_I_use★ 4same name
- ai4brands-design/claude-skills★ 2same name
- Gavinoio/skills★ 1same name
- vinayaksaxena1-maker/antigravity-disaster-recovery★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use fintech-engineer, react-specialist and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
belokonmSkillfintech-engineer
Expert in financial technology systems, double-entry ledger design, high-precision math, and regulatory compliance. Use when building payment systems, ledger architectures, financial calculations, PCI compliance, or banking integrations. Triggers include "fintech", "ledger", "double-entry", "financial calculations", "PCI compliance", "banking API".
Also in 3 projects that use this
belokonmSkillreact-specialist
Expert React developer specializing in React 18+, Next.js ecosystem, and modern React patterns. This agent excels at building performant, scalable React applications using hooks, concurrent features, state management solutions like Zustand, and data fetching with TanStack Query.
Also in 3 projects that use this
VercelSkilltechnical-writer
Write, review, and edit developer documentation for SDKs, libraries, and frameworks, including sites such as ai-sdk.dev and chat-sdk.dev. Use for getting-started guides, tutorials, API references, conceptual explanations, integration guides, migration guides, troubleshooting, and code examples.
Also in 3 projects that use this
- +3 more from belokonm
In this repository83 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .codex/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- source-command-fix-buildSkill
- fine-tuning-expertSkill
- ml-pipelineSkill
- rag-architectSkill
- spark-engineerSkill
- api-designerSkill
- architecture-designerSkill
- code-documenterSkill
- debugging-wizardSkill
- feature-forgeSkill
- fullstack-guardianSkill
- graphql-architectSkill
- legacy-modernizerSkill
- microservices-architectSkill
- database-optimizerSkill
- postgres-proSkill
- sql-proSkill
- csharp-developerSkill
- dotnet-core-expertSkill
- angular-architectSkill
- nextjs-developerSkill
- react-expertSkill
- react-native-expertSkill
- senior-frontendSkill
- ui-ux-pro-maxSkill
- vue-expert-jsSkill
- vue-expertSkill
- cpp-proSkill
- golang-proSkill
- rust-engineerSkill
- cli-developerSkill
- cloud-architectSkill
- devops-engineerSkill
- kubernetes-specialistSkill
- mcp-developerSkill
- monitoring-expertSkill
- sre-engineerSkill
- terraform-engineerSkill
- websocket-engineerSkill
- java-architectSkill
- kotlin-specialistSkill
- javascript-proSkill
- nestjs-expertSkill
- typescript-proSkill
- spring-boot-engineerSkill
- spring-boot-engineer_znSkill
- laravel-specialistSkill
- php-proSkill
- competitive-analysisSkill
- meeting-notesSkill
- prd-templateSkill
- stakeholder-updateSkill
- user-research-synthesisSkill
- django-expertSkill
- fastapi-expertSkill
- pandas-proSkill
- python-proSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

