
A straightforward wrapper around OpenRouter's Gemini 3 Pro Image model that handles the API calls and file management for you. Takes text prompts and optional input images, outputs PNG files with proper path handling and multi-image support. The resolution options (1K/2K/4K) and system prompt customization via assets/SYSTEM_TEMPLATE give you decent control without complexity. Error handling covers the usual suspects like missing API keys and rate limits. Good for when you need programmatic image generation in Claude workflows without manually wrestling with OpenRouter's API or figuring out base64 encoding.
$ npx -y skills add github/awesome-copilot --skill nano-banana-pro-openrouter --agent claude-codeInstalls into .claude/skills of the current project.
Generate or edit images with OpenRouter using the google/gemini-3-pro-image-preview model. Support prompt-only generation, single-image edits, and multi-image composition.
uv run {baseDir}/scripts/generate_image.py \
--prompt "A cinematic sunset over snow-capped mountains" \
--filename sunset.png
uv run {baseDir}/scripts/generate_image.py \
--prompt "Replace the sky with a dramatic aurora" \
--input-image input.jpg \
--filename aurora.png
uv run {baseDir}/scripts/generate_image.py \
--prompt "Combine the subjects into a single studio portrait" \
--input-image face1.jpg \
--input-image face2.jpg \
--filename composite.png
--resolution with 1K, 2K, or 4K.1K if not specified.The skill reads an optional system prompt from assets/SYSTEM_TEMPLATE. This allows you to customize the image generation behavior without modifying code.
--input-image.--filename accepts relative paths (saves to current directory) or absolute paths.-1, -2, etc. to the filename.MEDIA: <path> for each saved image. Do not read images back into the response.If the script exits non-zero, check stderr against these common blockers:
| Symptom | Resolution |
|---|---|
OPENROUTER_API_KEY is not set | Ask the user to set it. PowerShell: $env:OPENROUTER_API_KEY = "sk-or-..." / bash: export OPENROUTER_API_KEY="sk-or-..." |
uv: command not found or not recognized | macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh. Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex". Then restart the terminal. |
AuthenticationError / HTTP 401 | Key is invalid or has no credits. Verify at https://openrouter.ai/settings/keys. |
For transient errors (HTTP 429, network timeouts), retry once after 30 seconds. Do not retry the same error more than twice — surface the issue to the user instead.
Sponsors