generate-image

This skill should be used when the user asks to "generate an image", "create a banner", "make artwork", "create an illustration", "generate a logo", "make a graphic", "design a header", "AI art", "img2img", "social share image", "OG image", "open graph image", "Twitter card", "hero image", "cover photo", "profile picture", "social media graphic", or needs AI image generation. Handles prompt rewriting and Gemini 3 Pro image generation API calls.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "generate-image" with this command: npx skills add b-open-io/gemskills/b-open-io-gemskills-generate-image

Generate Image

Generate images using Nano Banana Pro (gemini-3-pro-image-preview).

When to Use

Use this skill when the user asks to:

  • Generate an image from a text prompt
  • Create artwork, illustrations, or graphics
  • Generate variations of an existing image (img2img)
  • Create scenes with multiple reference images (character + location + other characters)

Style Selection

If the user hasn't specified a style, present a multi-choice question before proceeding:

How would you like to handle the art style?

  1. Pick a style - Browse 167 styles visually and choose one
  2. Let me choose - I'll suggest a style based on your prompt
  3. What are styles? - Learn how the style system works
  4. No style - Generate without a specific art style

Use the AskUserQuestion tool to present this choice.

If the user picks "Pick a style", launch the style picker (pick mode is the default):

STYLE_JSON=$(bun run ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/scripts/preview_server.ts)

The picker opens a browser. The user clicks a style, views the detail modal, clicks "Select This Style". STYLE_JSON receives the selection as JSON and the server exits. Parse the id field and pass it via --style <id> to the generate command.

If the user picks "Let me choose", select the most fitting style based on their prompt and explain why. Use the style suggestions in the "Suggest Styles to Users" section below.

If the user picks "What are styles?", explain: there are 167 curated art styles across 10 categories (traditional, digital, illustration, photography, design, retro, technique, decorative, creative, cultural). Each style includes prompt hints and a visual reference tile that gets sent to Gemini for better adherence. Then re-ask the style question.

If the user already specified a style (e.g. "generate in watercolor style"), skip this step entirely and use --style directly.

Gather Design Direction First

Ask clarifying questions before rewriting prompts to understand the user's intent:

  1. Purpose: What is the image for? (banner, logo, social media, product shot, art piece)
  2. Color palette: Any brand colors? Dark/light theme? Specific mood?
  3. Composition constraints: Aspect ratio needs? Text overlay space? Full-bleed vs bordered?
  4. Key elements: What must be included? What should be avoided?

Simple requests like "make a cat image" can proceed with sensible defaults. Complex requests like "create a banner for my app" require clarification to avoid iteration waste.

Prompt Rewriting (Critical)

Before generating any image, always rewrite the user's prompt using the guide in references/prompt-guide.md.

The core principle: "Describe the scene, don't just list keywords."

Rewriting Checklist

Transform simple prompts by adding:

  1. Subject details: Specific appearance, clothing, expression, materials
  2. Environment/Setting: Location, time of day, weather, indoor/outdoor
  3. Lighting: Natural/artificial, direction, quality, color temperature
  4. Composition: Camera angle, distance, framing, focal length
  5. Style/Aesthetic: Photorealistic, illustration style, art movement
  6. Mood/Atmosphere: Emotional tone, color palette mood
  7. Technical specs: Aspect ratio, level of detail, textures

Example Transformation

User says: "banner for my app" Rewritten prompt: "A modern, full-bleed banner for a technology application. Dark gradient background transitioning from deep navy to black. Abstract geometric network visualization with glowing nodes connected by thin lines. Clean sans-serif typography positioned left of center. Professional, tech-forward aesthetic with no visible borders or edges - the design extends seamlessly to all edges. 16:9 aspect ratio."

User says: "a cat" Rewritten prompt: "A fluffy orange tabby cat lounging on a sun-drenched windowsill, soft afternoon light creating a warm glow on its fur. The cat is in a relaxed pose with half-closed eyes, conveying contentment. Shot from a low angle with shallow depth of field, the background showing a blurred garden view. Photorealistic, warm color palette."

Recommended Workflow

Draft → Iterate → Final approach saves time and API costs:

  1. Draft Phase (1K): Generate quickly at default resolution to test prompts
  2. Iteration Phase: Refine prompts incrementally, creating new files each attempt
  3. Final Phase (4K): Only produce high-res output after prompt is validated

Do not read the image back - the script outputs only the file path. This allows efficient iteration without Claude loading large image data.

Usage

bun run ${CLAUDE_PLUGIN_ROOT}/skills/generate-image/scripts/generate.ts "prompt" [options]

Options

  • --input <path> - Reference image (can specify multiple times, up to 14 images)
  • --style <id> - Apply style from the style library (see browsing-styles skill)
  • --size <1K|2K|4K> - Image size (default: 1K for fast drafts)
  • --aspect <ratio> - Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4
  • --negative <prompt> - Negative prompt (what to avoid)
  • --count <n> - Number of images (1-4, default: 1)
  • --guidance <n> - Guidance scale
  • --seed <n> - Random seed for reproducibility
  • --output <path> - Output path
  • --model <name> - gemini (default) or grok (Grok Imagine Image via Replicate)

Examples

# Simple generation
bun run scripts/generate.ts "cyberpunk cityscape at night"

