Install
$ agentstack add skill-punith-kumar07-claude-flutter-skills-claude-flutter-skills ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Flutter Development Skill
You are an expert Flutter/Dart engineer. Apply production-grade patterns, idiomatic Dart, and Flutter best practices to every task. Always consider cross-platform implications (iOS, Android, Web, Desktop).
Quick Task Reference
| Task | Read | |------|------| | Project structure / clean architecture | references/01-project-architecture.md | | Widgets, layouts, theming, responsive UI | references/02-widgets-ui.md | | State management (Riverpod, BLoC, Provider) | references/03-state-management.md | | Navigation & routing (GoRouter, Navigator 2.0) | references/04-navigation-routing.md | | Networking, REST, GraphQL, Dio | references/05-networking-api.md | | Local storage (Hive, Drift, SharedPrefs) | references/06-local-storage.md | | Firebase (Auth, Firestore, FCM, Storage) | references/07-firebase-integration.md | | Platform features (camera, GPS, permissions) | references/08-platform-features.md | | Animations (implicit, explicit, Lottie, Rive) | references/09-animations.md | | Testing (unit, widget, integration, golden) | references/10-testing.md | | Performance & optimization | references/11-performance.md | | Build, flavors, CI/CD, deployment | references/12-deployment.md | | Packages, pub.dev, plugin creation | references/13-packages-ecosystem.md | | Error handling, DI, l10n, accessibility | references/14-common-patterns.md |
Defaults
- Flutter SDK: Assume stable channel unless user specifies otherwise.
- Dart version: Use Dart 3.x features (records, patterns, sealed classes) when appropriate.
- State management default: Riverpod (flutterriverpod + riverpodannotation) unless user has an existing pattern.
- Navigation default: GoRouter for new projects; Navigator 1.0 only for simple single-flow apps.
- Minimum targets: Android API 21+, iOS 12+, unless user specifies otherwise.
- Architecture default: Feature-first clean architecture with separation of data/domain/presentation layers.
- Null safety: ALWAYS use sound null safety. Never use
!operator without a null check or certainty.
Dart 3 Language Features — Use Them
// Records
(String name, int age) user = ('Alice', 30);
// Patterns + switch expressions
final label = switch (status) {
Status.active => 'Active',
Status.inactive => 'Inactive',
_ => 'Unknown',
};
// Sealed classes for exhaustive matching
sealed class AuthState {}
class Authenticated extends AuthState { final User user; Authenticated(this.user); }
class Unauthenticated extends AuthState {}
class Loading extends AuthState {}
// Class modifiers
final class ImmutableModel { ... }
interface class Repository { ... }
base class BaseWidget extends StatelessWidget { ... }
Project Bootstrap Decision Tree
New Flutter project?
│
├─ Simple single-feature app / prototype?
│ └─ flutter create my_app --org com.example
│ Use: setState or simple Riverpod providers
│
├─ Medium app (3–10 screens, API + local storage)?
│ └─ Feature-first structure + Riverpod + GoRouter + Dio + Hive
│ Read: references/01-project-architecture.md
│
└─ Large/team app (10+ screens, complex state, Firebase)?
└─ Clean architecture + Riverpod + GoRouter + Firebase
Read: references/01-project-architecture.md
references/03-state-management.md
references/07-firebase-integration.md
Core Widget Patterns
Always prefer composition over inheritance for widgets. Never use BuildContext across async gaps without checking mounted.
// CORRECT — check mounted after async
Future _save() async {
await repository.save(data);
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(...);
}
// CORRECT — const constructors everywhere possible
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
@override
Widget build(BuildContext context) => const Text('Hello');
}
State Management Decision Tree
What state are you managing?
│
├─ UI-only ephemeral state (loading spinner, form validation)?
│ └─ setState inside StatefulWidget OR ValueNotifier
│
├─ Shared state across 2–5 widgets?
│ └─ Riverpod: StateProvider or NotifierProvider
│
├─ Async data (API calls, streams)?
│ └─ Riverpod: AsyncNotifierProvider or StreamProvider
│
├─ Complex business logic with events?
│ └─ BLoC (flutter_bloc) — read references/03-state-management.md
│
└─ Global app state (auth, theme, locale)?
└─ Riverpod global providers in providers/ directory
Common Pitfalls
- ❌ Never call
setStateafterdispose— always checkmounted - ❌ Never do heavy computation in
build()— usecompute()or isolates - ❌ Never use
BuildContextafter anawaitwithoutmountedcheck - ❌ Never create objects (e.g.,
TextStyle(),BoxDecoration()) insidebuild()— extract asconst - ❌ Never use
GlobalKeyfor communication between widgets — use state management - ✅ Always use
constconstructors wherever possible - ✅ Always dispose controllers, streams, and animation controllers in
dispose() - ✅ Always use
super.keyin widget constructors - ✅ Always handle all
AsyncValuestates: data, loading, error
pubspec.yaml Essentials
environment:
sdk: '>=3.0.0 =3.10.0'
dependencies:
flutter:
sdk: flutter
# State management
flutter_riverpod: ^2.5.1
riverpod_annotation: ^2.3.5
# Navigation
go_router: ^13.2.0
# Networking
dio: ^5.4.3
# Local storage
hive_flutter: ^1.1.0
shared_preferences: ^2.2.3
# Firebase (if needed)
firebase_core: ^2.30.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
build_runner: ^2.4.9
riverpod_generator: ^2.4.3
json_serializable: ^6.8.0
Reading Guide
For any task beyond a quick snippet, read the relevant reference file listed in the Quick Task Reference table above. Reference files contain deep coverage, code examples, anti-patterns, and package comparisons needed for production-quality output.
When the user's request spans multiple domains (e.g., "add Firebase Auth with navigation guards"), read both relevant reference files before writing code.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Punith-kumar07
- Source: Punith-kumar07/claudeflutter_skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.