{"slug":"scenario-gemini-image","title":"scenario-gemini-image","summary":"Use when generating or editing images with Google's Gemini image models (Nano Banana) on Scenario via MCP: text-to-image, natural-language instruction editing, identity locking or style transfer from reference images, multi-image fusion, pulling stills from a video clip, Google S","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-17T09:10:54.588265Z","repo":{"url":"https://github.com/scenario-labs/skills","stars":1035,"forks":129,"license":"MIT","updatedAt":"2026-10-17T05:01:44Z"},"bodyHtml":"<hr>\n<h2>name: scenario-gemini-image\ndescription: \"Use when generating or editing images with Google's Gemini image models (Nano Banana) on Scenario via MCP: text-to-image, natural-language instruction editing, identity locking or style transfer from reference images, multi-image fusion, pulling stills from a video clip, Google Search grounding, thinking level tuning, 512 to 4K output, or choosing between Flash, Pro, and Lite. Keywords: Gemini 3.1 Flash, Gemini 3.0 Pro, Gemini 3.1 Lite, Nano Banana 2, Nano Banana Pro, txt2img, img2img.\"\nlicense: MIT</h2>\n<h1>Scenario Gemini Image</h1>\n<h2>Overview</h2>\n<p>Gemini, Google's image family on Scenario (the Nano Banana line), generates and edits through one required <code>prompt</code>: edits are instructions against the references, never mask painting. Discover members with <code>search</code> and treat <code>model_schema_get</code> as the contract: the creative fields are shared and nearly everything else is per member.</p>\n<p>Connection and the core loop: see the <code>scenario</code> skill in this repo; model-agnostic image work: the <code>scenario-image</code> skill. Gemini video belongs to the <code>scenario-gemini-omni</code> skill; Gemini speech models are the audio domain. If a sibling skill named here is missing from your available skills, ask the user to install it (<code>npx skills add scenario-labs/skills --skill &lt;name&gt;</code>); unattended, proceed from tool schemas and flag the gap.</p>\n<h2>Quick reference</h2>\n<p>Three members at authoring time (per-member facts move, so read the schema):</p>\n<table>\n<thead>\n<tr>\n<th>Member</th>\n<th>Resolution</th>\n<th>Sets it apart</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>3.1 Flash</td>\n<td><code>512</code> to <code>4K</code>, default <code>1K</code></td>\n<td>video input, four <code>thinkingLevel</code> steps, Search grounding</td>\n</tr>\n<tr>\n<td>3.0 Pro</td>\n<td><code>1K</code> to <code>4K</code>, default <code>2K</code></td>\n<td>built for complex instruction edits and multi-image fusion</td>\n</tr>\n<tr>\n<td>3.1 Lite</td>\n<td>fixed 1K, no <code>resolution</code></td>\n<td>fastest and cheapest; <code>thinkingLevel</code> is <code>MINIMAL</code> or <code>HIGH</code></td>\n</tr>\n</tbody>\n</table>\n<p>Shared fields: <code>referenceImages</code> (up to 14, an array even for one), <code>numOutputs</code> (1 to 4 variations of one prompt), <code>aspectRatio</code> (<code>21:9</code> through <code>9:16</code> plus the default <code>auto</code>; pin the ratio when a placement demands one), and a prompt cap near 250000 characters, so a full brief fits verbatim. Flash alone takes <code>video</code> (one clip, about 15 MB, sampled at <code>videoFps</code>, default 1 fps) to pull stills from footage; <code>video</code> and <code>referenceImages</code> are mutually exclusive. <code>useGoogleSearch</code> (Flash and Pro) grounds the run in live web context and moves the price, like every field marked <code>cost_impact</code>. No mask, seed, or negative-prompt field exists: regional edits are sentences, and reruns give variations, not reproductions.</p>\n<h2>Write instructions, not tags</h2>\n<p>Describe subject, setting, and style in plain sentences. For edits, state the change and what must survive it: \"keep the shoe's shape, colors, and branding unchanged; place it on a sunlit deck\". With several references, assign roles by position (\"image 1 is the character's face, image 2 the outfit, image 3 the background style\"); unassigned references blur together. Lock identity explicitly: say the features must be preserved while pose, lighting, or scene changes. Quote in-image copy exactly and say where each block sits (\"the title reads 'LUMEN', top third\"); unquoted wording is treated as a theme to depict, not copy to render. When one word keeps mangling, do not rerun the design: pass the keeper in <code>referenceImages</code> and spell the word letter by letter (\"the title reads 'LUMEN', spelled L, U, M, E, N\"), changing nothing else. On Flash and Lite, <code>thinkingLevel</code> defaults to <code>HIGH</code>, the careful setting; drop to <code>MINIMAL</code> for speed on simple runs.</p>\n<h2>Price the member before the batch</h2>\n<p>The cost cliff sits between members more than between resolutions: at authoring time the same 1K edit cost about double on Flash what Lite charged, Pro's 2K default roughly doubled it again, and Lite returned in under half the time. <code>dry_run=true</code> the same parameters on two members before any batch, and re-estimate whenever <code>resolution</code>, <code>numOutputs</code>, references, or <code>useGoogleSearch</code> change.</p>\n<h2>Worked example: product restyle with locked identity</h2>\n<ol>\n<li><code>search</code> with <code>target=\"models\"</code>, <code>query=\"gemini\"</code>, <code>public=true</code>. Video and speech members surface too; pick an image member, e.g. <code>model_google-gemini-3-1-flash</code> (a live hit at authoring time: re-discover each session).</li>\n<li><code>model_schema_get</code> with that id: fields, caps, and defaults.</li>\n<li><code>upload_asset</code> the product photo and the style reference (see the <code>scenario</code> skill) to get asset ids.</li>\n<li><code>model_run</code> with that <code>model_id</code>, <code>dry_run=true</code>, and <code>parameters={\"prompt\": \"Image 1 is the product: keep its shape, label, and colors exactly. Image 2 sets the mood: warm sunset palette, soft shadows. Place the product on a marble counter in natural window light.\", \"referenceImages\": [\"asset_a\", \"asset_b\"], \"aspectRatio\": \"4:5\", \"resolution\": \"2K\", \"numOutputs\": 2}</code> for the cost estimate.</li>\n<li>Repeat <code>model_run</code> with <code>wait=false</code>, then <code>jobs_wait</code> with the returned job id, re-called with <code>pending_job_ids</code> on timeout, never a second <code>model_run</code>.</li>\n<li><code>asset_display</code> to review both variations, <code>asset_download</code> to save the pick.</li>\n</ol>\n<h2>Common mistakes</h2>\n<ul>\n<li>Passing <code>video</code> and <code>referenceImages</code> together on Flash: they are mutually exclusive.</li>\n<li>Reaching for <code>seed</code> or <code>mask</code>: neither exists on any member; describe the edit and batch <code>numOutputs</code> to pick from.</li>\n<li>Carrying fields across members: <code>resolution</code> fails on Lite, <code>thinkingLevel</code> on Pro, <code>video</code> everywhere but Flash.</li>\n<li>Keyword-tag prompts: comma lists underperform; write the sentence you would give a designer.</li>\n<li>Several references with no roles: outputs blend them; say which image is which by position.</li>\n<li>Enabling <code>useGoogleSearch</code> for stylistic work: it raises cost and earns it only on factual, real-world subjects.</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":5881,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-17T09:12:14.219919Z","sha256":"C389365BD1E9F4413B0F66796E7B18F18545358A154B1D3298432573C02A1603","sizeBytes":2811},"review":null,"source":{"repositoryUrl":"https://github.com/scenario-labs/skills","path":"skills/scenario-gemini-image","license":"MIT","commit":"dc592af7139ffacfe8fdae7dc7efa80f4dd09be3","subtreeSha":"572E8C53E7F256528C70C3CDE79BBFEB8EE7467B7B0F014AA8BA68B94BC7F58D","lastSyncedAt":"2026-10-17T09:10:46.286688Z"},"reviewedAt":"2026-10-17T09:14:23.419174Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/scenario-labs/skills/tree/main/skills/scenario-gemini-image"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install scenario-labs-skills@llmmart"},{"target":"git","command":"git clone https://github.com/scenario-labs/skills.git"}]}