Skip to content
Back to skills

Image Gen

ASecurity

AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk.

  • 425 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
ai-agentspythongobashtestingapibackend

Works with

  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 9 files and shows the line behind each finding

Scanned September 21, 2026

npx -y skills add notque/vexjoy-agent --skill image-gen --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Image Gen?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Image Gen
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/notque-image-gen/badge)](https://www.skillsdirectory.com/skills/notque-image-gen)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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-dev
---

# image-gen

Backend-agnostic image generation: single images, series with anchor-chain consistency, batch pipelines. Two backends: Gemini (API) and Nano Banana (local scripts with post-processing).

## Deep References

| 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 |

## Phase 1: Detect Backend

```bash
python3 skills/content/image-gen/scripts/detect-backend.py
```

- `gemini` -- load `references/backends/gemini.md`
- `ask` -- no key found; ask the user to set `GEMINI_API_KEY`

**Gate**: backend confirmed.

## Phase 2: Write Prompt Files

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`.

```markdown
---
model: gemini-3-pro-image-preview
aspect-ratio: 1:1
flags: []
---

Full prompt text. Be explicit about subject, style, background, constraints.
```

```bash
mkdir -p prompts
```

For series: write ALL prompt files before calling any generation script.

**Gate**: all prompt files written and reviewed.

## Phase 3: Select Script

| 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.

## Phase 4: Generate

Use absolute paths for output files. Show full script output.

### Anchor-Chain Algorithm (Series)

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.

## Phase 5: Verify and Report

Read the generated image to verify:
- Subject matches prompt
- No unwanted watermarks or artifacts
- Aspect ratio and framing correct
- No excessive padding or dark borders

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 Handling

| 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` |

Files in this skill

  • SKILL.md5.9 KB
  • references/backend-selection.md3.2 KB
  • references/backends/gemini.md4.3 KB
  • references/backends/nano-banana.md6.2 KB
  • references/series-consistency.md3.2 KB
  • scripts/detect-backend.py532 B
  • scripts/generate_image.py12.2 KB
  • scripts/nano-banana-generate.py12.7 KB
  • scripts/nano-banana-process.py16.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.