accessibility
Use when working on accessibility, a11y, WCAG, ARIA, screen readers, keyboard nav, focus order, contrast, alt text, captions,…
Use when logging analytics events, setting user properties, configuring default event parameters, building funnels, or adding screen-view tracking.
Claude Code
$ npx -y skills add evanca/flutter-ai-rules --skill firebase-analytics --agent claude-code
Codex
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a codex -y
Cursor
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a cursor -y
Gemini CLI
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a gemini-cli -y
GitHub Copilot
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a github-copilot -y
OpenCode
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a opencode -y
Windsurf
$ npx skills add evanca/flutter-ai-rules --skill firebase-analytics -a windsurf -y
name: firebase-analytics description: "Use when logging analytics events, setting user properties, configuring default event parameters, building funnels, or adding screen-view tracking." license: MIT
This skill defines how to correctly implement Firebase Analytics in Flutter applications, covering setup, event logging, user properties, and data collection best practices.
Use this skill when:
---
flutter pub add firebase_analytics flutter run
import 'package:firebase_analytics/firebase_analytics.dart'; // After Firebase.initializeApp(): FirebaseAnalytics analytics = FirebaseAnalytics.instance;
MaterialApp(
navigatorObservers: [
FirebaseAnalyticsObserver(analytics: FirebaseAnalytics.instance),
],
);For GoRouter, log screen views manually on route changes:
GoRouter( observers: [FirebaseAnalyticsObserver(analytics: FirebaseAnalytics.instance)], );
1. Confirm `Firebase.initializeApp()` completes before accessing `FirebaseAnalytics.instance`. 2. Run the app and check the Firebase DebugView console for incoming events. 3. Confirm automatic events (`first_open`, `session_start`) appear without extra code.
---
Use **predefined event methods** when possible for maximum detail in reports and access to future Google Analytics features:
await FirebaseAnalytics.instance.logSelectContent( contentType: "image", itemId: itemId, );
Use the general `logEvent()` method for both predefined and custom events:
await FirebaseAnalytics.instance.logEvent(
name: "select_content",
parameters: {
"content_type": "image",
"item_id": itemId,
},
);Future<void> logAddToCart(String productId, String productName, double price) async {
await FirebaseAnalytics.instance.logEvent(
name: 'add_to_cart',
parameters: {
'product_id': productId,
'product_name': productName,
'price': price,
'currency': 'USD',
},
);
}---
Set default parameters for all future events (not supported on web):
await FirebaseAnalytics.instance.setDefaultEventParameters({
'app_version': '1.2.3',
'environment': 'production',
});Clear a default parameter by setting it to `null`.
---
await FirebaseAnalytics.instance.setUserProperty( name: 'favorite_food', value: favoriteFood, );
Set the user ID to correlate events across devices:
await FirebaseAnalytics.instance.setUserId(id: 'user_12345');
---
---
36 Flutter and Dart skills your coding agent loads by itself, sourced only from official documentation. A skill is a folder with a SKILL.md file.
Use when working on accessibility, a11y, WCAG, ARIA, screen readers, keyboard nav, focus order, contrast, alt text, captions,…
Use when creating a feature, designing folder structure, adding repositories/services/view models, wiring dependency injection,…
Use when creating a Cubit or Bloc, modeling state with sealed classes or status enums, wiring…
Use when asked to review a PR, MR, branch, or diff, audit changed files, or check code quality.
Use when writing switch statements, refactoring if-else chains, creating data classes, choosing records vs classes, destructuring…
Use when building AI agents in Dart, implementing Genkit flows or tools, integrating LLMs into Dart or Flutter applications, or…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.