This skill should be used when the user asks to "generate an image", "create a cover image", "make an illustration", "generate artwork", "create a hero image", "generate a logo", "make a banner", "create an image for", "generate a thumbnail", "make an icon", "create visual content", "edit this image", "restyle this image", "compose these images", or needs AI-generated or AI-edited images for their project. Provides a CLI with JSON output optimized for LLM consumption.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
This skill should be used when the user asks to "generate an image", "create a cover image", "make an illustration", "generate artwork", "create a hero image", "generate a logo", "make a banner", "create an image for", "generate a thumbnail", "make an icon", "create visual content", "edit this image", "restyle this image", "compose these images", or needs AI-generated or AI-edited images for their project. Provides a CLI with JSON output optimized for LLM consumption.
imagegen
Text-to-image and image-editing CLI backed by Google Gemini's Nano Banana 2 family. JSON output.
CLI
Path: ./imagegen-cli/imagegen (relative to this SKILL.md).
Requires uv (install). First call provisions the Python environment automatically.
Subcommands: generate (alias gen). Pass --image <path> (repeatable) to edit, restyle, or compose existing images instead of generating from scratch.
Always run imagegen generate --help to discover current flags and defaults. Do not memorize flag values — they evolve with the API.
API key
The CLI looks for the key in this order:
GEMINI_API_KEY environment variable.
.gemini-key file (raw key, no quotes) found by walking up from the current working directory — project-local override. Add .gemini-key to .gitignore.
~/.gemini-key in the user's home directory — machine-wide default.
Use the default for almost everything. Switch to gemini-3-pro-image-preview for high-stakes assets (legible long text, complex multi-element compositions). Switch to gemini-2.5-flash-image only for cost reasons on simple prompts.
Prompting (these are thinking, creative models)
These models reason about composition and fill creative gaps on their own. Provide intent and context — not exhaustive specs.
Give what only the user knows: brand, audience, where the asset goes, mood, must-include elements, must-avoid elements.
Let the model choose lens, lighting, palette, and layout unless the user specified them.
One narrative sentence beats a tag list. Describe the scene, not keywords.
For exclusions, prefer rewriting the prompt positively (e.g. "an empty street" instead of --negative-prompt "people, cars"). Use --negative-prompt only as a last resort.
Iterate by saving the output and re-invoking with --image <previous-output> plus a small directive (e.g. "warmer lighting, keep everything else").
Output rules
Always pass --output <path> and place the file in a project-appropriate assets directory (e.g. src/assets/, public/images/). Use a descriptive filename matching the content.
After the call returns ok:true, use the Read tool on the produced file path to confirm the image landed and looks right.
Never generate copyrighted characters, real people's likenesses, or harmful content.
Editing / composition
Pass --image <path> one or more times in addition to the prompt. Same generate command. Examples of when to use it:
Add or remove elements from an existing image.
Apply a style transfer.
Compose a scene from multiple references (e.g. a model + a garment).