Skip to content
Back to skills

Image

ASecurity

Generate or edit images on the user's own GPU through Guaardvark: single images, instruction edits, background cut-outs, inpaint and outpaint, consistent characters from the Cast Library, and batch runs of many prompts. Use when the user asks to create, draw, render, visualize, edit, or batch-generate images locally.

  • 245 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 19, 2026
ai-agentsgobashnodegitapibackend

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 30, 2026

npx -y skills add guaardvark/guaardvark --skill image --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Image?

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

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

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
description: >-
  Generate or edit images on the user's own GPU through Guaardvark: single images,
  instruction edits, background cut-outs, inpaint and outpaint, consistent
  characters from the Cast Library, and batch runs of many prompts. Use when the user asks to create, draw, render, visualize, edit,
  or batch-generate images locally.
---

# Images with Guaardvark

Read `setup` first if the backend or the `comfyui` plugin state is unknown.

## One image: MCP `generate_image`

- `prompt` is scene, pose, lighting, setting. Plain prose. Do not paste JSON or tag soup; the
  default model (Z-Image Turbo) reads prompts as language, and SD-era tag lists hurt it.
- `model` default `auto` picks the best downloaded model. Only override when the user names one:
  `zimage-turbo`, `krea2-turbo`, `krea2-raw`, `flux-dev`, `sd-xl`, `sdxl-turbo`,
  `realistic-vision`, `epic-realism`.
- `width` / `height`: 512, 768 or 1024. `style`: realistic, artistic, anime, photographic, digital-art.
- **Consistent character**: pass `subject_ids=[<cast id>]` as its own array. Never put the
  trigger word alone in the prompt and expect the LoRA to load. Find ids with
  `GET /api/cast-library` (see the cast skill).
- On-image text: quote the exact words in double quotes inside the prompt.
- The tool returns the image URL (`/api/outputs/generated_images/<file>.png`, relative to the
  backend), the model that ran, steps, seed and whether a Cast LoRA was applied. Show the URL
  and the prompt you used. Measured: 768x768 on Z-Image Turbo in ~20 s on a free 16 GB card.
- **Over MCP the call queues by default** (`wait_for_result` defaults to false there) and
  returns `Image queued as batch ImageBatch_...` at once. Poll
  `get_generation_status(batch_id=...)` every few seconds until `completed`; it returns the
  file URL. Pass `wait_for_result: true` to block for the render instead (allowed up to 30
  minutes). A call that exceeds the server's timeout answers with an error that says the
  render is still running; it is not lost.
- A failed call carries the backend's reason (plugin off, out of memory, bad model). Read it
  and act on it; `inspect_gpu` and `GET /api/plugins/status` are the two checks that resolve most.

## Photo edits over MCP run as jobs

`edit_image`, `inpaint_image`, `outpaint_image` and `remove_background` answer at once over
MCP with `... queued as job tooljob_...`: the work runs in the Guaardvark backend and keeps
going if the client disconnects. Poll `get_generation_status(batch_id="tooljob_...")` every few
seconds until `done` (it gives the file URL) or `failed` (it gives the error). Pass
`wait_for_result: true` to wait up to 60 s (half the server's MCP timeout when that is
shorter) for the result; a longer edit still comes back as the job id. A Qwen-Image-Edit takes
about three minutes on a 16 GB card, and a job waits its turn while another render holds the GPU.

## Edit an existing image: MCP `edit_image`

- `instruction` is the change ("put a cowboy hat on him", "make the shirt red"). The image the
  user just attached is used automatically; otherwise pass `image` as a path or URL.
  Optional `reference_image_2` / `reference_image_3` (Qwen-Image-Edit only) for extra people or
  style; the call is refused when a reference cannot be read or the edit would run on another backend.
- `model` `auto` uses **Qwen-Image-Edit** when installed, else FLUX.1 Kontext. With neither
  installed the call is refused and names the pack; relay that instead of retrying.
  Override with `qwen-image-edit` or `kontext`. Install those packs from Manage Image Models →
  Image editing (`qwen-image-edit`, `flux-kontext-dev`) — do not Install unless the user asked.
  Naming another downloaded image model runs a light img2img pass that keeps most of the picture.
- Same canvas, same pose. For a brand-new picture use `generate_image`. For a **new scene
  that keeps a face** use `generate_identity`.

## New scene from a face: MCP `generate_identity` (off by default)

- Not exposed unless the server runs with `GUAARDVARK_IDENTITY_TOOL=1`: the likeness it keeps
  has not passed verification yet. If the tool is absent, say so and offer `edit_image` instead.
- Attach a likeness the user has the right to use (their photo or a Cast subject they uploaded).
  `consented` must be `true`. Refuse if they have not confirmed that.
- `prompt` is the new scene. Needs the PuLID identity pack (`pulid-flux`; Manage Image Models →
  Image editing installs it with its face files, EVA02-CLIP and `flux-dev`). Comfy must have
  been restarted after the PuLID-Flux custom node was added.
- This is not a face swap onto an existing poster, and not an instruction edit of the same photo.

## Background remove: MCP `remove_background`

- Cuts the subject out of the attached photo (transparent PNG). ONNX matting, no diffusion;
  needs a background-removal model from Manage Image Models → Image editing.
- For a new background, remove first then `edit_image` / `generate_identity`, or describe the
  new scene in `edit_image` if Qwen-Image-Edit is installed.

## Inpaint / outpaint

- `inpaint_image`: change or remove something ("remove the coffee cup"). Runs on Qwen-Image-Edit
  or FLUX.1 Kontext; refused when neither is installed.
- `outpaint_image`: extend the canvas (`left`/`right`/`top`/`bottom` pixels) and fill. Prefers Qwen.

## Many images: REST batch

```bash
B=${GUAARDVARK_URL:-http://localhost:5000}
curl -s -X POST $B/api/batch-image/generate/prompts -H 'Content-Type: application/json' -d '{
  "prompts": ["prompt one", "prompt two"],
  "model": "auto",
  "subject_ids": []
}'
```
- `prompts` may be strings or `{"prompt": "..."}` objects. There is a per-batch maximum; if the
  server answers 400 "Too many prompts", split the list.
- Optional `adapters` (user LoRAs from the models skill) and `subject_ids` (Cast Library).
- The response is `data.batch_id` (`ImageBatch_<date>_<n>`). Poll
  `GET $B/api/batch-image/status/<batch_id>?include_results=true`: `status` goes
  running → completed, with `completed_images` / `total_images`, `output_dir`, and one
  `results[]` entry per prompt (`success`, `image_path`, `thumbnail_path`, `generation_time`,
  `metadata.model_used`). A contact sheet: `GET $B/api/batch-image/preview/<batch_id>`; one file:
  `GET $B/api/batch-image/image/<batch_id>/<image_name>` (the basename of `image_path`).
  Cancel with `POST $B/api/batch-image/cancel/<batch_id>`. Measured: one 1024x1024 prompt
  completed in ~30 s.
- Helpers: `POST /api/batch-image/enhance-prompt`, `/analyze-prompt`, `/expand-concept` (JSON
  body with the prompt) when the user wants prompt help before spending GPU time.

## Rules

- Say which model actually ran (the response names it). Do not promise a model that is not installed.
- Generation time depends on the GPU; a first image after Ollama held the card can take longer
  because the orchestrator swaps models. That is normal.
- Never upload the user's images anywhere. Everything here is local.

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.