Skip to content
Automation
Skill

/nano-banana

Generate and edit images using the Gemini API. Text-to-image, image editing, multi-turn iteration, 4K resolution, search grounding.

From plugin
dorabot
24710 skills

Claude Code

$ npx -y skills add suitedaces/dorabot --skill nano-banana --agent claude-code

SKILL.md

nano-banana.SKILL.md
name: image-gen
description: "Generate and edit images using the Gemini API. Text-to-image, image editing, multi-turn iteration, 4K resolution, search grounding."
metadata:
  { "requires": { "bins": ["curl", "jq"], "env": ["GEMINI_API_KEY"] } }

Image Generation Skill

Generate and edit images via Gemini's native image generation API using `curl`.

Models

| Model | ID | Best for | |-------|----|----------| | Nano Banana | `gemini-2.5-flash-image` | Fast, high-volume, low-latency | | Nano Banana Pro | `gemini-3-pro-image-preview` | Pro asset production, complex prompts, accurate text rendering, 4K |

Default to `gemini-2.5-flash-image` unless the user asks for high quality, 4K, search grounding, or text-heavy images.

Text-to-Image

curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "YOUR PROMPT HERE"}]}]
  }' | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -D > output.png

Read the output image file to show it to the user.

Image Editing (image + text → image)

Encode an existing image as base64 and send it alongside a text prompt:

BASE64_IMG=$(base64 -i input.png)

curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"contents\": [{
      \"parts\": [
        {\"text\": \"YOUR EDIT PROMPT HERE\"},
        {\"inline_data\": {\"mime_type\": \"image/png\", \"data\": \"$BASE64_IMG\"}}
      ]
    }]
  }" | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -D > output.png

Pro Model Options

When using `gemini-3-pro-image-preview`, you can set aspect ratio and resolution:

curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "YOUR PROMPT HERE"}]}],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "imageConfig": {
        "aspectRatio": "16:9",
        "imageSize": "2K"
      }
    }
  }' | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -D > output.png

Aspect Ratios

`1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9`

Resolutions (Pro only)

`1K` (default), `2K`, `4K` — must be uppercase K.

Search Grounding (Pro only)

Generate images based on real-time info (weather, news, etc.):

curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "YOUR PROMPT HERE"}]}],
    "tools": [{"google_search": {}}],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }' | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -D > output.png

Handling Responses

The API returns JSON with parts that can contain text and/or image data. Extract text and image separately:

# save full response
RESPONSE=$(curl -s -X POST ... )

# extract text (if any)
echo "$RESPONSE" | jq -r '.candidates[0].content.parts[] | select(.text) | .text'

# extract and save image
echo "$RESPONSE" | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -D > output.png

Workflow

1. Understand what the user wants to generate or edit 2. Pick the right model (flash for speed, pro for quality/text/4K) 3. Write a detailed, descriptive prompt — more detail = better results 4. Run the curl command, save the image 5. Read the image file to display it inline 6. If the user wants edits, use the image editing flow with the previous output as input

Tips

  • Prompts should be descriptive and specific — style, composition, lighting, mood
  • For image editing, describe what to change, not what to keep
  • Pro model has a "thinking" mode — may take longer but produces better results
  • All generated images include a SynthID watermark
  • Pro supports up to 14 reference images in a single request (up to 6 objects + 5 humans)
  • If the response has no `inlineData`, check for error messages in the JSON
Read more
@suitedaces
Ships withdorabot

A 24/7 self-learning AI agent with an integrated IDE workspace that runs itself. Works with your existing Claude Code or OpenAI Codex subscription. No extra API key needed.

Stars on GitHub

Momentum

stars in total
247
Star history of suitedaces/dorabot on GitHub, a chart by star-history.com

Other skills on dorabot.

agent-swarm-orchestation

agent-swarm-orchestati…

Master multi-agent orchestration using Claude Code's TeammateTool and Task system. Use when coordinating multiple agents, running…

@suitedaces@suitedacesInstall Skill
github

github

Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced…

@suitedaces@suitedacesInstall Skill
himalaya

himalaya

CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the…

@suitedaces@suitedacesInstall Skill
macos

macos

Control macOS via AppleScript/osascript. Manage windows (move, resize, tile), apps (launch, quit, focus), system (volume, dark…

@suitedaces@suitedacesInstall Skill
meme

meme

Generate memes using the free memegen.link API. Create image memes from 200+ templates with custom top/bottom text, or use…

@suitedaces@suitedacesInstall Skill
onboard

onboard

Personalize the agent — interview the user to build their profile (USER.md) and craft the agent's personality (SOUL.md).…

@suitedaces@suitedacesInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about nano-banana.

Which coding agents can use nano-banana?
nano-banana installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.