Build production Firebase Genkit applications including RAG systems, multi-step flows, and tool calling for Node.js/Python/Go. Deploy to Firebase Functions or Cloud Run with AI monitoring. Use when asked to "create genkit flow" or "implement RAG".
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
scripts/init-genkit.shThis skill provides comprehensive expertise in building production-ready Firebase Genkit applications across Node.js (1.0), Python (Alpha), and Go (1.0). It handles the complete lifecycle from initialization to deployment with AI monitoring.
This skill automatically activates when you mention:
User Request → Analyze needs → Determine:
- Target language (Node.js/Python/Go)
- Flow complexity (simple/multi-step/RAG)
- Model requirements (Gemini version, custom models)
- Deployment target (Firebase/Cloud Run/local)
Check existing project → If new:
- Initialize project structure
- Install dependencies
- Configure environment variables
- Set up TypeScript/Python/Go config
If existing:
- Analyze current structure
- Identify integration points
- Preserve existing code
Design flow architecture → Implement:
- Input/output schemas (Zod/Pydantic/Go structs)
- Model configuration
- Tool definitions (if needed)
- Retriever setup (for RAG)
- Error handling
- Tracing configuration
Create test cases → Run locally:
- Genkit Developer UI
- Unit tests
- Integration tests
- Token usage analysis
Configure deployment → Deploy:
- Firebase Functions (with AI monitoring)
- Cloud Run (with auto-scaling)
- Set up monitoring dashboards
- Configure alerting
User Request: "Create a Genkit flow that answers user questions using Gemini 2.5 Flash"
Skill Response:
const qaFlow = ai.defineFlow(
{
name: 'qaFlow',
inputSchema: z.object({ question: z.string() }),
outputSchema: z.object({ answer: z.string() }),
},
async (input) => {
const { text } = await ai.generate({
model: gemini25Flash,
prompt: `Answer this question: ${input.question}`,
config: { temperature: 0.3 }, // Lower for factual answers
});
return { answer: text };
}
);
User Request: "Implement RAG with Genkit for our documentation search"
Skill Response:
const docRetriever = ai.defineRetriever(
{
name: 'docRetriever',
configSchema: z.object({ k: z.number().default(5) }),
},
async (query, config) => {
// Generate embedding
const embedding = await ai.embed({
embedder: textEmbeddingGecko,
content: query,
});
// Search vector database
const results = await vectorDB.search(embedding, config.k);
return results.map(doc => ({
content: doc.text,
metadata: { source: doc.source },
}));
}
);
User Request: "Create a Genkit agent with weather and calendar tools"
Skill Response:
const weatherTool = ai.defineTool({
name: 'getWeather',
description: 'Get current weather for a location',
inputSchema: z.object({ location: z.string() }),
outputSchema: z.object({
temp: z.number(),
conditions: z.string(),
}),
}, async ({ location }) => {
// Call weather API
});
const calendarTool = ai.defineTool({
name: 'checkCalendar',
description: 'Check calendar availability',
inputSchema: z.object({ date: z.string() }),
outputSchema: z.object({ available: z.boolean() }),
}, async ({ date }) => {
// Check calendar API
});
const agentFlow = ai.defineFlow(async (userQuery) => {
const { text } = await ai.generate({
model: gemini25Flash,
prompt: userQuery,
tools: [weatherTool, calendarTool],
});
return text;
});
try {
const result = await ai.generate({...});
return result;
} catch (error) {
if (error.code === 'SAFETY_BLOCK') {
// Handle safety filters
} else if (error.code === 'QUOTA_EXCEEDED') {
// Handle rate limits
}
throw error;
}
When complex multi-agent orchestration is needed:
For production deployment:
This skill uses the following tools:
Symptoms: Error "API key not provided" Solution:
.env file existsGOOGLE_API_KEY is setdotenv is loadedSymptoms: Flow not visible in Genkit Developer UI Solution:
Symptoms: Unexpected costs Solution: