>- instruction edits, 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.
npx skills add https://github.com/guaardvark/guaardvark --skill image
Read setup first if the backend or the comfyui plugin state is unknown.
generate_imageprompt is scene, pose, lighting, setting. Plain prose. Do not paste JSON or tag soup; thedefault 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.subject_ids=[<cast id>] as its own array. Never put thetrigger word alone in the prompt and expect the LoRA to load. Find ids with
GET /api/cast-library (see the cast skill).
/api/outputs/generated_images/<file>.png, relative to thebackend), 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.
wait_for_result defaults to false there) andreturns 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.
and act on it; inspect_gpu and GET /api/plugins/status are the two checks that resolve most.
edit_imageinstruction is the change ("put a cowboy hat on him", "make the shirt red"). The image theuser just attached is used automatically; otherwise pass image as a path or URL.
model auto uses FLUX.1 Kontext when installed, else img2img on the current model.generate_image, not this.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 theserver answers 400 "Too many prompts", split the list.
adapters (user LoRAs from the models skill) and subject_ids (Cast Library).data.batch_id (ImageBatch_<date>_<n>). PollGET $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.
POST /api/batch-image/enhance-prompt, /analyze-prompt, /expand-concept (JSONbody with the prompt) when the user wants prompt help before spending GPU time.
because the orchestrator swaps models. That is normal.
Take guaardvark/image from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.