Bananahub
bananahub-ai/bananahub-skill
Agent-native image workflow and optional prompt optimizer for /bananahub and generic agent image generation requests.
Transform natural language image requests into optimized structured prompts for Gemini image generation.
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skill --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nano-banana-prompting .claude/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .claude/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-promptingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/nano-banana-prompting .agents/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .agents/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/nano-banana-prompting .cursor/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .cursor/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/nano-banana-prompting--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/nano-banana-prompting .gemini/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .gemini/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skillInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/nano-banana-prompting .github/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .github/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills nano-banana-prompting-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/nano-banana-prompting .opencode/skills/nano-banana-prompting-skill && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "nano-banana-prompting-skill" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-banana-prompting into .opencode/skills/nano-banana-prompting-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-prompting-skill", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
nano-banana-prompting-skillTransform natural language image requests into optimized structured prompts for Gemini image generation.
Nano Banana Prompting Skill is an agent skill from LeoYeAI/openclaw-master-skills. Transform natural language image requests into optimized structured prompts for Gemini image generation. Automatically detects style and builds the perfect prompt — cinematic, illustration, anime, 3D, watercolor, product, and more.
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files and assets (for example `README.md`, `_meta.json` and `references/prompt-guide.md`).
It sits in Media & Creative, covering Image generation and Prompt engineering. It works with Google Gemini. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Nano Banana Prompting Skill loads about 5.3k tokens when it runs, and up to ~6k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 765 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 765 words, ~5,330 tokens.
.claude/skills/nano-banana-prompting-skill/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.This skill transforms simple, natural image requests into optimized structured prompts that produce dramatically better results from Gemini 3 Pro Image.
Instead of sending a plain text prompt (which produces generic, "AI slop" results), this skill builds a structured JSON prompt with the right technical details for the detected style — camera specs for photography, art techniques for illustration, render settings for 3D, and more.
When the user asks you to generate or edit an image:
uv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<YOUR_JSON_PROMPT>' \
--filename "<descriptive-name>.png" \
--resolution 2KReplace {nano-banana-pro-dir} with the path to the nano-banana-pro skill (typically bundled with OpenClaw).
For image editing (user provides a reference image):
uv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<YOUR_JSON_PROMPT>' \
--filename "<output-name>.png" \
-i "/path/to/reference.png" \
--resolution 2KThe --filename argument should always be a simple file path constructed by the agent (e.g., gecko-running.png). Never pass unsanitized user input directly as the filename. The agent should derive a safe, descriptive filename from the context.
Save images to the user's Desktop or the path they specify:
~/Desktop/<descriptive-name>.pnggecko-coding-night.png, not output.pngDetect the style from the user's request. Look for keywords, context, and intent:
| Style | Trigger Keywords / Context |
|---|---|
| Cinematic / Photorealistic | "photo", "realistic", "cinematic", "portrait", "street", "landscape", real-world scenes, people, animals in real settings |
| Product / Studio | "product shot", "studio", "mockup", "packaging", "e-commerce", objects on clean backgrounds |
| Street / Documentary | "candid", "street", "reportage", "documentary", "raw", urban scenes |
| Illustration / Digital Art | "illustration", "digital art", "concept art", "fantasy art", "draw", "artwork" |
| Anime / Manga | "anime", "manga", "cel shaded", "studio ghibli", Japanese animation style |
| 3D / Pixar | "3D", "Pixar", "render", "CGI", "clay", "isometric", cartoon characters |
| Watercolor / Traditional | "watercolor", "oil painting", "sketch", "pencil", "pastel", "charcoal", traditional media |
| Minimalist / Graphic | "logo", "icon", "flat", "minimal", "vector", "graphic design", "poster" |
| Surreal / Abstract | "surreal", "abstract", "dreamlike", "psychedelic", "impossible", "Dalí" |
If no style is obvious, default to Cinematic / Photorealistic — it's the most versatile and produces the best baseline quality.
If the user specifies a style explicitly, always respect that over auto-detection.
{
"instruction": "<one-line description of the final image>",
"subject": {
"description": "<main subject in detail>",
"clothing": "<if applicable>",
"expression": "<facial expression or mood>",
"pose": "<body position, action>",
"details": "<distinguishing features, textures>"
},
"scene": {
"setting": "<location/environment>",
"key_elements": "<important objects in the scene>",
"background": "<what's behind the subject>",
"foreground": "<what's in front, if any>",
"time_of_day": "<morning, golden hour, night, etc.>"
},
"photography": {
"camera": "<Sony A7IV | Hasselblad X2D | Canon R5 | ARRI Alexa 65 | Leica M11>",
"lens": "<24mm f/1.4 | 35mm f/1.4 | 50mm f/1.2 | 85mm f/1.8 | 135mm f/2>",
"shot_type": "<wide | medium | close-up | extreme close-up | aerial | low angle>",
"depth_of_field": "<shallow with bokeh | deep | tilt-shift>",
"lighting": "<natural golden hour | chiaroscuro | rim light | neon | overcast soft | studio three-point>",
"film_stock": "<Kodak Portra 400 | Fujifilm Pro 400H | Kodak Ektar 100 | CineStill 800T | Ilford HP5>",
"texture": "<subtle film grain | clean digital | heavy grain>"
},
"mood": "<emotional atmosphere in one sentence>",
"color_palette": "<dominant colors or color grading style>",
"aspect_ratio": "<1:1 | 16:9 | 4:3 | 9:16 | 3:2>",
"quality": "8K, photorealistic, cinematic, RAW photo",
"negative": "no text, no watermark, no deformed faces, no extra limbs, no blurry"
}Camera selection guide:
{
"instruction": "<product shot description>",
"subject": {
"product": "<item name and type>",
"material": "<glass, metal, fabric, wood, plastic, ceramic>",
"color": "<product colors>",
"details": "<logos, textures, unique features>"
},
"scene": {
"backdrop": "<seamless white | gradient | textured surface | lifestyle context>",
"surface": "<marble | wood | concrete | acrylic | fabric>",
"props": "<complementary objects if any>"
},
"photography": {
"camera": "Hasselblad X2D",
"lens": "90mm f/3.2 macro",
"shot_type": "<hero shot | flat lay | 45-degree | floating | exploded view>",
"lighting": "<softbox | ring light | natural window | dramatic single source | backlit>",
"reflections": "<subtle | mirror-like | none>",
"depth_of_field": "shallow, product sharp, background soft"
},
"mood": "<clean and premium | warm and inviting | bold and modern>",
"color_palette": "<brand-aligned colors>",
"aspect_ratio": "1:1",
"quality": "8K, commercial photography, sharp detail, color-accurate",
"negative": "no text, no watermark, no dust, no scratches"
}{
"instruction": "<illustration description>",
"subject": {
"character": "<character description>",
"expression": "<emotion>",
"pose": "<action or stance>",
"details": "<costume, accessories, distinctive features>"
},
"scene": {
"setting": "<world/environment>",
"key_elements": "<important scene elements>",
"atmosphere": "<fog, particles, light rays, sparks>"
},
"art_style": {
"medium": "<digital painting | concept art | comic book | storybook | gouache>",
"technique": "<cel shading | painterly | line art with color | crosshatching>",
"reference_artists": "<1-2 artist names for style reference>",
"color_approach": "<vibrant saturated | muted earthy | monochromatic | complementary>"
},
"composition": {
"framing": "<rule of thirds | centered | dynamic diagonal | symmetrical>",
"perspective": "<eye level | bird's eye | worm's eye | isometric>",
"focal_point": "<where the eye should go>"
},
"mood": "<epic and dramatic | whimsical and playful | dark and moody>",
"color_palette": "<specific colors or palette description>",
"aspect_ratio": "<16:9 | 3:2 | 1:1>",
"quality": "highly detailed illustration, trending on ArtStation, masterpiece",
"negative": "no text, no watermark, no photo-realistic, no AI artifacts"
}{
"instruction": "<anime scene description>",
"subject": {
"character": "<character description>",
"hair": "<style, color>",
"eyes": "<color, expression>",
"outfit": "<clothing details>",
"pose": "<action or expression>"
},
"scene": {
"setting": "<location>",
"atmosphere": "<cherry blossoms, rain, sunset glow, sparkles>",
"background_style": "<detailed | simplified | gradient wash>"
},
"art_style": {
"studio_reference": "<Studio Ghibli | Kyoto Animation | Ufotable | MAPPA | Trigger | Makoto Shinkai>",
"line_weight": "<thin and clean | bold and expressive | variable>",
"shading": "<flat cel | soft gradient | dramatic shadow>",
"era": "<modern anime | 90s retro | 80s vintage>"
},
"composition": {
"framing": "<close-up portrait | action shot | scenic wide | over-the-shoulder>",
"effects": "<speed lines | light flares | motion blur | sparkle overlay>"
},
"mood": "<heartwarming | intense action | melancholic | comedic>",
"color_palette": "<pastel soft | vibrant saturated | dark moody | warm sunset>",
"aspect_ratio": "16:9",
"quality": "anime key visual, high detail, studio quality, clean lines",
"negative": "no western cartoon style, no 3D, no photorealistic, no deformed hands"
}{
"instruction": "<3D scene description>",
"subject": {
"character": "<character description>",
"material": "<clay | plastic | rubber | fur | fabric>",
"proportions": "<chibi | realistic | stylized | exaggerated>",
"expression": "<emotion>",
"pose": "<stance or action>"
},
"scene": {
"environment": "<setting>",
"props": "<objects in scene>",
"scale": "<miniature diorama | life-size | macro>"
},
"render": {
"engine": "<Pixar RenderMan | Blender Cycles | Unreal Engine 5 | Octane>",
"style": "<Pixar | DreamWorks | Aardman claymation | Nendoroid figure>",
"materials": "<subsurface scattering | glossy plastic | matte clay | fabric texture>",
"lighting": "<three-point studio | HDRI environment | dramatic rim | soft ambient>",
"effects": "<ambient occlusion | global illumination | volumetric fog | depth of field>"
},
"mood": "<playful and colorful | dramatic and cinematic | cozy and warm>",
"color_palette": "<bright primary | pastel | earthy muted | vibrant candy>",
"aspect_ratio": "16:9",
"quality": "3D render, Pixar quality, high detail, raytraced, 8K",
"negative": "no 2D, no flat, no sketch, no watermark, no text"
}{
"instruction": "<painting description>",
"subject": {
"description": "<what to paint>",
"details": "<important visual details>"
},
"scene": {
"setting": "<environment or abstract>",
"elements": "<supporting visual elements>"
},
"traditional_art": {
"medium": "<watercolor | oil paint | acrylic | gouache | pastel | charcoal | pencil | ink wash>",
"paper": "<cold press watercolor | hot press | canvas | toned paper | rice paper>",
"technique": "<wet-on-wet | dry brush | impasto | glazing | stippling | hatching | wash>",
"brush": "<round | flat | fan | palette knife | sponge>",
"finish": "<loose and expressive | tight and detailed | abstract | impressionistic>"
},
"composition": {
"framing": "<centered | rule of thirds | asymmetric>",
"white_space": "<generous margins | edge-to-edge | vignette>"
},
"mood": "<serene | vibrant | nostalgic | raw and emotional>",
"color_palette": "<limited palette (3-4 colors) | full spectrum | monochrome wash>",
"aspect_ratio": "3:2",
"quality": "fine art quality, museum worthy, masterful brushwork, visible texture",
"negative": "no digital look, no photorealistic, no text, no watermark, no AI artifacts"
}{
"instruction": "<design description>",
"subject": {
"element": "<main visual element>",
"style": "<geometric | organic | typographic | iconographic>"
},
"design": {
"approach": "<flat design | material design | swiss style | brutalist | retro>",
"grid": "<centered | asymmetric | modular grid>",
"shapes": "<circles | rectangles | triangles | organic blobs | line art>",
"contrast": "<high contrast | subtle | duotone>"
},
"color_palette": "<2-3 specific colors or palette name>",
"background": "<solid color | gradient | textured | transparent>",
"aspect_ratio": "1:1",
"quality": "clean vector quality, crisp edges, professional graphic design",
"negative": "no photorealistic, no complex textures, no gradients unless specified, no text unless requested"
}{
"instruction": "<surreal scene description>",
"subject": {
"central_element": "<main impossible or dreamlike element>",
"transformation": "<how reality is bent or broken>",
"symbolism": "<underlying meaning or motif>"
},
"scene": {
"reality_level": "<slightly off | dreamlike | fully impossible | cosmic>",
"environment": "<melting landscape | infinite space | underwater sky | fractal world>",
"scale_distortion": "<giant small things | tiny big things | impossible geometry>"
},
"art_style": {
"reference": "<Dalí | Magritte | Escher | Beksinski | James Jean | Android Jones>",
"medium": "<hyperrealistic oil | digital surrealism | mixed media | collage>",
"technique": "<photobashing | matte painting | double exposure | glitch>"
},
"mood": "<unsettling beauty | peaceful absurdity | cosmic wonder | dark fantasy>",
"color_palette": "<describe the color world>",
"aspect_ratio": "16:9",
"quality": "highly detailed, surrealist masterpiece, museum quality",
"negative": "no text, no watermark, no generic, no stock photo feel"
}Detected style: 3D / Pixar (fun character scene)
{
"instruction": "A cute mint-green gecko character riding a skateboard while eating a large slice of pepperoni pizza",
"subject": {
"character": "small mint-green gecko with big expressive pale pink eyes and a wide happy grin",
"material": "smooth glossy skin with subtle subsurface scattering",
"proportions": "stylized chibi, slightly oversized head",
"expression": "pure joy, eyes half-closed savoring the pizza",
"pose": "standing on a moving skateboard, one hand holding pizza slice, cheese stretching"
},
"scene": {
"environment": "sunny Venice Beach boardwalk, palm trees, blue sky",
"props": "worn wooden skateboard with flame decals, pizza box on a nearby bench",
"scale": "life-size character in real-world setting"
},
"render": {
"engine": "Pixar RenderMan",
"style": "Pixar",
"materials": "subsurface scattering on gecko skin, glossy cheese, matte concrete",
"lighting": "warm golden hour sunlight with soft shadows",
"effects": "subtle motion blur on skateboard wheels, depth of field"
},
"mood": "carefree summer vibes, playful and fun",
"color_palette": "warm yellows, mint green, sky blue, pizza orange",
"aspect_ratio": "16:9",
"quality": "3D render, Pixar quality, high detail, raytraced, 8K",
"negative": "no 2D, no flat, no text, no watermark, no dark mood"
}Detected style: Cinematic / Photorealistic
{
"instruction": "A lone samurai standing in heavy rain at night, katana drawn, cinematic and dramatic",
"subject": {
"description": "weathered samurai warrior, middle-aged, battle-scarred",
"clothing": "dark indigo hakama and kimono, worn leather chest armor, straw sandals",
"expression": "intense focus, eyes locked forward, jaw set",
"pose": "standing in chudan-no-kamae stance, katana held at center",
"details": "rain droplets on blade edge catching light, wet hair tied in topknot"
},
"scene": {
"setting": "abandoned temple courtyard with stone lanterns",
"key_elements": "heavy rainfall, puddles reflecting lantern light",
"background": "dark silhouette of temple roof, mist rolling between pillars",
"foreground": "rain splashing on stone ground, shallow puddles",
"time_of_day": "deep night, moonless"
},
"photography": {
"camera": "ARRI Alexa 65",
"lens": "50mm f/1.2",
"shot_type": "medium shot, slightly low angle",
"depth_of_field": "shallow, rain drops in foreground out of focus",
"lighting": "single warm lantern as key light from left, cool rain backlit by distant light, rim light on shoulders",
"film_stock": "CineStill 800T",
"texture": "subtle film grain"
},
"mood": "tense calm before the storm, honor and solitude",
"color_palette": "deep indigo, warm amber lantern glow, cool steel grey",
"aspect_ratio": "16:9",
"quality": "8K, photorealistic, cinematic, RAW photo",
"negative": "no text, no watermark, no deformed faces, no blurry, no anime style"
}Detected style: Watercolor / Traditional
{
"instruction": "A loose, expressive watercolor painting of sunflowers in a ceramic vase",
"subject": {
"description": "five sunflowers in various stages of bloom, some drooping slightly",
"details": "petals ranging from bright yellow to burnt sienna, dark brown seed heads with visible texture"
},
"scene": {
"setting": "simple tabletop, implied window light",
"elements": "rustic blue ceramic vase, a few fallen petals on the surface, soft shadow"
},
"traditional_art": {
"medium": "watercolor",
"paper": "cold press watercolor paper, visible tooth texture",
"technique": "wet-on-wet for soft petal edges, dry brush for seed head texture, controlled wash for background",
"brush": "large round for washes, small round for details",
"finish": "loose and expressive, some areas left unfinished showing white paper"
},
"composition": {
"framing": "slightly off-center, flowers extending above frame edge",
"white_space": "generous margins, breathing room around the vase"
},
"mood": "warm, nostalgic, peaceful afternoon light",
"color_palette": "cadmium yellow, burnt sienna, cerulean blue, sap green — limited palette",
"aspect_ratio": "3:2",
"quality": "fine art quality, museum worthy, masterful brushwork, visible paper texture",
"negative": "no digital look, no photorealistic, no text, no watermark, no harsh edges"
}When the user provides a reference image to edit or use as inspiration:
-i flaguv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<JSON_PROMPT>' \
--filename "edited-output.png" \
-i "/path/to/original.png" \
--resolution 2KFor character consistency across multiple images, always include the same reference image(s) and describe the character identically in the subject field.
| Style | Must-Have Fields | Key Differentiator |
|---|---|---|
| Cinematic | photography.camera, lens, film_stock | Real camera specs sell the realism |
| Product | photography.lighting, surface, reflections | Clean, commercial precision |
| Illustration | art_style.medium, technique, reference_artists | Artist references anchor the style |
| Anime | art_style.studio_reference, line_weight, shading | Studio name = instant style match |
| 3D/Pixar | render.engine, style, materials | Render engine + material physics |
| Watercolor | traditional_art.medium, paper, technique | Paper texture + brush technique |
| Minimalist | design.approach, shapes, contrast | Less is more, precision matters |
| Surreal | art_style.reference, reality_level, transformation | Named surrealist = instant vibe |
© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references, assets) in skills/nano-banana-prompting of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Nano Banana Prompting Skill next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Nano Banana Prompting Skill this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.3k | Automated safety check: Pass | MIT | |
| Bananahubbananahub-ai/bananahub-skill | 118 | — | ~7.1k | Automated safety check: Pass | MIT | |
| Image Ad Clonekrusemediallc/arcads-claude-code | 1.6k | — | ~2.4k | Automated safety check: Notes | MIT | |
| AI Image Generation and Editingzhayujie/CowAgent | 47k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Logo Generatorop7418/logo-generator-skill | 2.2k | — | ~1.8k | Automated safety check: Notes | None | |
| Gemini Web Reverse-Engineered ClientJimLiu/baoyu-skills | 27k | 5 repos | ~1.6k | Automated safety check: Pass | MIT |
bananahub-ai/bananahub-skill
Agent-native image workflow and optional prompt optimizer for /bananahub and generic agent image generation requests.
krusemediallc/arcads-claude-code
A skill your agent uses when the user wants to reverse-engineer an existing image ad into a reusable prompt template.
zhayujie/CowAgent
Generates or edits images from text prompts through a Python script that picks an image backend based on which API keys are configured.
op7418/logo-generator-skill
Generate professional SVG logos and high-end showcase images.
JimLiu/baoyu-skills
Generates text and images through an unofficial, reverse-engineered Gemini Web API, supporting reference images and multi-turn conversations.
AgriciDaniel/claude-seo
Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Transform natural language image requests into optimized structured prompts for Gemini image generation. Nano Banana Prompting Skill is an agent skill from LeoYeAI/openclaw-master-skills. Transform natural language image requests into optimized structured prompts for Gemini image generation.
Nano Banana Prompting Skill fits situations like: tasks that involve Image generation; tasks that involve Prompt engineering.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a claude-code`. Or copy the skill folder (skills/nano-banana-prompting in LeoYeAI/openclaw-master-skills) into .claude/skills/nano-banana-prompting-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a codex`. Or copy the skill folder (skills/nano-banana-prompting in LeoYeAI/openclaw-master-skills) into .agents/skills/nano-banana-prompting-skill in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill nano-banana-prompting-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nano-banana-prompting-skill, .gemini/skills/nano-banana-prompting-skill, .github/skills/nano-banana-prompting-skill and .opencode/skills/nano-banana-prompting-skill in your project.
Going by SKILL.md and its folder, Nano Banana Prompting Skill needs the command-line tools its instructions call (uv). Our summary lists: A credential in GEMINI_API_KEY.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Nano Banana Prompting Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 708 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Nano Banana Prompting Skill: Bananahub (bananahub-ai/bananahub-skill, 118 stars), Image Ad Clone (krusemediallc/arcads-claude-code, 1.6k stars), AI Image Generation and Editing (zhayujie/CowAgent, 47k stars) and Logo Generator (op7418/logo-generator-skill, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.