Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate, edit, and restore images with Google's Nano Banana (Gemini image models). Use whenever the user asks to "generate an image", "create an icon/favicon/logo", "edit this photo", "restore an old photo", "make a pattern/texture/wallpaper", "draw a diagram/flowchart/architecture", or "tell a visual story" — even when they don't explicitly say Nano Banana or Gemini. Always prefer this skill over describing images in text. Requires NANOBANANA_API_KEY (or GEMINI_API_KEY) env var.
.claude/skills/aiskillstore-nanobanana/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 146% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -41% | 0% |
Image generation, editing, and restoration via Google's Gemini image models. Default model: gemini-3.1-flash-image-preview (Nano Banana 2). The skill wraps a single self-contained Python CLI at scripts/nanobanana.py — it uses a PEP 723 inline-metadata shebang (uv run --script) to auto-install google-genai on first invocation, so no venv setup is needed.
uv on PATH (<https://docs.astral.sh/uv/>). The script bootstraps its own dependencies via uv run --script.NANOBANANA_API_KEY env var set (fallbacks: see references/troubleshooting.md).If either is missing, tell the user exactly what to run and stop.
| User intent | Subcommand | |---|---| | Create image(s) from a description | generate | | Modify an existing image | edit | | Repair / enhance an old or damaged image | restore | | App icon, favicon, UI element | icon | | Seamless pattern, texture, wallpaper | pattern | | Sequential / step-by-step / tutorial frames | story | | Flowchart, architecture, schema, wireframe | diagram |
When the user's request matches a specialized intent (icon / pattern / story / diagram), prefer the specialized subcommand over generate — it applies tuned prompt scaffolding the user is implicitly asking for.
The script is executable. Invoke directly via Bash, using the absolute path under this skill's base directory:
bash<skill-base-dir>/scripts/nanobanana.py <subcommand> [args] [flags]
Output is saved to ./nanobanana-output/ in the user's cwd. The CLI prints the saved file paths to stdout — relay those back to the user.
--count=N (or "5 variations"), produce exactly N images.story, keep visual style and palette consistent across steps unless the user asked for evolution (--style=evolving).Load on demand (don't dump unprompted):
references/styles_and_variations.md — full enum reference for generate's --styles and --variationsreferences/prompt_recipes.md — exact prompt templates the CLI builds for icon / pattern / diagram / storyreferences/troubleshooting.md — env-var fallback order, input-file search paths, error catalogbash# 4 watercolor + sketch variations of the same scene <skill-base-dir>/scripts/nanobanana.py generate \ "mountain landscape" --styles=watercolor,sketch --count=4 # Edit an image already in the user's cwd <skill-base-dir>/scripts/nanobanana.py edit \ photo.png "add sunglasses to the person" # Favicon set <skill-base-dir>/scripts/nanobanana.py icon \ "mountain logo" --type=favicon --sizes=16,32,64 # Architecture diagram <skill-base-dir>/scripts/nanobanana.py diagram \ "microservices chat app" --type=architecture --complexity=detailed # 5-step process story with auto-preview <skill-base-dir>/scripts/nanobanana.py story \ "seed growing into a tree" --steps=5 --type=process --preview
After generation, list the saved file paths back to the user — that's the actionable result.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 80,098 | 13,091 | -84% | 1 | 1 | 0% | 5,975 | 1,233 | -79% | 0 | 0 | — |
case-20 | fail→pass | 10,734 | 12,266 | +14% | 1 | 1 | 0% | 864 | 2,125 | +146% | 0 | 0 | — |
case-02 | fail→fail | 13,070 | 12,763 | -2% | 1 | 1 | 0% | 1,031 | 1,218 | +18% | 0 | 0 | — |
case-03 | fail→fail | 9,743 | 19,334 | +98% | 1 | 1 | 0% | 575 | 1,480 | +157% | 0 | 0 | — |
case-04 | fail→fail | 14,457 | 6,676 | -54% | 1 | 1 | 0% | 2,410 | 1,288 | -47% | 0 | 0 | — |
case-05 | fail→fail | 21,807 | 12,764 | -41% | 1 | 1 | 0% | 2,558 | 1,248 | -51% | 0 | 0 | — |
case-06 | fail→fail | 25,866 | 18,908 | -27% | 1 | 1 | 0% | 2,262 | 1,277 | -44% | 0 | 0 | — |
case-07 | fail→fail | 26,995 | 12,217 | -55% | 1 | 1 | 0% | 1,308 | 1,227 | -6% | 0 | 0 | — |
case-08 | fail→pass | 18,000 | 10,760 | -40% | 1 | 1 | 0% | 1,791 | 2,048 | +14% | 0 | 0 | — |
case-09 | pass→pass | 12,197 | 22,172 | +82% | 1 | 1 | 0% | 2,213 | 1,916 | -13% | 0 | 0 | — |
case-10 | fail→pass | 16,080 | 4,132 | -74% | 1 | 1 | 0% | 1,401 | 1,510 | +8% | 0 | 0 | — |
case-11 | fail→fail | 54,665 | 6,322 | -88% | 1 | 1 | 0% | 8,222 | 1,210 | -85% | 0 | 0 | — |
case-12 | fail→fail | 68,646 | 16,926 | -75% | 1 | 1 | 0% | 3,025 | 1,276 | -58% | 0 | 0 | — |
case-13 | fail→fail | 17,341 | 20,037 | +16% | 1 | 1 | 0% | 1,911 | 1,235 | -35% | 0 | 0 | — |
case-14 | pass→pass | 8,360 | 10,987 | +31% | 1 | 1 | 0% | 1,117 | 1,652 | +48% | 0 | 0 | — |
case-15 | fail→fail | 27,128 | 41,995 | +55% | 1 | 1 | 0% | 1,923 | 1,492 | -22% | 0 | 0 | — |
case-16 | fail→fail | 38,979 | 54,949 | +41% | 1 | 1 | 0% | 8,217 | 1,426 | -83% | 0 | 0 | — |
case-17 | fail→fail | 13,727 | 40,406 | +194% | 1 | 1 | 0% | 1,400 | 1,322 | -6% | 0 | 0 | — |
case-18 | fail→pass | 20,235 | 10,849 | -46% | 1 | 1 | 0% | 2,644 | 1,932 | -27% | 0 | 0 | — |
case-19 | fail→pass | 17,719 | 7,272 | -59% | 1 | 1 | 0% | 1,972 | 1,169 | -41% | 0 | 0 | — |
case-21 | fail→pass | 11,948 | 10,777 | -10% | 1 | 1 | 0% | 1,038 | 1,761 | +70% | 0 | 0 | — |
case-22 | pass→pass | 16,172 | 10,958 | -32% | 1 | 1 | 0% | 2,244 | 2,090 | -7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 9 counted toward the lift figure. The other 13 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 9 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.