REQUIRED for all image generation requests. Generate and edit images using Nano Banana (Gemini CLI). Handles blog featured images, YouTube thumbnails, icons, diagrams, patterns, illustrations, photos, visual assets, graphics, artwork, pictures. Use this skill whenever the user asks to create, generate, make, draw, design, or edit any image or visual content.
npx skills add https://github.com/nicepkg/ai-workflow --skill nano-banana
Generate professional images via the Gemini CLI's nanobanana extension.
ALWAYS use this skill when the user:
Do NOT attempt to generate images through any other method.
gemini extensions list | grep nanobanana
gemini extensions install https://github.com/gemini-cli-extensions/nanobanana
[ -n "$GEMINI_API_KEY" ] && echo "API key configured" || echo "Missing GEMINI_API_KEY"
| User Request | Command |
|--------------|---------|
| "make me a blog header" | /generate |
| "create an app icon" | /icon |
| "draw a flowchart of..." | /diagram |
| "fix this old photo" | /restore |
| "remove the background" | /edit |
| "create a repeating texture" | /pattern |
| "make a comic strip" | /story |
Note: Always use the --yolo flag to automatically approve all tool actions.
| Command | Use Case |
|---------|----------|
| gemini --yolo "/generate 'prompt'" | Text-to-image generation |
| gemini --yolo "/edit file.png 'instruction'" | Modify existing image |
| gemini --yolo "/restore old_photo.jpg 'fix scratches'" | Repair damaged photos |
| gemini --yolo "/icon 'description'" | App icons, favicons, UI elements |
| gemini --yolo "/diagram 'description'" | Flowcharts, architecture diagrams |
| gemini --yolo "/pattern 'description'" | Seamless textures and patterns |
| gemini --yolo "/story 'description'" | Sequential/narrative images |
| gemini --yolo "/nanobanana prompt" | Natural language interface |
--yolo - Required. Auto-approve all tool actions (no confirmation prompts)--count=N - Generate N variations (1-8)--preview - Auto-open generated images--styles="style1,style2" - Apply artistic styles--format=grid|separate - Output arrangement| Use Case | Dimensions | Notes |
|----------|------------|-------|
| YouTube thumbnail | 1280x720 | --aspect=16:9 |
| Blog featured image | 1200x630 | Social preview friendly |
| Square social | 1080x1080 | Instagram, LinkedIn |
| Twitter/X header | 1500x500 | Wide banner |
| Vertical story | 1080x1920 | --aspect=9:16 |
Default: gemini-2.5-flash-image (~$0.04/image)
For higher quality (4K, better reasoning):
export NANOBANANA_MODEL=gemini-3-pro-image-preview
# Modern illustration style
gemini --yolo "/generate 'modern flat illustration of developer coding at laptop, purple and blue gradient background, minimalist style, no text' --preview"
# Professional photography style
gemini --yolo "/generate 'professional editorial photo of coffee cup next to laptop on wooden desk, morning sunlight, shallow depth of field, no text' --count=3"
# Tech/abstract
gemini --yolo "/generate 'abstract visualization of neural network connections, dark background with glowing blue nodes, futuristic style' --preview"
gemini --yolo "/icon 'minimalist app logo for productivity tool' --sizes='64,128,256,512' --type='app-icon' --corners='rounded'"
gemini --yolo "/diagram 'user authentication flow with OAuth' --type='flowchart' --style='modern'"
All generated images are saved to ./nanobanana-output/ in the current directory.
After generation completes:
./nanobanana-output/ to find generated filesWhen the user asks for changes:
--count=3gemini --yolo "/edit nanobanana-output/filename.png 'adjustment'"--styles="requested_style" to the command| Problem | Solution |
|---------|----------|
| GEMINI_API_KEY not set | export GEMINI_API_KEY="your-key" |
| Extension not found | Run install command from setup section |
| Quota exceeded | Wait for reset or switch to flash model |
| Image generation failed | Check prompt for policy violations, simplify request |
| Output directory missing | Will be created automatically on first run |
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Take nicepkg/nano-banana from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.