<< All versions
Skill v1.0.2
currentLLM-judged scan95/100evanca/flutter-ai-rules/firebase-ai
+1 new, ~1 modified
──Details
PublishedSeptember 25, 2026 at 09:42 PM
Content Hashsha256:379b72699830d255...
Git SHA7b9cce235714
Bump Typepatch
──Files
Files (1 file, 4.5 KB)
SKILL.md4.5 KBactive
SKILL.md · 167 lines · 4.5 KB
version: "1.0.2" name: firebase-ai description: "Use when setting up firebase_ai, generating text/chat with Gemini, streaming AI output, building multimodal prompts, or handling AI errors." license: MIT
Firebase AI Skill
This skill defines how to correctly use Firebase AI Logic in Flutter applications.
When to Use
Use this skill when:
- Setting up and configuring Firebase AI in a Flutter project.
- Generating text content or chat responses with Gemini models.
- Implementing streaming AI responses for real-time UI updates.
- Sending multimodal prompts (text + images) to Gemini.
- Handling errors, offline scenarios, and rate limits for AI operations.
- Applying security and privacy considerations for AI features.
1. Setup and Configuration
flutter pub add firebase_ai
dart
import 'package:firebase_ai/firebase_ai.dart';import 'package:firebase_core/firebase_core.dart';import 'firebase_options.dart';// Initialize FirebaseAppawait Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform,);// Initialize the Gemini Developer API backend servicefinal model =FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');
- Ensure the Firebase project is configured for AI services via the Firebase AI Logic page in the Firebase Console.
- Initialize Firebase before using any Firebase AI features.
- Use
FirebaseAI.googleAI()for the Gemini Developer API backend (recommended starting point). - Implement App Check to prevent abuse of Firebase AI endpoints.
Platform support:
| Platform | Support | |
|---|---|---|
| iOS | Full | |
| Android | Full | |
| Web | Full | |
| macOS / other Apple | Beta | |
| Windows | Not supported |
2. Generating Content
Single-turn text generation
dart
final response = await model.generateContent([Content.text('Summarize the benefits of Flutter for mobile development'),]);final text = response.text; // The generated summary string
Multi-turn chat
dart
final chat = model.startChat();final response = await chat.sendMessage(Content.text('What is the difference between StatelessWidget and StatefulWidget?'),);print(response.text);// Follow-up in the same conversationfinal followUp = await chat.sendMessage(Content.text('When should I use StatefulWidget?'),);print(followUp.text);
Streaming responses
Use streaming to display partial results as they arrive:
dart
final stream = model.generateContentStream([Content.text('Write a step-by-step guide to implementing dark mode in Flutter'),]);await for (final chunk in stream) {// Append chunk.text to the UI progressivelysetState(() => _output += chunk.text ?? '');}
Multimodal prompts (text + image)
dart
final imageBytes = await File('photo.jpg').readAsBytes();final response = await model.generateContent([Content.multi([TextPart('Describe what you see in this image'),InlineDataPart('image/jpeg', imageBytes),]),]);
3. Error Handling
Wrap AI calls in structured error handling:
dart
try {final response = await model.generateContent([Content.text(prompt)]);return response.text;} on FirebaseAIException catch (e) {if (e.message?.contains('quota') ?? false) {// Handle rate limiting — show retry message or queue the requestreturn 'Service is busy. Please try again shortly.';}return 'AI service error: ${e.message}';} catch (e) {return 'Unexpected error: $e';}
- Provide meaningful error messages to users when AI operations fail.
- Handle offline scenarios with appropriate fallback behavior (e.g., cached responses).
- Implement exponential backoff for rate-limited or transient errors.
4. Security and Privacy
- Follow Firebase Security Rules best practices when using AI services alongside other Firebase products.
- Ensure proper authentication and authorization for AI feature access.
- Sanitize user input before sending it to the model to prevent prompt injection.
- Be mindful of data privacy requirements when processing user content with AI services.
- Implement appropriate content filtering and moderation using safety settings:
dart
final model = FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash',safetySettings: [SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium),SafetySetting(HarmCategory.dangerousContent, HarmBlockThreshold.high),],);