Nano Banana Pro
Agent skill for nano-banana-pro
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
# CLAUDE.md
Th[variable]s f[variable][variable][variable] p[variable]o[variable][variable]d[variable]s gu[variable]d[variable]nc[variable] to C[variable][variable]ud[variable] Cod[variable] (c[variable][variable]ud[variable].[variable][variable]/cod[variable]) wh[variable]n wo[variable]k[variable]ng w[variable]th cod[variable] [variable]n th[variable]s [variable][variable]pos[variable]to[variable]y.
## D[variable][variable][variable][variable]opm[variable]nt Comm[variable]nds
### Co[variable][variable] Comm[variable]nds
- `cd funct[variable]ons && npm [variable]un st[variable][variable]t` - St[variable][variable]t G[variable]nk[variable]t d[variable][variable][variable][variable]opm[variable]nt s[variable][variable][variable][variable][variable] w[variable]th hot [variable][variable][variable]o[variable]d
- `cd funct[variable]ons && npm [variable]un [variable][variable]nt` - Run ESL[variable]nt fo[variable] cod[variable] qu[variable][variable][variable]ty
- `cd funct[variable]ons && npm [variable]un [variable]u[variable][variable]d` - Comp[variable][variable][variable] Typ[variable]Sc[variable][variable]pt
- `f[variable][variable][variable][variable][variable]s[variable] d[variable]p[variable]oy --on[variable]y funct[variable]ons` - D[variable]p[variable]oy to F[variable][variable][variable][variable][variable]s[variable] Funct[variable]ons
### S[variable]tup Comm[variable]nds
```[variable][variable]sh
gc[variable]oud [variable]uth [variable]og[variable]n
gc[variable]oud conf[variable]g s[variable]t p[variable]oj[variable]ct <p[variable]oj[variable]ctID>
[variable]xpo[variable]t GOOGLE_GENAI_API_KEY=<[variable]p[variable]k[variable]y>
cd funct[variable]ons && npm c[variable]
```
## A[variable]ch[variable]t[variable]ctu[variable][variable] O[variable][variable][variable][variable][variable][variable]w
Th[variable]s [variable]s [variable] F[variable][variable][variable][variable][variable]s[variable] Funct[variable]ons [variable][variable]ck[variable]nd [variable]u[variable][variable]t w[variable]th Typ[variable]Sc[variable][variable]pt [variable]nd Goog[variable][variable]'s G[variable]nk[variable]t AI f[variable][variable]m[variable]wo[variable]k. Th[variable] [variable][variable]ch[variable]t[variable]ctu[variable][variable] fo[variable][variable]ows [variable] f[variable]ow-[variable][variable]s[variable]d p[variable]tt[variable][variable]n wh[variable][variable][variable] AI op[variable][variable][variable]t[variable]ons [variable][variable][variable] d[variable]f[variable]n[variable]d [variable]s [variable][variable]us[variable][variable][variable][variable] f[variable]ows w[variable]th p[variable]op[variable][variable] [variable]uth[variable]nt[variable]c[variable]t[variable]on [variable]nd [variable][variable][variable][variable]d[variable]t[variable]on.
### Co[variable][variable] Compon[variable]nts
**Ent[variable]y Po[variable]nts:**
- `funct[variable]ons/[variable]nd[variable]x.ts` - F[variable][variable][variable][variable][variable]s[variable] Funct[variable]ons [variable]ndpo[variable]nts (`h[variable][variable][variable]oG[variable]nk[variable]t`, `G[variable]n[variable][variable][variable]t[variable]Im[variable]g[variable]n`)
- `funct[variable]ons/g[variable]nk[variable]t.ts` - G[variable]nk[variable]t AI f[variable][variable]m[variable]wo[variable]k conf[variable]gu[variable][variable]t[variable]on w[variable]th V[variable][variable]t[variable]x AI p[variable]ug[variable]n
- `funct[variable]ons/f[variable][variable][variable][variable][variable]s[variable]Adm[variable]n.ts` - Auth[variable]nt[variable]c[variable]t[variable]on [variable][variable][variable][variable]f[variable]c[variable]t[variable]on us[variable]ng F[variable][variable][variable][variable][variable]s[variable] Adm[variable]n SDK
**AI F[variable]ow A[variable]ch[variable]t[variable]ctu[variable][variable]:**
- `funct[variable]ons/g[variable]nk[variable]t-f[variable]ows/` - Cont[variable][variable]ns AI p[variable]oc[variable]ss[variable]ng f[variable]ows (h[variable][variable][variable]oG[variable]m[variable]n[variable]F[variable]ow.ts, [variable]m[variable]g[variable]nF[variable]ow.ts)
- `funct[variable]ons/p[variable]ompts/` - YAML-f[variable]ontm[variable]tt[variable][variable] p[variable]ompt t[variable]mp[variable][variable]t[variable]s w[variable]th mod[variable][variable] conf[variable]gu[variable][variable]t[variable]on
- F[variable]ows us[variable] `[variable][variable].d[variable]f[variable]n[variable]F[variable]ow()` w[variable]th Zod sch[variable]m[variable]s fo[variable] [variable]nput/output [variable][variable][variable][variable]d[variable]t[variable]on
### Auth[variable]nt[variable]c[variable]t[variable]on P[variable]tt[variable][variable]n
A[variable][variable] [variable]ndpo[variable]nts [variable][variable]qu[variable][variable][variable] F[variable][variable][variable][variable][variable]s[variable] Auth[variable]nt[variable]c[variable]t[variable]on:
```typ[variable]sc[variable][variable]pt
[variable]xpo[variable]t const funct[variable]onN[variable]m[variable] = onC[variable][variable][variable](opts, [variable]sync ([variable][variable]qu[variable]st: C[variable][variable][variable][variable][variable][variable][variable]R[variable]qu[variable]st) => {
[variable][variable][variable][variable]fyAuth([variable][variable]qu[variable]st); // A[variable]w[variable]ys f[variable][variable]st [variable][variable]n[variable]
[variable][variable]tu[variable]n [variable]w[variable][variable]t f[variable]owFunct[variable]on([variable][variable]qu[variable]st.d[variable]t[variable]);
});
```
### P[variable]ompt T[variable]mp[variable][variable]t[variable] St[variable]uctu[variable][variable]
P[variable]ompts [variable][variable][variable] sto[variable][variable]d [variable]s `.p[variable]ompt` f[variable][variable][variable]s w[variable]th YAML f[variable]ontm[variable]tt[variable][variable]:
```y[variable]m[variable]
---
mod[variable][variable]: [variable][variable][variable]t[variable]x[variable][variable]/g[variable]m[variable]n[variable]-2.0-f[variable][variable]sh-[variable][variable]t[variable]
conf[variable]g:
t[variable]mp[variable][variable][variable]tu[variable][variable]: 1.4
m[variable]xOutputTok[variable]ns: 400
---
P[variable]ompt cont[variable]nt w[variable]th [[variable][variable][variable][variable][variable][variable][variable][variable]] su[variable]st[variable]tut[variable]on
```
## Conf[variable]gu[variable][variable]t[variable]on D[variable]t[variable][variable][variable]s
**Runt[variable]m[variable]:** Nod[variable].js 22, d[variable]p[variable]oy[variable]d to `[variable]s[variable][variable]-no[variable]th[variable][variable]st1` [variable][variable]g[variable]on
**D[variable]p[variable]nd[variable]nc[variable][variable]s:** F[variable][variable][variable][variable][variable]s[variable] Funct[variable]ons, G[variable]nk[variable]t AI, V[variable][variable]t[variable]x AI, F[variable][variable][variable][variable][variable]s[variable] Adm[variable]n SDK
**S[variable]c[variable][variable]ts:** `GOOGLE_GENAI_API_KEY` (F[variable][variable][variable][variable][variable]s[variable] Funct[variable]ons s[variable]c[variable][variable]t), s[variable][variable][variable][variable]c[variable] [variable]ccount k[variable]y JSON
## AI Mod[variable][variable]s Conf[variable]gu[variable][variable]t[variable]on
- **T[variable]xt G[variable]n[variable][variable][variable]t[variable]on:** `[variable][variable][variable]t[variable]x[variable][variable]/g[variable]m[variable]n[variable]-2.0-f[variable][variable]sh-[variable][variable]t[variable]` (t[variable]mp[variable][variable][variable]tu[variable][variable]: 1.4, m[variable]x tok[variable]ns: 400)
- **Im[variable]g[variable] G[variable]n[variable][variable][variable]t[variable]on:** `[variable][variable][variable]t[variable]x[variable][variable]/[variable]m[variable]g[variable]n-3.0-g[variable]n[variable][variable][variable]t[variable]-002` (t[variable]mp[variable][variable][variable]tu[variable][variable]: 0.7, Uk[variable]yo-[variable] [variable][variable]t sty[variable][variable])
## D[variable][variable][variable][variable]opm[variable]nt P[variable]tt[variable][variable]ns
**Add[variable]ng N[variable]w AI F[variable]ows:**
1. C[variable][variable][variable]t[variable] f[variable]ow [variable]n `g[variable]nk[variable]t-f[variable]ows/` d[variable][variable][variable]cto[variable]y us[variable]ng `[variable][variable].d[variable]f[variable]n[variable]F[variable]ow()`
2. Add co[variable][variable][variable]spond[variable]ng p[variable]ompt t[variable]mp[variable][variable]t[variable] [variable]n `p[variable]ompts/`
3. Expo[variable]t f[variable]ow [variable]nd [variable]dd F[variable][variable][variable][variable][variable]s[variable] Funct[variable]on [variable]n `[variable]nd[variable]x.ts`
4. Inc[variable]ud[variable] [variable]uth[variable]nt[variable]c[variable]t[variable]on [variable][variable][variable][variable]f[variable]c[variable]t[variable]on w[variable]th `[variable][variable][variable][variable]fyAuth()`
**E[variable][variable]o[variable] H[variable]nd[variable][variable]ng:**
Us[variable] F[variable][variable][variable][variable][variable]s[variable] HTTPS [variable][variable][variable]o[variable]s: `th[variable]ow n[variable]w funct[variable]ons.https.HttpsE[variable][variable]o[variable]('[variable][variable][variable]o[variable]-cod[variable]', 'm[variable]ss[variable]g[variable]')`
## D[variable]p[variable]oym[variable]nt
Auto-d[variable]p[variable]oym[variable]nt [variable][variable][variable] G[variable]tHu[variable] Act[variable]ons:
1. L[variable]nt wo[variable]kf[variable]ow [variable]uns on PR/push
2. D[variable]p[variable]oy wo[variable]kf[variable]ow t[variable][variable]gg[variable][variable]s [variable]ft[variable][variable] succ[variable]ssfu[variable] [variable][variable]nt (m[variable][variable]n [variable][variable][variable]nch on[variable]y)
3. R[variable]qu[variable][variable][variable]s G[variable]tHu[variable] S[variable]c[variable][variable]ts: `FIREBASE_TOKEN`, `FIREBASE_SERVICE_ACCOUNT_KEY_BASE64`, `GOOGLE_GENAI_API_KEY`
## T[variable]st[variable]ng [variable]nd Qu[variable][variable][variable]ty
- ESL[variable]nt conf[variable]gu[variable][variable]t[variable]on [variable]n `funct[variable]ons/[variable]s[variable][variable]nt.conf[variable]g.mjs`
- Typ[variable]Sc[variable][variable]pt st[variable][variable]ct mod[variable] [variable]n[variable][variable][variable][variable]d
- A[variable][variable] funct[variable]ons [variable][variable]qu[variable][variable][variable] p[variable]op[variable][variable] Typ[variable]Sc[variable][variable]pt typ[variable]ng
- Auth[variable]nt[variable]c[variable]t[variable]on [variable][variable]qu[variable][variable][variable]d fo[variable] [variable][variable][variable] c[variable][variable][variable][variable][variable][variable][variable] funct[variable]ons
## VS Cod[variable] Int[variable]g[variable][variable]t[variable]on
- G[variable]tHu[variable] Cop[variable][variable]ot conf[variable]gu[variable][variable]d w[variable]th p[variable]oj[variable]ct-sp[variable]c[variable]f[variable]c [variable]nst[variable]uct[variable]ons [variable]n `.g[variable]thu[variable]/[variable]nst[variable]uct[variable]ons/cop[variable][variable]ot-[variable]nst[variable]uct[variable]ons.md`
- Fo[variable]m[variable]t-on-s[variable][variable][variable] [variable]n[variable][variable][variable][variable]d
- MCP conf[variable]gu[variable][variable]t[variable]on fo[variable] G[variable]tHu[variable] Cop[variable][variable]ot [variable]nd Not[variable]on [variable]nt[variable]g[variable][variable]t[variable]on [variable]n `.[variable]scod[variable]/mcp.json`This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
cd functions && npm run start - Start Genkit development server with hot reloadcd functions && npm run lint - Run ESLint for code qualitycd functions && npm run build - Compile TypeScriptfirebase deploy --only functions - Deploy to Firebase Functionsgcloud auth login gcloud config set project <projectID> export GOOGLE_GENAI_API_KEY=<apikey> cd functions && npm ci
This is a Firebase Functions backend built with TypeScript and Google's Genkit AI framework. The architecture follows a flow-based pattern where AI operations are defined as reusable flows with proper authentication and validation.
Entry Points:
functions/index.ts - Firebase Functions endpoints (helloGenkit, GenerateImagen)functions/genkit.ts - Genkit AI framework configuration with Vertex AI pluginfunctions/firebaseAdmin.ts - Authentication verification using Firebase Admin SDKAI Flow Architecture:
functions/genkit-flows/ - Contains AI processing flows (helloGeminiFlow.ts, imagenFlow.ts)functions/prompts/ - YAML-frontmatter prompt templates with model configurationai.defineFlow() with Zod schemas for input/output validationAll endpoints require Firebase Authentication:
export const functionName = onCall(opts, async (request: CallableRequest) => { verifyAuth(request); // Always first line return await flowFunction(request.data); });
Prompts are stored as
.prompt files with YAML frontmatter:
--- model: vertexai/gemini-2.0-flash-lite config: temperature: 1.4 maxOutputTokens: 400 --- Prompt content with {{variable}} substitution
Runtime: Node.js 22, deployed to
asia-northeast1 region
Dependencies: Firebase Functions, Genkit AI, Vertex AI, Firebase Admin SDK
Secrets: GOOGLE_GENAI_API_KEY (Firebase Functions secret), service account key JSON
vertexai/gemini-2.0-flash-lite (temperature: 1.4, max tokens: 400)vertexai/imagen-3.0-generate-002 (temperature: 0.7, Ukiyo-e art style)Adding New AI Flows:
genkit-flows/ directory using ai.defineFlow()prompts/index.tsverifyAuth()Error Handling: Use Firebase HTTPS errors:
throw new functions.https.HttpsError('error-code', 'message')
Auto-deployment via GitHub Actions:
FIREBASE_TOKEN, FIREBASE_SERVICE_ACCOUNT_KEY_BASE64, GOOGLE_GENAI_API_KEYfunctions/eslint.config.mjs.github/instructions/copilot-instructions.md.vscode/mcp.json