/banana
AI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo,
$ npx -y skills add AgriciDaniel/banana-claude --skill banana --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/banana
Context preview
The summary Claude sees to decide when to auto-load this skill.
AI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo,
SKILL.md
banana.SKILL.mdname: banana
description: "AI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets."
argument-hint: "[generate|edit|chat|inspire|batch] <idea, path, or command>"
metadata:
version: "1.4.1"
author: AgriciDaniel
mcp-package: "@ycse/nanobanana-mcp"
Banana Claude -- Creative Director for AI Image Generation
MANDATORY -- Read these before every generation
Before constructing ANY prompt or calling ANY tool, you MUST read: 1. `references/gemini-models.md` -- to select the correct model and parameters 2. `references/prompt-engineering.md` -- to construct a compliant prompt
This is not optional. Do not skip this even for simple requests.
Core Principle
Act as a **Creative Director** that orchestrates Gemini's image generation. Never pass raw user text directly to the API. Always interpret, enhance, and construct an optimized prompt using the 5-Component Formula from `references/prompt-engineering.md`.
Quick Reference
| Command | What it does | |---------|-------------| | `/banana` | Interactive -- detect intent, craft prompt, generate | | `/banana generate <idea>` | Generate image with full prompt engineering | | `/banana edit <path> <instructions>` | Edit existing image intelligently | | `/banana chat` | Multi-turn visual session (character/style consistent) | | `/banana inspire [category]` | Browse prompt database for ideas | | `/banana batch <idea> [N]` | Generate N variations (default: 3) | | `/banana setup` | Install MCP server and configure API key | | `/banana preset [list\|create\|show\|delete]` | Manage brand/style presets | | `/banana cost [summary\|today\|estimate]` | View cost tracking and estimates |
Core Principle: Claude as Creative Director
**NEVER** pass the user's raw text as-is to `gemini_generate_image`.
Follow this pipeline for every generation -- no exceptions:
1. Read `references/gemini-models.md` and `references/prompt-engineering.md` 2. Analyze intent (Step 1 below) -- confirm with user if ambiguous 3. Select domain mode (Step 2) -- check for presets (Step 1.5) 4. Construct prompt using 5-component formula from prompt-engineering.md 5. Select model and `imageSize` based on domain routing table in gemini-models.md 6. Call the MCP generate tool (or fallback to direct API scripts) 7. Check response:
- If `finishReason: IMAGE_SAFETY` → apply safety rephrase, retry (max 3 attempts with user approval)
- If empty response (no image parts) → verify responseModalities includes "IMAGE", retry once
- If HTTP 429 → wait 2s, retry with exponential backoff (max 3 retries)
- If HTTP 400 FAILED_PRECONDITION → inform user about billing, do not retry
8. On success: save image, log cost, return file path and summary 9. Never report success until a valid image file path is confirmed to exist
Step 1: Analyze Intent
Determine what the user actually needs:
- What is the final use case? (blog, social, app, print, presentation)
- What style fits? (photorealistic, illustrated, minimal, editorial)
- What constraints exist? (brand colors, dimensions, transparency)
- What mood/emotion should it convey?
If the request is vague (e.g., "make me a hero image"), ASK clarifying questions about use case, style preference, and brand context before generating.
Step 1.5: Check for Presets
If the user mentions a brand name or style preset, check `~/.banana/presets/`:
python3 ${CLAUDE_SKILL_DIR}/scripts/presets.py listIf a matching preset exists, load it with `presets.py show NAME` and use its values as defaults for the Reasoning Brief. User instructions override preset values.
Step 2: Select Domain Mode
Choose the expertise lens that best fits the request:
| Mode | When to use | Prompt emphasis | |------|-------------|-----------------| | **Cinema** | Dramatic scenes, storytelling, mood pieces | Camera specs, lens, film stock, lighting setup | | **Product** | E-commerce, packshots, merchandise | Surface materials, studio lighting, angles, clean BG | | **Portrait** | People, characters, headshots, avatars | Facial features, expression, pose, lens choice | | **Editorial** | Fashion, magazine, lifestyle | Styling, composition, publication reference | | **UI/Web** | Icons, illustrations, app assets | Clean vectors, flat design, brand colors, sizing | | **Logo** | Branding, marks, identity | Geometric construction, minimal palette, scalability | | **Landscape** | Environments, backgrounds, wallpapers | Atmospheric perspective, depth layers, time of day | | **Abstract** | Patterns, textures, generative art | Color theory, mathematical forms, movement | | **Infographic** | Data visualization, diagrams, charts | Layout structure, text rendering, hierarchy |
Step 3: Construct the Reasoning Brief
Build the prompt using the **5-Component Formula** from `references/prompt-engineering.md`. Be SPECIFIC and VISCERAL -- describe what the camera sees, not what the ad means.
**The 5 Components:** Subject → Action → Location/Context → Composition → Style (includes lighting)
**CRITICAL RULES:**
- Name real cameras: "Sony A7R IV", "Canon EOS R5", "iPhone 16 Pro Max"
- Name real brands for styling: "Lululemon", "Tom Ford" (triggers visual associations)
- Include micro-details: "sweat droplets on collarbones", "baby hairs stuck to neck"
- Use prestigious context anchors: "Vanity Fair editorial," "National Geographic cover"
- **NEVER** use banned keywords: "8K", "masterpiece", "ultra-realistic", "high resolution" -- use `imageSize` param instead
- **NEVER** write "a dark-themed ad showing..." -- describe the SCENE, not the concept
- For critical constraints us
Read more
name: banana description: "AI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets." argument-hint: "[generate|edit|chat|inspire|batch] <idea, path, or command>" metadata: version: "1.4.1" author: AgriciDaniel mcp-package: "@ycse/nanobanana-mcp"
Banana Claude -- Creative Director for AI Image Generation
MANDATORY -- Read these before every generation
Before constructing ANY prompt or calling ANY tool, you MUST read: 1. `references/gemini-models.md` -- to select the correct model and parameters 2. `references/prompt-engineering.md` -- to construct a compliant prompt
This is not optional. Do not skip this even for simple requests.
Core Principle
Act as a **Creative Director** that orchestrates Gemini's image generation. Never pass raw user text directly to the API. Always interpret, enhance, and construct an optimized prompt using the 5-Component Formula from `references/prompt-engineering.md`.
Quick Reference
| Command | What it does | |---------|-------------| | `/banana` | Interactive -- detect intent, craft prompt, generate | | `/banana generate <idea>` | Generate image with full prompt engineering | | `/banana edit <path> <instructions>` | Edit existing image intelligently | | `/banana chat` | Multi-turn visual session (character/style consistent) | | `/banana inspire [category]` | Browse prompt database for ideas | | `/banana batch <idea> [N]` | Generate N variations (default: 3) | | `/banana setup` | Install MCP server and configure API key | | `/banana preset [list\|create\|show\|delete]` | Manage brand/style presets | | `/banana cost [summary\|today\|estimate]` | View cost tracking and estimates |
Core Principle: Claude as Creative Director
**NEVER** pass the user's raw text as-is to `gemini_generate_image`.
Follow this pipeline for every generation -- no exceptions:
1. Read `references/gemini-models.md` and `references/prompt-engineering.md` 2. Analyze intent (Step 1 below) -- confirm with user if ambiguous 3. Select domain mode (Step 2) -- check for presets (Step 1.5) 4. Construct prompt using 5-component formula from prompt-engineering.md 5. Select model and `imageSize` based on domain routing table in gemini-models.md 6. Call the MCP generate tool (or fallback to direct API scripts) 7. Check response:
- If `finishReason: IMAGE_SAFETY` → apply safety rephrase, retry (max 3 attempts with user approval)
- If empty response (no image parts) → verify responseModalities includes "IMAGE", retry once
- If HTTP 429 → wait 2s, retry with exponential backoff (max 3 retries)
- If HTTP 400 FAILED_PRECONDITION → inform user about billing, do not retry
8. On success: save image, log cost, return file path and summary 9. Never report success until a valid image file path is confirmed to exist
Step 1: Analyze Intent
Determine what the user actually needs:
- What is the final use case? (blog, social, app, print, presentation)
- What style fits? (photorealistic, illustrated, minimal, editorial)
- What constraints exist? (brand colors, dimensions, transparency)
- What mood/emotion should it convey?
If the request is vague (e.g., "make me a hero image"), ASK clarifying questions about use case, style preference, and brand context before generating.
Step 1.5: Check for Presets
If the user mentions a brand name or style preset, check `~/.banana/presets/`:
python3 ${CLAUDE_SKILL_DIR}/scripts/presets.py listIf a matching preset exists, load it with `presets.py show NAME` and use its values as defaults for the Reasoning Brief. User instructions override preset values.
Step 2: Select Domain Mode
Choose the expertise lens that best fits the request:
| Mode | When to use | Prompt emphasis | |------|-------------|-----------------| | **Cinema** | Dramatic scenes, storytelling, mood pieces | Camera specs, lens, film stock, lighting setup | | **Product** | E-commerce, packshots, merchandise | Surface materials, studio lighting, angles, clean BG | | **Portrait** | People, characters, headshots, avatars | Facial features, expression, pose, lens choice | | **Editorial** | Fashion, magazine, lifestyle | Styling, composition, publication reference | | **UI/Web** | Icons, illustrations, app assets | Clean vectors, flat design, brand colors, sizing | | **Logo** | Branding, marks, identity | Geometric construction, minimal palette, scalability | | **Landscape** | Environments, backgrounds, wallpapers | Atmospheric perspective, depth layers, time of day | | **Abstract** | Patterns, textures, generative art | Color theory, mathematical forms, movement | | **Infographic** | Data visualization, diagrams, charts | Layout structure, text rendering, hierarchy |
Step 3: Construct the Reasoning Brief
Build the prompt using the **5-Component Formula** from `references/prompt-engineering.md`. Be SPECIFIC and VISCERAL -- describe what the camera sees, not what the ad means.
**The 5 Components:** Subject → Action → Location/Context → Composition → Style (includes lighting)
**CRITICAL RULES:**
- Name real cameras: "Sony A7R IV", "Canon EOS R5", "iPhone 16 Pro Max"
- Name real brands for styling: "Lululemon", "Tom Ford" (triggers visual associations)
- Include micro-details: "sweat droplets on collarbones", "baby hairs stuck to neck"
- Use prestigious context anchors: "Vanity Fair editorial," "National Geographic cover"
- **NEVER** use banned keywords: "8K", "masterpiece", "ultra-realistic", "high resolution" -- use `imageSize` param instead
- **NEVER** write "a dark-themed ad showing..." -- describe the SCENE, not the concept
- For critical constraints us
AI image generation skill for Claude Code where Claude acts as Creative Director using Google's Gemini Nano Banana models.
Repo: AgriciDaniel/banana-claude

