accessibility
Use when working on accessibility, a11y, WCAG, ARIA, screen readers, keyboard nav, focus order, contrast, alt text, captions,…
Use when calling callable functions (httpsCallable), passing data to server-side logic, handling function errors/timeouts, configuring regions, or testing with the Emulator Suite.
Claude Code
$ npx -y skills add evanca/flutter-ai-rules --skill firebase-cloud-functions --agent claude-code
Codex
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a codex -y
Cursor
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a cursor -y
Gemini CLI
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a gemini-cli -y
GitHub Copilot
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a github-copilot -y
OpenCode
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a opencode -y
Windsurf
$ npx skills add evanca/flutter-ai-rules --skill firebase-cloud-functions -a windsurf -y
name: firebase-cloud-functions description: "Use when calling callable functions (httpsCallable), passing data to server-side logic, handling function errors/timeouts, configuring regions, or testing with the Emulator Suite." license: MIT
This skill defines how to correctly call Firebase Cloud Functions from Flutter applications.
Use this skill when:
---
flutter pub add cloud_functions
import 'package:cloud_functions/cloud_functions.dart'; // After Firebase.initializeApp(): final functions = FirebaseFunctions.instance;
final functions = FirebaseFunctions.instanceFor(region: 'europe-west1');
---
Use `httpsCallable` to reference a function, then `call` to invoke it:
final result = await FirebaseFunctions.instance
.httpsCallable('functionName')
.call(data);final result = await FirebaseFunctions.instance
.httpsCallable('addMessage')
.call({
"text": messageText,
"push": true,
});final responseData = result.data; // Cast to expected type if needed: final message = result.data as Map<String, dynamic>; final status = message['status'] as String;
---
Always wrap function calls in `try-catch` and check for `FirebaseFunctionsException`:
try {
final result = await FirebaseFunctions.instance
.httpsCallable('functionName')
.call(data);
// Handle successful result
} on FirebaseFunctionsException catch (e) {
switch (e.code) {
case 'not-found':
// Function does not exist
break;
case 'permission-denied':
// User lacks permission
break;
case 'unavailable':
// Service temporarily unavailable — retry
break;
default:
debugPrint('Function error [${e.code}]: ${e.message}');
}
} catch (e) {
debugPrint('Unexpected error: $e');
}---
Set a timeout appropriate to the expected execution time:
final callable = FirebaseFunctions.instance.httpsCallable(
'functionName',
options: HttpsCallableOptions(
timeout: const Duration(seconds: 30),
),
);---
Use the Firebase Emulator Suite for local development and testing:
FirebaseFunctions.instance.useFunctionsEmulator('localhost', 5001);---
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.