Claude Cursor Skill

firebase-ai

Use when setting up firebase_ai, generating text/chat with Gemini, streaming AI output, building multimodal prompts, or handling AI errors.

LLM Mart · 0 points · 16 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download evanca-flutter-ai-rules-skills_firebase-ai-7d226d8.zip · 2 KB
Part of evanca/flutter-ai-rules — 37 skills

Install

skills CLI npx skills add https://github.com/evanca/flutter-ai-rules/tree/main/skills/firebase-ai
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install evanca-flutter-ai-rules@llmmart
Git git clone https://github.com/evanca/flutter-ai-rules.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole evanca/flutter-ai-rules collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

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
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Gemini Developer API backend service
final 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

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

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 conversation
final 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:

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 progressively
  setState(() => _output += chunk.text ?? '');
}

Multimodal prompts (text + image)

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:

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 request
    return '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:
final model = FirebaseAI.googleAI().generativeModel(
  model: 'gemini-2.5-flash',
  safetySettings: [
    SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium),
    SafetySetting(HarmCategory.dangerousContent, HarmBlockThreshold.high),
  ],
);

References

Files (flutter-ai-rules)
  • SKILL.md 4.5 KB
    ---
    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 FirebaseApp
    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
    // Initialize the Gemini Developer API backend service
    final 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 conversation
    final 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 progressively
      setState(() => _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 request
        return '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),
      ],
    );
    ```
    
    ---
    
    ## References
    
    - [Firebase AI Logic Flutter documentation](https://firebase.google.com/docs/ai-logic/get-started?platform=flutter)
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related