@andyshaman/whisk-proxy
AGenerate images with Google Imagen 4 and Nano Banana for free via Flow API. No API key, no paid subscription — just a Google account and Chrome extension. Use when the user asks to generate, create, or make an image, picture, illustration, logo, banner, or avatar. Triggers: generate image, create picture, make illustration, нарисуй, сгенерируй картинку, создай изображение. Do NOT use for image editing, upscaling, background removal, video generation, or non-Google AI models (DALL-E, Midjourney, Stable Diffusion).
Install
agr install @andyshaman/whisk-proxy --target claudeWrites 4 files into .claude/skills/, pinned to git-4732b909.
- .claude/skills/whisk-proxy/.gitignore
- .claude/skills/whisk-proxy/LICENSE
- .claude/skills/whisk-proxy/README.md
- .claude/skills/whisk-proxy/SKILL.md
Document
name: whisk-proxy description: > Generate images with Google Imagen 4 and Nano Banana for free via Flow API. No API key, no paid subscription — just a Google account and Chrome extension. Use when the user asks to generate, create, or make an image, picture, illustration, logo, banner, or avatar. Triggers: generate image, create picture, make illustration, нарисуй, сгенерируй картинку, создай изображение. Do NOT use for image editing, upscaling, background removal, video generation, or non-Google AI models (DALL-E, Midjourney, Stable Diffusion).
Flow Image Generator
Generate images using Google Imagen 4, Nano Banana, and Reference-to-Image for free. No API key — uses Chrome extension for OAuth.
Quick Start
# Generate 4 images (Imagen 4, default)
node {baseDir}/scripts/generate.mjs -p "a cat astronaut floating in space"
# Nano Banana (fast, creative)
node {baseDir}/scripts/generate.mjs -p "abstract painting in neon colors" -m banana
# Reference-to-Image (style transfer)
node {baseDir}/scripts/generate.mjs -p "watercolor portrait" -m r2i
# Portrait format, 1 image
node {baseDir}/scripts/generate.mjs -p "anime girl with headphones" -r 9:16 -c 1
# Save to specific folder
node {baseDir}/scripts/generate.mjs -p "sunset over mountains" -o ./images
Models
| Model | Flag | Best for |
|---|---|---|
| Imagen 4 | -m imagen4 (default) | Highest quality, photorealistic |
| Nano Banana | -m banana | Fast, creative generation |
| Reference-to-Image | -m r2i | Style transfer |
Options
| Flag | Short | Default | Description |
|---|---|---|---|
--prompt | -p | required | Image description (English works best) |
--model | -m | imagen4 | Model: imagen4, banana, r2i |
--count | -c | 4 | Number of images (1-4) |
--ratio | -r | 1:1 | Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4 |
--output | -o | . | Output directory |
--seed | -s | random | Seed for reproducibility |
Aspect Ratios
1:1(1024x1024) — avatars, icons, social posts16:9(1365x768) — banners, covers, YouTube thumbnails9:16(768x1365) — stories, reels, vertical posters4:3— classic landscape3:4— classic portrait
Authentication
Token stored in ~/.flow-proxy/token.json. The Chrome extension handles auth automatically.
Check token status
node {baseDir}/scripts/status.mjs
First-time setup
- Install the Chrome extension from
{baseDir}/extension/(load unpacked) - Open https://labs.google/fx/tools/flow
- Sign in with Google
- Click the Flow Proxy extension icon → "Connect"
Token auto-refreshes via session cookie (~30 days). After that, repeat step 4.
If token is expired
The CLI script auto-detects expired tokens and starts a local auth server. Just click "Connect" in the Chrome extension — no manual token copying needed.
The agent should check status.mjs first. If token is expired, run generate.mjs — it will start the auth server and wait for the extension. Tell the user to click "Connect" in the extension.
Important
- Prompts in English produce best results
- The API is free but rate-limited (Google account level)
- Images saved as PNG
- Do NOT read generated PNG files into context — they consume thousands of tokens
Trustgrade A
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- passLicense
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-4732b909b27a2026-07-31