assessment
Assessment: read-only inspection, codebase overview, value analysis, health checks, ADR consultation, decision analysis,…
AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk.
Claude Code
$ npx -y skills add notque/vexjoy-agent --skill image-gen --agent claude-code
Codex
$ npx skills add notque/vexjoy-agent --skill image-gen -a codex -y
Cursor
$ npx skills add notque/vexjoy-agent --skill image-gen -a cursor -y
Gemini CLI
$ npx skills add notque/vexjoy-agent --skill image-gen -a gemini-cli -y
GitHub Copilot
$ npx skills add notque/vexjoy-agent --skill image-gen -a github-copilot -y
OpenCode
$ npx skills add notque/vexjoy-agent --skill image-gen -a opencode -y
Windsurf
$ npx skills add notque/vexjoy-agent --skill image-gen -a windsurf -y
name: image-gen
description: "AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk."
agent: python-general-engineer
user-invocable: false
routing:
category: image-generation
triggers:
- generate image
- create image
- image generation
- AI image
- gemini image
- make image
- draw
- illustrate
- sprite generation
- card art
- batch generation
- series of images
- character art
- pixel art
- image post-processing
- make a picture
- create art
- generate a picture
- make art
- generate artwork
- create artwork
not_for: "HTML visualization or charts (use html-artifact), or deterministic non-AI palette/matrix pixel art (use game-asset-generator)"
pairs_with:
- python-general-engineer
- game-devBackend-agnostic image generation: single images, series with anchor-chain consistency, batch pipelines. Two backends: Gemini (API) and Nano Banana (local scripts with post-processing).
| Signal | Load | Content | |---|---|---| | Gemini backend selected | `references/backends/gemini.md` | Models, env vars, flag table, examples, error codes | | Nano Banana needed (post-processing, series, JSON batch, style-match) | `references/backends/nano-banana.md` | Subcommands, flags, aspect ratios, prompt patterns by asset type |
python3 skills/content/image-gen/scripts/detect-backend.py
**Gate**: backend confirmed.
Write all prompts to disk before any API call. Prompt files are the generation record and anchor-chain input for series.
File naming: single `prompts/YYYY-MM-DD-{slug}.md`, series `prompts/{series-name}-01.md` through `-NN.md`.
--- model: gemini-3-pro-image-preview aspect-ratio: 1:1 flags: [] --- Full prompt text. Be explicit about subject, style, background, constraints.
mkdir -p prompts
For series: write ALL prompt files before calling any generation script.
**Gate**: all prompt files written and reviewed.
| Use case | Script | Subcommand | |---|---|---| | Single image, Gemini | `scripts/generate_image.py` | `--prompt` | | Batch from text file, Gemini | `scripts/generate_image.py` | `--batch` | | Single with post-processing | `scripts/nano-banana-generate.py` | `generate` | | Style match from reference | `scripts/nano-banana-generate.py` | `with-reference` | | Batch from JSON manifest | `scripts/nano-banana-generate.py` | `batch` | | Series (anchor chain) | `scripts/nano-banana-generate.py` | `generate` then `with-reference` | | Post-processing only | `scripts/nano-banana-process.py` | `crop` / `remove-bg` / `pipeline` |
Model selection:
| Scenario | Model | |---|---| | Draft, testing, batch, cost-sensitive | `gemini-2.5-flash-image` (2-5s) | | Final asset, character art, typography | `gemini-3-pro-image-preview` (~30s) |
Aspect ratio by use case:
| Asset type | Ratio | |---|---| | Sprites, characters, icons | `1:1` | | Card art, landscape | `16:9` | | Vertical maps, portrait bg | `9:16` | | Portrait cards | `3:4` | | Wide banners | `21:9` |
Generate at the target ratio. Generating 1:1 and cropping to 16:9 loses 56% of pixels.
**Gate**: script and subcommand identified.
Use absolute paths for output files. Show full script output.
Character drift occurs when images are generated independently. Prevent it by passing the previous output as `--reference`:
image-01.png (no ref) -> image-02.png (ref=01) -> image-03.png (ref=02) -> ...
1. Generate image 1 with no reference. 2. Use output of image 1 as `--reference` for image 2. 3. Continue: each image N references image N-1.
Save originals with `--save-original` for any batch or expensive generation. Re-processing a saved original is free; re-generating costs quota and may break the chain.
**Gate**: script exits 0.
Read the generated image to verify:
If inspection fails: regenerate with adjusted prompt. Report the issue before retrying.
Report: output file path (absolute), dimensions, model, post-processing applied, verification result. Report only what was requested.
| Error | Cause | Resolution | |---|---|---| | `GEMINI_API_KEY not set` | Missing env var | `export GEMINI_API_KEY=your_key` | | `No image in response` | Safety filter or text-only response | Adjust prompt; remove policy-adjacent content | | `Missing dependency: google-genai` | Package absent | `pip install google-genai pillow` | | `Rate limit exceeded (429)` | Too many requests | Increase `--delay`; script retries automatically | | `Content policy violation (400)` | Restricted content | Rephrase using neutral language | | Model not found | Wrong model string | Use exact strings: `gemini-2.5-flash-image` or `gemini-3-pro-image-preview` |
Essays and writing behind this toolkit live at vexjoy.com. VexJoy Agent connects plain-English requests to specialist agents, skills, and workflows. /do selects the knowledge and tools needed for your task.
Assessment: read-only inspection, codebase overview, value analysis, health checks, ADR consultation, decision analysis,…
Business operations: strategy, technology, growth, competitive intelligence, support, finance, HR, legal, operations, sales,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.