AI Image Generation and Editing
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.
Generates and edits images with Google's Nano Banana 2 (Gemini 3.1 Flash Image) through a uv script, with a draft-then-final workflow and sizes from 512 to 4K.
$ npx skills add steipete/agent-scripts --skill nano-banana-pro -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install steipete/agent-scripts nano-banana-pro --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/steipete/agent-scripts.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nano-banana-pro .claude/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .claude/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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/steipete/agent-scripts/tree/main/skills/nano-banana-proType 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 steipete/agent-scripts --skill nano-banana-pro -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install steipete/agent-scripts nano-banana-pro --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/steipete/agent-scripts.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/nano-banana-pro .agents/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .agents/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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 steipete/agent-scripts --skill nano-banana-pro -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install steipete/agent-scripts nano-banana-pro --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/steipete/agent-scripts.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/nano-banana-pro .cursor/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .cursor/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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/steipete/agent-scripts.git --path skills/nano-banana-pro--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 steipete/agent-scripts --skill nano-banana-pro -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install steipete/agent-scripts nano-banana-pro --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/steipete/agent-scripts.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/nano-banana-pro .gemini/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .gemini/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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 steipete/agent-scripts nano-banana-proInstalls 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 steipete/agent-scripts --skill nano-banana-pro -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/steipete/agent-scripts.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/nano-banana-pro .github/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .github/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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 steipete/agent-scripts --skill nano-banana-pro -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install steipete/agent-scripts nano-banana-pro --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/steipete/agent-scripts.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/nano-banana-pro .opencode/skills/nano-banana-pro && 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-pro" agent skill from https://github.com/steipete/agent-scripts/tree/main/skills/nano-banana-pro into .opencode/skills/nano-banana-pro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nano-banana-pro", 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-proGenerates and edits images with Google's Nano Banana 2 (Gemini 3.1 Flash Image) through a uv script, with a draft-then-final workflow and sizes from 512 to 4K.
The skill wraps scripts/generate_image.py, run with uv from your own working directory so output lands where you work. You pass a prompt and an output filename, optionally a resolution of 512, 1K, 2K or 4K, and for edits an input image path. It maps phrases such as thumbnail to 512, no mention of size to 1K, normal to 2K and high-res to 4K.
The default workflow is draft, iterate, final: render at 1K for quick feedback, change the prompt in small steps with a new filename each run (keeping the same input image when editing), and render at 4K only once the prompt is settled. The API key comes from the --api-key argument or the GEMINI_API_KEY variable, and the script exits with an error if neither exists. A preflight list checks that uv is installed, the key is set and the input file exists. The excerpt is cut off in the failures section.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c6b28a2. 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.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvpython3From 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 these keys or tokens, usually read from environment variables:
GEMINI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Nano Banana Image Generation loads about 1.5k tokens when it runs. Until then it costs about 22 tokens; SKILL.md has 661 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); the scripts in this folder are not scanned.
The full file from steipete/agent-scripts at commit c6b28a2, republished under its MIT licence (© steipete). 661 words, ~1,528 tokens.
.claude/skills/nano-banana-pro/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Generate new images or edit existing ones using Google's Nano Banana 2 API (Gemini 3.1 Flash Image).
Run the script using absolute path (do NOT cd to skill directory first):
Generate new image:
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "your image description" --filename "output-name.png" [--resolution 512|1K|2K|4K] [--api-key KEY]Edit existing image:
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "editing instructions" --filename "output-name.png" --input-image "path/to/input.png" [--resolution 512|1K|2K|4K] [--api-key KEY]Important: Always run from the user's current working directory so images are saved where the user is working, not in the skill directory.
Goal: fast iteration without burning time on 4K until the prompt is correct.
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<draft prompt>" --filename "yyyy-mm-dd-hh-mm-ss-draft.png" --resolution 1K--input-image for every iteration until you’re happy.uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<final prompt>" --filename "yyyy-mm-dd-hh-mm-ss-final.png" --resolution 4KThe Gemini 3.1 Flash Image API supports these output size values:
Map user requests to API parameters:
5121K1K2K4KThe script checks for API key in this order:
--api-key argument (use if user provided key in chat)GEMINI_API_KEY environment variableIf neither is available, the script exits with an error message.
Preflight:
command -v uv (must exist)test -n \"$GEMINI_API_KEY\" (or pass --api-key)test -f \"path/to/input.png\"Common failures:
Error: No API key provided. → set GEMINI_API_KEY or pass --api-keyError loading input image: → wrong path / unreadable file; verify --input-image points to a real imageGenerate filenames with the pattern: yyyy-mm-dd-hh-mm-ss-name.png
Format: {timestamp}-{descriptive-name}.png
yyyy-mm-dd-hh-mm-ss (24-hour format)x9k2, a7b3)Examples:
2025-11-23-14-23-05-japanese-garden.png2025-11-23-15-30-12-sunset-mountains.png2025-11-23-16-45-33-robot.png2025-11-23-17-12-48-x9k2.pngWhen the user wants to modify an existing image:
--input-image parameter with the path to the imageFor generation: Pass user's image description as-is to --prompt. Only rework if clearly insufficient.
For editing: Pass editing instructions in --prompt (e.g., "add a rainbow in the sky", "make it look like a watercolor painting")
Preserve user's creative intent in both cases.
Use templates when the user is vague or when edits must be precise.
Generation template:
<subject>. Style: <style>. Composition: <camera/shot>. Lighting: <lighting>. Background: <background>. Color palette: <palette>. Avoid: <list>.”Editing template (preserve everything else):
<single change>. Keep identical: subject, composition/crop, pose, lighting, color palette, background, text, and overall style. Do not add new objects. If text exists, keep it unchanged.”Offline output-safety regression tests (Pillow required): python3 -m unittest discover -s skills/nano-banana-pro/scripts -p 'test_*.py' from the repository root.
Generate new image:
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "A serene Japanese garden with cherry blossoms" --filename "2025-11-23-14-23-05-japanese-garden.png" --resolution 4KEdit existing image:
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "make the sky more dramatic with storm clouds" --filename "2025-11-23-14-25-30-dramatic-sky.png" --input-image "original-photo.jpg" --resolution 2K© steipete, 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 2 other files (scripts) in skills/nano-banana-pro of steipete/agent-scripts.
Open the folder on GitHubat commit c6b28a2
Nano Banana Image Generation 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 Image Generation this skillsteipete/agent-scripts | 7.3k | — | ~1.5k | Automated safety check: Pass | MIT | |
| AI Image Generation and Editingzhayujie/CowAgent | 47k | — | ~1.3k | Automated safety check: Pass | MIT | |
| BlockRun Image GenerationBlockRunAI/ClawRouter | 6.6k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Antigravity Gemini ImageuluckyXH/OpenMOSS | 1.3k | — | ~730 | Automated safety check: Notes | MIT | |
| FigureMuuuun/luxas | 1.2k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Gemini Image Generatordair-ai/dair-academy-plugins | 614 | 2 repos | ~3.5k | Automated safety check: Notes | MIT |
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.
BlockRunAI/ClawRouter
Generates or edits images through ClawRouter's local image API, with a choice of models and sizes and payment handled automatically through x402.
uluckyXH/OpenMOSS
Generate or edit images using the Antigravity-hosted Gemini image model via the local gateway.
Muuuun/luxas
Hybrid figure pipeline (Nano Banana raster + rembg background removal + TikZ vector assembly).
dair-ai/dair-academy-plugins
Generates and edits images with Google's Gemini Nano Banana Pro model through the Gemini API, including photo edits and multi-image composition.
ReScienceLab/opc-skills
Generate and edit images using Google Gemini 3 Pro Image (Nano Banana Pro).
steipete/agent-scripts
Inventories and maintains a fleet of Macs from a desired-state file: package updates, repo and Xcode sync, and disk, backup and security health reports.
steipete/agent-scripts
Finds a coding agent's session log, trims and redacts it, and inserts it into a GitHub PR or issue only when the user has asked for a transcript.
steipete/agent-scripts
Uses a clean Parallels macOS VM to test GUI automation, TCC permission prompts and screenshot tools like Peekaboo, verifying results from outside the guest.
steipete/agent-scripts
Reports ClawSweeper's status with a bundled script: workflow health, active workers, queue health and recently merged, reviewed, commented and closed items.
steipete/agent-scripts
Produces maintainer-facing triage cards for a project's GitHub issues and pull requests, each with its URL, risk, test state, blockers and a next action.
steipete/agent-scripts
Handles npm registry tasks such as whoami checks, package name availability, name reservation and publishing, with credentials pulled from 1Password.
Works with
Categories
Generates and edits images with Google's Nano Banana 2 (Gemini 3.1 Flash Image) through a uv script, with a draft-then-final workflow and sizes from 512 to 4K. py, run with uv from your own working directory so output lands where you work. You pass a prompt and an output filename, optionally a resolution of 512, 1K, 2K or 4K, and for edits an input image path.
Nano Banana Image Generation fits situations like: generating an image from a text description with the Gemini image model; editing an existing image from written instructions; iterating on a prompt at low resolution before a final render; producing a high-resolution final image once the prompt is locked.
Run `npx skills add steipete/agent-scripts --skill nano-banana-pro -a claude-code`. Or copy the skill folder (skills/nano-banana-pro in steipete/agent-scripts) into .claude/skills/nano-banana-pro in your project. Claude Code loads it when a task matches its description.
Run `npx skills add steipete/agent-scripts --skill nano-banana-pro -a codex`. Or copy the skill folder (skills/nano-banana-pro in steipete/agent-scripts) into .agents/skills/nano-banana-pro 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 steipete/agent-scripts --skill nano-banana-pro -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-pro, .gemini/skills/nano-banana-pro, .github/skills/nano-banana-pro and .opencode/skills/nano-banana-pro in your project.
Going by SKILL.md and its folder, Nano Banana Image Generation needs Python for the scripts in its folder, the command-line tools its instructions call (uv and python3) and credentials named GEMINI_API_KEY. Our summary lists: `uv` installed; A Gemini API key in GEMINI_API_KEY or passed with --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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Nano Banana Image Generation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Nano Banana Image Generation: AI Image Generation and Editing (zhayujie/CowAgent, 47k stars), BlockRun Image Generation (BlockRunAI/ClawRouter, 6.6k stars), Antigravity Gemini Image (uluckyXH/OpenMOSS, 1.3k stars) and Figure (Muuuun/luxas, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
steipete (a GitHub user) maintains it in steipete/agent-scripts, which has 7,333 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on October 10, 2026.
Source: steipete/agent-scripts on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.