image-edit
๐ฏSkillA Claude Code skill that acts as a smart router for image editing on RunComfy, automatically selecting the best model (Nano Banana Edit, GPT Image 2 Edit, Flux Kontext Pro, or Z-Image Turbo Inpaint) based on the user's editing intent.
Installation
npx skills add runcomfy-com/skills --skill image-editRun it in a terminal; it asks which AI coding tools to install it for (Claude Code, Codex, Cursor and more).
Uses skills.sh ยท Node.js 22.20+
After installing
Ask for related work and the agent uses it on its own, or call it yourself.
/image-editInstall by hand
Copy the whole skill folder from GitHub to the place below. Copying only SKILL.md can leave out files the skill uses.
Open the skill folder โ- This project
.claude/skills/image-edit/ - All projects
~/.claude/skills/image-edit/
These paths are for Claude Code. For other tools, the command above puts it in the right place.
What this skill does
Overview
Image Edit is a Claude Code skill that acts as an intent-based smart router for image editing on RunComfy. Rather than locking you into a single model, it analyzes the user's editing goal and automatically selects the most suitable model from four options: Nano Banana Edit for batch and general editing, GPT Image 2 Edit for multilingual text rewrites and multi-reference composition, Flux Kontext Pro for single-shot precise local edits, and Z-Image Turbo Inpaint for mask-driven region edits. The skill bundles each model's documented prompting patterns so edits land sharper on the first try.
Key Features
- Intent-based model routing: Automatically picks between four edit models (Nano Banana Edit, GPT Image 2 Edit, Flux Kontext Pro, Z-Image Turbo Inpaint) based on what the user actually wants to do
- Batch editing support: Process up to 20 images per call with Nano Banana Edit, with locked aspect ratio and resolution for series consistency
- Multilingual typography: GPT Image 2 Edit handles in-image text rewrites across Japanese kana, Cyrillic, Arabic, and other non-Latin scripts
- Mask-driven inpainting: Z-Image Turbo Inpaint supports strength-tunable region edits with grayscale masks for precise object removal or background replacement
- Built-in prompting patterns: Each route ships with documented prompt strategies (preservation-first phrasing, spatial scope labels, multi-ref numbering) for reliable results
Who is this for?
This skill is ideal for developers and creative professionals who need to edit images programmatically through Claude Code without manually choosing between different AI models. It suits teams doing batch product photography touch-ups, multilingual ad localization, precise object edits, or mask-based retouching, and want a single skill that routes to the right model automatically via the RunComfy CLI.
Summarized by AI from this skill's SKILL.md. Suggest a better one
SKILL.md
View on GitHub โEdit images on RunComfy โ this skill is a smart router that matches the user's intent to the right edit model in the RunComfy catalog. Picks Nano Banana Edit (batch up to 20, identity-preserving default), OpenAI GPT Image 2 Edit (multilingual in-image text rewrite, multi-ref composition, layout precision), Flux Kontext Pro (single-ref high-fidelity local edit), or Z-Image Turbo Inpaint (mask-driven precise region edit). Bundles each model's documented prompting patterns so the skill gets sharper edits without burning iterations on the wrong model. Calls `runcomfy run <vendor>/<model>/edit` through the local RunComfy CLI. Triggers on "image edit", "edit image", "image-to-image", "i2i", "swap background", "remove object", "rewrite headline", or any explicit ask to edit a single or batch of images.
Image Edit โ Pro Pack on RunComfy
runcomfy.com ยท Nano Banana Edit ยท GPT Image 2 Edit ยท Flux Kontext ยท Z-Image Inpaint ยท GitHub
Image edit, intent-routed. This skill doesn't lock you to one model โ it picks the right edit model in the RunComfy catalog based on what the user actually wants: batch identity-preservation, multilingual text rewrite, single-shot precise edit, or mask-driven region replacement.
npx skills add agentspace-so/runcomfy-skills --skill image-edit -g
Pick the right model for the user's intent
| User intent | Model | Why |
|---|---|---|
| Batch edit 1โ20 images consistently (SKU gallery, A/B variants) | Nano Banana Edit | Up to 20 input images per call; locked aspect/resolution for series |
| Swap background, preserve subject identity | Nano Banana Edit | Strong identity preservation under "keep X unchanged" prompts |
| Localized object removal / addition with spatial language ("the left object", "upper-right corner") | Nano Banana Edit | Honors directional spatial scope |
| Multilingual / non-Latin in-image text rewrite (Japanese kana, Cyrillic, Arabic) | GPT Image 2 Edit | Strongest in class for multilingual typography |
| Multi-reference composition (subject from img1, scene from img2, palette from img3) | GPT Image 2 Edit | Numbered refs route cues correctly |
| Layout-precise repositioning ("move headline from top-right to bottom-center") | GPT Image 2 Edit | Directional language honored at layout level |
| Identity preservation across translated headline variants | GPT Image 2 Edit | Same source asset โ many language variants, identity stable |
| Single-shot precise local edit ("she's now holding an orange umbrella") | Flux Kontext Pro | Single-ref single-instruction, high-fidelity preservation |
| Mask-driven object removal (cables, watermarks, distractions) | Z-Image Turbo Inpaint | Mask-required, strength-tunable, edge-consistent |
| Mask-driven region replacement (full background swap with mask) | Z-Image Turbo Inpaint | High strength + clean mask = clean replacement |
| Default if unspecified | Nano Banana Edit | Most flexible, supports both single and batch |
The agent reads this table, classifies the user's intent, and picks the matching subsection below.
Prerequisites
- RunComfy CLI โ
npm i -g @runcomfy/cli - RunComfy account โ
runcomfy login. - CI / containers โ set
RUNCOMFY_TOKEN=<token>.
Route 1: Nano Banana Edit โ default for general edit + batch
Model: google/nano-banana-2/edit
Schema
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
prompt | string | yes | โ | Lead with preservation goals, end with the change. |
image_urls | array | yes | โ | 1โ20 publicly-fetchable HTTPS URLs. |
number_of_images | int | no | 1 | 1โ4 outputs per call. |
aspect_ratio | enum | no | auto | auto follows input; lock for batch consistency. |
resolution | enum | no | 1K | 0.5K / 1K / 2K / 4K. |
output_format | enum | no | png | png / jpeg / webp. |
seed | int | no | โ | Reproducibility. |
enable_web_search | bool | no | false | Web-grounded edits (extra latency). |
Invoke
runcomfy run google/nano-banana-2/edit \
--input '{
"prompt": "Keep the subject identity, pose, and clothing unchanged. Convert the background into a rainy neon cyberpunk street.",
"image_urls": ["https://.../portrait.jpg"]
}' \
--output-dir <absolute/path>
Batch (lock aspect + resolution):
runcomfy run google/nano-banana-2/edit \
--input '{
"prompt": "Replace the watermark in the bottom-right with the text \"AURA\" in clean white sans-serif. Keep everything else exactly as in the input.",
"image_urls": ["https://.../sku-1.jpg", "https://.../sku-2.jpg", "https://.../sku-3.jpg"],
"aspect_ratio": "1:1",
"resolution": "1K"
}' \
--output-dir <absolute/path>
Prompting tips
- Preservation first:
"Keep [identity / pose / brand / framing] unchanged."Then state the change. - Spatial scope: "background only", "the left object", "upper-right quadrant" โ concrete locations honored.
- Batch consistency: lock
aspect_ratioandresolutionacross the batch. - Iterate small: split compound edits into multiple shorter passes.
Route 2: GPT Image 2 Edit โ multilingual text + multi-ref composition
Model: openai/gpt-image-2/edit
Schema
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
prompt | string | yes | โ | Edit instruction; lead with preservation. |
images | string[] | yes | โ | Up to 10 HTTPS URLs. First is primary; rest are auxiliary. |
size | enum | no | auto | auto, 1024_1024, 1024_1536, 1536_1024. Only these. |
Invoke
Multilingual text rewrite:
runcomfy run openai/gpt-image-2/edit \
--input '{
"prompt": "Keep the photograph, layout, and brand mark exactly as in the input. Replace only the in-image headline. The new headline reads \"ไปๆฅใฎใใใใ\" in bold Japanese kana, same position and font weight.",
"images": ["https://.../poster-en.jpg"]
}' \
--output-dir <absolute/path>
Multi-ref composition:
runcomfy run openai/gpt-image-2/edit \
--input '{
"prompt": "Compose subject from image 1 into the room from image 2. Match the lighting and color palette of image 2. Keep image 1 subject identity unchanged.",
"images": ["https://.../subject.jpg", "https://.../room.jpg"]
}' \
--output-dir <absolute/path>
Prompting tips
- Quote in-image text exactly. Name the script for non-Latin:
"Japanese kana","Cyrillic","Arabic right-to-left". - Number multi-refs:
"subject from image 1, lighting from image 2". - Directional layout language:
"move the headline from top-right to bottom-center","replace the watermark in the bottom-right". size: "auto"preserves input ratio โ recommended unless the edit changes framing.
Route 3: Flux Kontext Pro โ single-shot precise local edit
Model: blackforestlabs/flux-1-kontext/pro/edit
Schema (minimal)
| Field | Type | Required | Notes |
|---|---|---|---|
prompt | string | yes | One declarative edit instruction. |
image | string | yes | Single source image URL. |
aspect_ratio | enum | no | Pick from supported W:H values. |
seed | int | no | Reproducibility. |
Single image only โ no array. For multi-image flows, use Route 1 (Nano Banana Edit).
Invoke
runcomfy run blackforestlabs/flux-1-kontext/pro/edit \
--input '{
"prompt": "Keep the person'\''s face, pose, and clothing unchanged. Add an orange umbrella in her left hand and a slight smile.",
"image": "https://.../portrait.jpg"
}' \
--output-dir <absolute/path>
Prompting tips
- One declarative instruction. "She is now holding an orange umbrella and smiling" โ imperative, single change.
- Preservation first. Lead with
"Keep [unchanged elements]"then state the change. - Iterate small. Compound edits drift on a single pass; split into sequential passes.
Route 4: Z-Image Turbo Inpaint โ mask-driven precise region edit
Model: tongyi-mai/z-image/turbo/inpainting
Schema
| Field | Type | Required | Notes |
|---|---|---|---|
prompt | string | yes | What to fill / replace; preservation constraints for the unmasked surround. |
image | string | yes | Source image URL. |
mask_image | string | yes | Grayscale mask URL (white = inpaint, black = preserve). |
strength | float | no | 0.3โ0.6 retouching, 0.7โ1.0 full replacement. |
control_scale | float | no | 0.6โ0.9 typical. |
aspect_ratio | enum | no | W:H output ratio. |
seed | int | no | Reproducibility. |
Invoke
Object removal (low strength):
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Remove overhead cables; preserve rooflines and sky gradient; thin clean sky.",
"image": "https://.../street.jpg",
"mask_image": "https://.../cables-mask.png",
"strength": 0.5,
"control_scale": 0.8
}' \
--output-dir <absolute/path>
Region replacement (high strength):
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Replace busy backdrop with smooth light gray studio paper; mask background only.",
"image": "https://.../product.jpg",
"mask_image": "https://.../bg-mask.png",
"strength": 0.9
}' \
--output-dir <absolute/path>
Prompting tips
- A mask URL is required โ grayscale, white = inpaint region, black = preserve. Slight blur on mask edges (1โ3px) blends better than sharp binary.
- Strength by intent:
0.3โ0.5for retouching / cleanup,0.6โ0.7for object replacement with style match,0.8โ1.0for full-region replacement. - Name what stays outside the mask in the prompt:
"preserve rooflines and sky gradient","match brick pattern and mortar tone". - Spatial labels still help even though the mask defines the region:
"the left shelf","upper-right quadrant".
Limitations
- Each route inherits its model's limits. Nano Banana: 1โ20 inputs, 1โ4 outputs. GPT Image 2 Edit: up to 10 refs, 4 fixed sizes. Flux Kontext: single ref. Z-Image Inpaint: mask required.
- No multi-route blending. This skill picks one model per call.
- Brand-specific overrides โ if the user named a specific model, route to the corresponding brand skill (
gpt-image-edit,flux-kontext,nano-banana-edit) for fuller treatment.
Exit codes
| code | meaning |
|---|---|
| 0 | success |
| 64 | bad CLI args |
| 65 | bad input JSON / schema mismatch |
| 69 | upstream 5xx |
| 75 | retryable: timeout / 429 |
| 77 | not signed in or token rejected |
Full reference: docs.runcomfy.com/cli/troubleshooting.
How it works
The skill picks one of Nano Banana Edit / GPT Image 2 Edit / Flux Kontext Pro / Z-Image Turbo Inpaint based on user intent and invokes runcomfy run <model_id> with the matching JSON body. The CLI POSTs to the Model API, polls the request, fetches the result, and downloads any .runcomfy.net/.runcomfy.com URL into --output-dir. Ctrl-C cancels the remote request before exit.
Security & Privacy
- Token storage:
runcomfy loginwrites the API token to~/.config/runcomfy/token.jsonwith mode 0600 (owner-only read/write). SetRUNCOMFY_TOKENenv var to bypass the file entirely in CI / containers. - Input boundary: the user prompt is passed as a JSON string to the CLI via
--input. The CLI does NOT shell-expand the prompt; it transmits the JSON body directly to the Model API over HTTPS. No shell injection surface from prompt content. - Third-party content: image / mask / video URLs you pass are fetched by the RunComfy model server, not by the CLI on your machine. Treat external URLs as untrusted; image-based prompt injection is a known risk for any image-edit / video-edit model.
- Outbound endpoints: only
model-api.runcomfy.net(request submission) and*.runcomfy.net/*.runcomfy.com(download whitelist for generated outputs). No telemetry, no callbacks. - Generated-file size cap: the CLI aborts any single download > 2 GiB to prevent disk-fill from a malicious or runaway model output.
More from this repository10
Widens or extends a photo on RunComfy, a cloud image service, by adding matching scenery past its edges. Use it to change a picture's shape or fill in what the camera did not capture.
A skill that puts a different face or character into a photo or video with AI models on RunComfy. It picks the right model for your goal, such as a single still image or a moving clip.
Lets Claude create images from text with Flux 2 Klein, a fast image model from Black Forest Labs, on RunComfy. Use the small version for drafts in under a second and the larger one for detailed final images.
A skill that makes short videos (4 to 15 seconds) with sound from a text prompt, using the Seedance 2.0 Pro model on RunComfy. You can add reference photos, clips, and audio to keep a person or scene consistent.
A skill that removes or replaces one part of a photo, such as a watermark, a stray object, or the background. You mark the area with a black-and-white guide image, or just describe it in words.
A skill that makes music from a text description, from short jingles to full songs with lyrics. It can also redo one section of a track or make a track longer.
Makes a person's mouth in a video or photo move in time with an audio track, using AI models on RunComfy. You can dub an existing video, make a portrait talk or create a speaking video from a script.
Teaches your AI agent to use the RunComfy command-line tool to run hundreds of AI models. With one install and one sign-in, it can make images and videos, sync lips, swap faces and more.
Relight a still image on RunComfy, change lighting direction, color temperature, intensity, or mood without redoing the shot. Routes to Qwen Edit 2509's dedicated relight LoRA endpoint, with fallback to identity-preserving edit models for prose-based lighting descriptions.
A Claude Code skill for generating text-to-video with Wan-AI Wan 2.7 on RunComfy, featuring multi-reference conditioning, audio-driven lip-sync via audio_url, smoother transitions, and prompt expansion for high-quality video output.