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:
references/gemini-models.md-- to select the correct model and parametersreferences/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:
- Read
references/gemini-models.mdandreferences/prompt-engineering.md - Analyze intent (Step 1 below) -- confirm with user if ambiguous
- Select domain mode (Step 2) -- check for presets (Step 1.5)
- Construct prompt using 5-component formula from prompt-engineering.md
- Select model and
imageSizebased on domain routing table in gemini-models.md - Call the MCP generate tool (or fallback to direct API scripts)
- 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
- On success: save image, log cost, return file path and summary
- 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 list
If 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
imageSizeparam instead - NEVER write "a dark-themed ad showing..." -- describe the SCENE, not the concept
- For critical constraints use ALL CAPS: "MUST contain exactly three figures"
- For products: say "prominently displayed" to ensure visibility
Template for photorealistic / ads:
[Subject: age + appearance + expression], wearing [outfit with brand/texture],
[action verb] in [specific location + time]. [Micro-detail about skin/hair/
sweat/texture]. Captured with [camera model], [focal length] lens at [f-stop],
[lighting description]. [Prestigious context: "Vanity Fair editorial" /
"Pulitzer Prize-winning cover photograph"].
Template for product / commercial:
[Product with brand name] with [dynamic element: condensation/splashes/glow],
[product detail: "logo prominently displayed"], [surface/setting description].
[Supporting visual elements: light rays, particles, reflections].
Commercial photography for an advertising campaign. [Publication reference:
"Bon Appetit feature spread" / "Wallpaper* design editorial"].
Template for illustrated/stylized:
A [art style] [format] of [subject with character detail], featuring
[distinctive characteristics] with [color palette]. [Line style] and
[shading technique]. Background is [description]. [Mood/atmosphere].
Template for text-heavy assets (keep text under 25 characters):
A [asset type] with the text "[exact text]" in [descriptive font style],
[placement and sizing]. [Layout structure]. [Color scheme]. [Visual
context and supporting elements].
For more templates see references/prompt-engineering.md → Proven Prompt Templates.
Step 4: Select Aspect Ratio
Match ratio to use case -- call set_aspect_ratio BEFORE generating:
| Use Case | Ratio | Why | |----------|-------|-----| | Social post / avatar | 1:1 | Square, universal | | Blog header / YouTube thumb | 16:9 | Widescreen standard | | Story / Reel / mobile | 9:16 | Vertical full-screen | | Portrait / book cover | 3:4 | Tall vertical | | Product shot | 4:3 | Classic display | | DSLR print / photo standard | 3:2 | Classic camera ratio | | Pinterest pin / poster | 2:3 | Tall vertical card | | Instagram portrait | 4:5 | Social portrait optimized | | Large format photography | 5:4 | Landscape fine art | | Website banner | 4:1 or 8:1 | Ultra-wide strip | | Ultrawide / cinematic | 21:9 | Film-grade (3.1 Flash only) |
Step 4.5: Select Resolution (optional)
Choose output resolution based on intended use:
| imageSize | When to use | |-------------|-------------| | 512 | Quick drafts, rapid iteration | | 1K | Budget-conscious, web thumbnails, social media | | 2K | Default -- quality assets, most use cases | | 4K | Print production, hero images, fina