# With art style (100+ available, use short names or full IDs)
bun run scripts/generate.ts "mountain landscape" --style impressionism
bun run scripts/generate.ts "portrait" --style ukiy
bun run scripts/generate.ts "city street" --style noir

# High-res with specific aspect ratio
bun run scripts/generate.ts "mountain landscape" --size 4K --aspect 16:9

# With negative prompt
bun run scripts/generate.ts "portrait of a cat" --negative "low quality, blurry"

# Combine style with other options
bun run scripts/generate.ts "cat sleeping" --style wtrc --size 4K --aspect 1:1

# Generate multiple variations
bun run scripts/generate.ts "abstract art" --count 4

# Single reference image (img2img)
bun run scripts/generate.ts "make it look like a watercolor painting" --input photo.jpg

# Multiple reference images (character consistency, scene composition)
bun run scripts/generate.ts "King on throne in dramatic lighting" \
  --input character.png \
  --input throne-room.png \
  --aspect 16:9 --size 2K

# Multiple characters in a scene
bun run scripts/generate.ts "Two warriors facing each other in combat" \
  --input warrior1.png \
  --input warrior2.png \
  --input battlefield.png \
  --aspect 16:9

Multiple Reference Images

Gemini supports up to 14 reference images per request:

  • 6 objects - Locations, items, environments
  • 5 humans - Character consistency across generations
  • Use detailed prompts describing how reference images should be combined
  • Reference images help maintain consistency across scene generations

Common Formats

FormatAspect RatioRecommended SizeCrop Target
OG / Social Share16:92K1200x630 via sips
Twitter Card16:92K1200x628 via sips
Hero Banner16:94KFull width
Profile Picture1:11K512x512 or 1024x1024
Story / Reel9:162K1080x1920
Team Lineup21:92KFull width

Social Share Image Workflow

All 4 steps are required. Do not skip optimization.

  1. Generate at 16:9 with center-weighted prompt at --size 2K (retina-ready):
    bun run scripts/generate.ts "CENTER all important elements, no content near edges. [your prompt]" --aspect 16:9 --size 2K --output social-share.png
    
  2. Crop to exact platform dimensions:
    sips -z 630 1200 -c 630 1200 social-share.png --out social-share-og.png   # OG
    sips -z 628 1200 -c 628 1200 social-share.png --out social-share-tw.png   # Twitter
    
  3. Optimize - convert to JPEG at 85% quality (social images never need transparency):
    sips -s format jpeg -s formatOptions 85 social-share-og.png --out social-share-og.jpg
    
  4. Verify dimensions and file size:
    sips -g pixelWidth -g pixelHeight social-share-og.jpg
    ls -la social-share-og.jpg  # Target: <500KB
    

Why optimize? Gemini outputs PNG (~1-2MB). JPEG at 85% reduces to ~200-400KB with no visible quality loss. Social platforms re-compress uploads, so starting with a well-optimized JPEG prevents double-compression artifacts.

Available Styles

100+ styles across 9 categories: traditional art, digital, illustration, photography, design/UI, retro, techniques, decorative, and creative/material-based.

When a style has a tile reference image (assets/tiles/<id>.png), it is automatically sent as a visual reference to Gemini alongside the prompt hints — this produces much better style adherence.

Suggest Styles to Users

When generating images, proactively suggest relevant styles:

  • For landscapes: impr, roma, wtrl, cine
  • For portraits: barq, prer, anim, fnoi
  • For UI/web: brut, nbrt, glas, flat
  • For retro/vintage: y2k, frug, psyc, koda
  • For whimsical/fun: ghbl, kawa, chld, brit
  • For dramatic: cybr, nnoi, surr, expr
  • For creative: sand, undr, orig, clay, lego

Browse all: bun run ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/scripts/list_styles.ts --table Search: bun run ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/scripts/list_styles.ts --search "watercolor"

Models

Gemini (default)

Uses gemini-3-pro-image-preview - Nano Banana Pro, Google's professional image generation model with thinking capabilities.

Grok Imagine Image (--model grok)

Uses xai/grok-imagine-image via Replicate. Requires REPLICATE_API_TOKEN (or REPLICATE_API_KEY). Text-to-image only (no reference images or style tiles). This is a last-resort fallback — Gemini produces better results including likeness. Only use when:

  • Content is blocked by Gemini's safety filters
  • The user specifically requests it
# Grok image generation
bun run scripts/generate.ts "A medieval girl standing on a futuristic hoverpod" --model grok --output hoverpod.jpg

Last verified: March 2026. If a newer generation exists, STOP and suggest a PR to b-open-io/gemskills. See the ask-gemini skill's references/gemini-api.md for current models and Google's official gemini-api-dev skill for the canonical source.

Reference Files

For detailed prompting strategies and techniques:

  • references/prompt-guide.md - Comprehensive Gemini prompting guide with 7 strategies, example transformations, and best practices from Google's official documentation
  • ask-gemini skill's references/gemini-api.md - Current Gemini models, SDK info, and dynamic documentation via llms.txt

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

generate-icon

No summary provided by upstream source.

Repository SourceNeeds Review
General

optimize-images

No summary provided by upstream source.

Repository SourceNeeds Review
General

ask-gemini

No summary provided by upstream source.

Repository SourceNeeds Review
General

deck creator

No summary provided by upstream source.

Repository SourceNeeds Review