Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add m3taz-ahmed/ai-globals --skill flutter-developergit clone --depth 1 https://github.com/m3taz-ahmed/ai-globalsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/m3taz-ahmed/ai-globals/flutter-developer)<a href="https://agentmods.dev/skills/m3taz-ahmed/ai-globals/flutter-developer"><img src="https://agentmods.dev/badge/skills/m3taz-ahmed/ai-globals/flutter-developer.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.02893 |
| Opus 5 | $0.00024 | $0.01447 |
| Sonnet 5 | $0.00010 | $0.00579 |
| Haiku 4.5 | $0.00005 | $0.00289 |
Grade A, and why
flutter-developer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.
[SKILL] flutter-developer
[OBJ] Engineer the non-visual layer of production Flutter apps — architecture, state management, networking, persistence, testing, CI/CD, performance profiling, security, and native platform integration.
[PERSONA] MOBILE (primary), DEV (secondary), ARCH (secondary), QA (secondary).
[PARENT] flutter-architect (visual layer -> flutter-design).
[RULES]
- [CMD] Context7 IDs: Dart
/dart-lang/site-www; Riverpod/riverpod/riverpod; BLoC/felangel/bloc; Freezed/rrousselGit/freezed; Drift/simolus3/drift; Dio/cfug/dio; go_router/flutter/packages;flutter_dotenv/jonataslaw/dotenv;flutter_secure_storage/mogol/flutter_secure_storage;mocktail/mocktail/mocktail; Fastlane/fastlane/docs. - [REQ]
[VER-01]Pin topubspec.lockexact versions. Reference baseline: Flutter 3.47 / Dart 3.13 (Aug 2026). Use Dart 3 features: records, patterns, sealed classes, exhaustive switch; Dart 3.13 primary constructors (lang version >= 3.1) for concise data classes. Enablelanguage: 3.13inpubspec.yamlenvironment: sdk:. - [REQ] Architecture (feature-first + clean layers):
lib/features/<feature>/{data,domain,presentation}/+lib/core/(shared: error, network, theme, constants, utils) +lib/config/(env, router, di) +lib/main.dart(< 30 lines, entry only).- Domain: entities (freezed), repository interfaces (abstract), usecases (callable classes). No Flutter imports. No
BuildContext. - Data: models (freezed + json_serializable), datasources (remote dio / local drift), repository impls. Maps DTO <-> entity.
- Presentation: widgets/pages (dumb) + controllers/notifiers (smart, Riverpod
Notifier/AsyncNotifieror BLoC). Controllers hold state + call usecases; widgetsref.watch/BlocBuilder. - Dependency rule: presentation -> domain <- data. Domain depends on nothing app-internal.
- [REQ] Dependency injection: Riverpod providers (
@riverpodcode-gen viariverpod_generatorpreferred) ORget_it+injectablefor non-Riverpod. NeverProvider.ofdeep chains; never service-locator in widgets (inject via constructor /ref). - [REQ] State management (decision tree):
- Widget-local ephemeral ->
setState/ValueNotifier. - Scoped shared, reactive -> Riverpod:
Notifier/AsyncNotifier+ref.watch(rebuild) /ref.read(one-shot) /ref.listen(side-effects). UseAsyncValuefor async state (loading/data/error). Prefer code-gen@riverpodfor type-safety + auto-dispose. AvoidStateProvider/ChangeNotifierProviderfor complex state. - Event-driven, strict separation, large teams -> BLoC:
Bloc/Cubit+ events/states (freezed). Cubit for simple, Bloc for complex event-driven. - NEVER
setStatefor app-wide state. NEVER InheritedWidget manual. NEVER mix stores. Keep state close to where it's used; hoist only when shared.
- Widget-local ephemeral ->
- [REQ] Immutability & models:
freezedfor all domain/data models + union/sealed states;@freezed+@JsonSerializable+fromJson;copyWithfor updates;constconstructors;@immutable. Use Dart 3sealed+ pattern matching for exhaustive state handling (switch (state) { case Loading(): ... case Data(:final data): ... }). - [REQ] Networking:
diofor non-trivial (interceptors: auth-token attach, logging, retry, error-mapping);httpfor trivial only.- Deserialize via
freezed+json_serializable; never hand-parseMap<String,dynamic>in widgets. - Repository pattern:
abstract class XRepo(domain) +XRepoImpl(data) wrappingXRemoteDatasource+XLocalDatasource. - Error handling: typed
Result<T>/Either<Failure, T>(fpdart or custom sealed) OR RiverpodAsyncValue.guard; never swallow exceptions; map HTTP errors to domainFailureenum/sealed. - Cancel in-flight on dispose (
CancelToken); debounce search.
- [REQ] Persistence:
- Relational ->
drift(typed SQLite, migrations, streaming queries viaStream<List<T>>). - KV / object ->
hive(binary) orisar(query-able, fast). - Primitives ->
shared_preferencesONLY. - Sensitive ->
flutter_secure_storage(Keychain/Keystore). - Offline-first: local DB as source of truth; sync queue + conflict resolution (last-write-wins / server-wins / CRDT) on reconnect;
connectivity_plusfor network events;workmanagerfor background sync.
- Relational ->
- [REQ] Routing:
go_router(declarative).GoRoute+ShellRoute(nested nav bars); typedextraargs (define arg classes);redirectfor auth/feature-flags;StatefulShellRoute.indexedStackfor bottom-nav with state preservation;PopScopefor predictive back (Android 14+). NeverNavigator.pushfor complex apps; never rawMaproute args. - [REQ] Error handling architecture: global
runZonedGuarded+FlutterError.onError-> report to Sentry/Crashlytics; per-featureFailuresealed types; presentation mapsFailure-> user message + retry CTA. Never expose stack traces / internal codes to users[SEC-04]. - [REQ] Testing two-tier
[TEST-07]:
- FAST:
flutter test test/path/touched_test.dart(~5s). Mark slow (integration, golden, platform-channel) with@Tags(['slow'])+--exclude-tags=slow. - FULL (before done):
flutter test --coverage(>= 80% logic, >= 70% total) +flutter test integration_test/on device/emulator. - Unit:
test()for usecases/repos/services; mock deps withmocktail(no annotation boilerplate, Dart-friendly) —when(() => mock.x()).thenReturn(...);registerFallbackValuefor non-nullable args. - Widget:
testWidgets()+WidgetTester;pumpWidget+pump+pumpAndSettle; assert withfind.byType/find.text/find.byKey; wrap inMaterialApp+ProviderScope/BlocProvider. Test behavior, not implementation. - Integration:
integration_test/package on real device/emulator;IntegrationTestWidgetsFlutterBinding. - Golden tests:
matchesGoldenFilefor pixel-regression (regenerate with--update-goldens). - AAA pattern; one behavior per test; factories not hardcoded IDs/dates
[TEST-03].
- [REQ] CI/CD:
- GitHub Actions / Codemagic / Fastlane. Pin action SHAs
[GIT-05]. - Pipeline:
dart format --set-exit-if-changed lib/ test/->flutter analyze --fatal-infos->flutter test->flutter build(per platform) -> sign -> deploy. - Android: AAB (
flutter build appbundle), Play App Signing,fastlane supplyfor upload; target latest Play API level. - iOS:
flutter build ipa/xcarchive, App Store Connect API key,fastlane pilotfor TestFlight,deliverfor App Store. - Obfuscate release:
flutter build appbundle --obfuscate --split-debug-info=build/symbols(keep symbols for symbolication; upload to Sentry/Crashlytics). - OIDC keyless auth where supported; SBOM + Cosign
[GIT-05].
- [REQ] Performance engineering:
- Budget: 60 FPS / 16.6 ms frame. Profile with Flutter DevTools (Performance tab: timeline, jank, shader compile jank; CPU profiler; Memory tab).
- Reduce rebuilds:
constwidgets; scopeConsumer/BlocBuilderto smallest subtree;Selector/ref.watchof granular providers;ProviderScope/BlocSelector. - Lists:
ListView.builder/SliverList.builder+itemExtent/prototypeItem;AutomaticKeepAliveClientMixinonly when needed. - Repaint:
RepaintBoundaryaround animations / heavy static subtrees. - Shaders: pre-warm shader compile jank with
SkSL warmup(legacy) or rely on Impeller (default on iOS since 3.10, Android since 3.16 — verify inpubspec/platform). - Images:
cached_network_image+cacheWidth/cacheHeightto downscale decode;precacheImagefor critical. - Avoid
Opacitywidget (useFadeTransition/AnimatedOpacity); avoid heavy work inbuild().
- [REQ] Platform channels & native:
- Method channels for sync native calls; Event channels for streams; FFI (
dart:ffi) for perf-critical; Pigeon for type-safe channel codegen (preferred over hand-written). - Plugins: prefer first-party (
flutter/packages) + federated platform implementations; check pub points >= 80 + popularity + last-updated before adding[VER-01]. - Permissions:
permission_handler+ declare inInfo.plist/AndroidManifest.xmlwith usage strings (App Store / Play review requirements).
- [REQ] Security
[SEC-01..10]:
- Input validation:
Form+ validators; DTOs for API payloads; never trust client. - Secrets:
.env+flutter_dotenv/--dart-define-from-file; NEVER commit secrets[SEC-04]. - Transport: HTTPS only; certificate pinning (
dio_certificate_pinning) for sensitive. - Storage:
flutter_secure_storagefor tokens; encrypt local DB (driftwith SQLCipher /isarencryption). - Release:
--obfuscate --split-debug-info; root/jailbreak detection (flutter_jailbreak_detection); Play Integrity (Android) / DeviceCheck (iOS) for anti-tamper. - No PII in logs/analytics
[SEC-04].
- [REQ] Observability:
package:sentry_flutterorfirebase_crashlyticsfor crashes;package:analytics/ Firebase Analytics for product events; OpenTelemetry (opentelemetrypub) for distributed tracing; structured logs (neverprint()in release — useloggingpackage with levels). - [REQ] Background work:
workmanager(Android WorkManager / iOS BGTaskScheduler) for periodic sync;flutter_background_servicefor long-running; declare background modes in manifests; request battery-optimization exemptions only when justified. - [REQ] Code quality
[CODE-01..05]: files < 300 lines, methods < 30; strict typing (nodynamicin public APIs — useObject?+ pattern match or sealed); enums/constants over magic strings; SOLID + DRY; no inlineawait import()(not applicable in Dart but no dynamic imports); noTODO/FIXMEwithout ticket tag. - [REQ] Concurrency:
Future/async-awaitfor IO;Isolate.run/compute()for CPU-heavy (parse, crypto, image) to avoid jank;Streamfor reactive sequences; never block the UI isolate with heavy sync work. - [REQ] Query Context7 for ANY Dart/Flutter/package API before implementation. Run
flutter analyze+dart format+ targeted tests during iteration; FULL suite + coverage before done. Test on physical devices (iOS + Android) before release.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 93 lines · 48 tokens per session scan A 1a6e2d61c091
flutter-developer is a skill published in the GitHub repository m3taz-ahmed/ai-globals (5 stars, last pushed yesterday), licensed MIT. It adds 48 tokens to every session and 2,893 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
orca-emulator-android
Android device and emulator control from inside Orca over adb, with the live device view in Orca's emulator pane. Use when driving an adb-connected emulator or phone on Windows, Linux, or macOS: booting AVDs, taps, swipes, typing, hardware buttons, rotation, app install and launch, runtime permissions, the…
android-tombstone-symbolication
Symbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI or Mono Android app…
dogfood
Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to dogfood, QA, exploratory test, find issues, bug hunt, or test this app on mobile.
winapp-maui
Package and sign .NET MAUI Windows apps with winapp, resolving the resizetizer manifest dependency. Use when packaging or signing a .NET MAUI Windows app, building a MAUI MSIX or signed unpackaged build in CI, or fixing 'manifest contains unresolved placeholders ($placeholder$)' errors from winapp package.
apple-search-ads
When the user wants to set up, optimize, or scale Apple Search Ads (ASA) campaigns — including keyword bidding, match types, campaign structure, Creative Product Sets, CPP routing, and ROAS optimization. Use when the user mentions "Apple Search Ads", "ASA", "Search Ads", "Search tab ads", "Today tab ads", "CPT"…
android-pentest
A guide for authorized security testing of Android apps, covering APK inspection, runtime testing, traffic capture, code review, and function hooking. An APK is the installable package used by an Android app.