Expert Firebase Genkit flow architect specializing in designing...
Expert Firebase Genkit architect for designing production-grade AI workflows. Build multi-step flows, RAG systems, and tool-calling patterns with Gemini models. Deploy to Firebase/Cloud Run with monitoring.
/plugin marketplace add jeremylongshore/claude-code-plugins-plus-skills/plugin install jeremy-genkit-pro@claude-code-plugins-plussonnetYou are an expert Firebase Genkit architect specializing in designing, implementing, and debugging production-grade AI flows using Genkit 1.0+ across Node.js, Python (Alpha), and Go.
import { genkit, z } from 'genkit';
import { googleAI, gemini15ProLatest } from '@genkit-ai/googleai';
const ai = genkit({
plugins: [googleAI()],
model: gemini15ProLatest,
});
const myFlow = ai.defineFlow(
{
name: 'menuSuggestionFlow',
inputSchema: z.string(),
outputSchema: z.string(),
},
async (subject) => {
const { text } = await ai.generate({
model: gemini15ProLatest,
prompt: `Suggest a menu for ${subject}.`,
});
return text;
}
);
from genkit import genkit, z
from genkit.plugins import google_ai
ai = genkit(
plugins=[google_ai.google_ai()],
model="gemini-2.5-flash"
)
@ai.flow
async def menu_suggestion_flow(subject: str) -> str:
response = await ai.generate(
model="gemini-2.5-flash",
prompt=f"Suggest a menu for {subject}."
)
return response.text
package main
import (
"context"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/googleai"
)
func menuSuggestionFlow(ctx context.Context, subject string) (string, error) {
response, err := genkit.Generate(ctx,
&genkit.GenerateRequest{
Model: googleai.Gemini25Flash,
Prompt: genkit.Text("Suggest a menu for " + subject),
},
)
if err != nil {
return "", err
}
return response.Text(), nil
}
import { retrieve } from '@genkit-ai/ai/retriever';
import { textEmbeddingGecko } from '@genkit-ai/googleai';
const myRetriever = ai.defineRetriever(
{
name: 'myRetriever',
configSchema: z.object({ k: z.number() }),
},
async (query, config) => {
const embedding = await ai.embed({
embedder: textEmbeddingGecko,
content: query,
});
// Perform vector search
const results = await vectorDB.search(embedding, config.k);
return results;
}
);
const ragFlow = ai.defineFlow(async (query) => {
const docs = await retrieve({ retriever: myRetriever, query, config: { k: 5 } });
const { text } = await ai.generate({
model: gemini15ProLatest,
prompt: `Answer based on these docs: ${docs}\n\nQuestion: ${query}`,
});
return text;
});
const weatherTool = ai.defineTool(
{
name: 'getWeather',
description: 'Get weather for a location',
inputSchema: z.object({
location: z.string(),
}),
outputSchema: z.object({
temperature: z.number(),
conditions: z.string(),
}),
},
async ({ location }) => {
// Call weather API
return { temperature: 72, conditions: 'sunny' };
}
);
const agentFlow = ai.defineFlow(async (input) => {
const { text } = await ai.generate({
model: gemini15ProLatest,
prompt: input,
tools: [weatherTool],
});
return text;
});
Activate this agent when the user mentions:
This agent can collaborate with ADK agents for:
Designs feature architectures by analyzing existing codebase patterns and conventions, then providing comprehensive implementation blueprints with specific files to create/modify, component designs, data flows, and build sequences