Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Relight a still image — change the lighting setup, color temperature, direction, or mood — on RunComfy via the `runcomfy` CLI. Routes to Qwen Edit 2509's dedicated `relight` LoRA endpoint for purpose-built relighting, with fallback to identity-preserving edit endpoints (Nano Banana 2 Edit, GPT Image 2 Edit, FLUX Kontext Pro) when prose lighting language is enough. Use for product relighting (studio softbox → window light), portrait mood shift (overcast → golden hour), or color-grade change. Trig
.claude/skills/aiskillstore-relight/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 80% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 56% | 0% |
Change how a still is lit — direction, color temperature, intensity, mood — without redoing the shot. This skill routes to Qwen Edit 2509's dedicated relight LoRA when a purpose-built relighting endpoint matters, and to identity-preserving edit endpoints when prose lighting language is enough.
runcomfy.com · Qwen Edit relight · CLI docs
bash# 1. Install (see runcomfy-cli skill for details) npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version # 2. Sign in runcomfy login # or in CI: export RUNCOMFY_TOKEN=<token> # 3. Relight runcomfy run qwen/qwen-edit-2509/lora/relight \ --input '{"image": "...", "prompt": "..."}' \ --output-dir ./out
CLI deep dive: runcomfy-cli skill.
Listed newest first.
Qwen Edit 2509 Relight LoRA — qwen/qwen-edit-2509/lora/relight (default for dedicated relighting) > Purpose-built relighting LoRA on Qwen Edit 2509. Tuned specifically for changing lighting direction, color temperature, intensity, and mood while preserving subject identity, pose, and framing. > Pick for: precise lighting control ("golden hour key light from left, soft fill from right, no rim"), brand product relighting, portrait mood shifts. > Avoid for: edits that aren't really about lighting — use generic image edit.
Nano Banana 2 Edit — google/nano-banana-2/edit > Identity-preserving edit driven by spatial / prose language. Lighting changes via prompt: "convert to golden hour with warm key light from the left". > Pick for: lighting change as part of a broader edit pass (also swapping background, adding objects). > Avoid for: relighting-only when you want maximum lighting fidelity — use Qwen Edit Relight.
GPT Image 2 Edit — openai/gpt-image-2/edit > Multi-ref edit; can reference an image with the target lighting style and apply it. > Pick for: "match the lighting of this reference photo" workflows with explicit reference images. > Avoid for: pure prose lighting description — Qwen Edit Relight wins.
FLUX Kontext Pro — blackforestlabs/flux-1-kontext/pro/edit > Single-instruction, high-preservation. Use form: "Keep everything exactly. Change the lighting to soft window light from the left, late-afternoon warm temperature." > Pick for: surgical lighting tweak on one image without affecting anything else.
Model: qwen/qwen-edit-2509/lora/relight Catalog: Qwen Edit relight · qwen-image collection
bashruncomfy run qwen/qwen-edit-2509/lora/relight \ --input '{ "image": "https://your-cdn.example/product.jpg", "prompt": "Relight as golden-hour studio: warm 3200K key light from camera-left at 45°, soft cool fill from right, no rim light, preserve product orientation and color identity." }' \ --output-dir ./out
"golden hour", "studio softbox", "overcast diffuse", "single hard spotlight", "window light", "blue hour""warm 3200K", "neutral 5500K", "cool 6500K""camera-left at 45°", "top-down", "3/4 from right", "behind subject (rim)""soft", "hard", "high-contrast", "flat""preserve subject pose, framing, and color identity" — without this the model may drift."key light from left, soft fill from right, hair rim from behind"."golden hour" / "blue hour" / "high-noon" / "overcast afternoon" all resolve to the right color temperature + softness.When Qwen Relight isn't a fit (e.g. composite edit with other changes), use Nano Banana 2 Edit:
bashruncomfy run google/nano-banana-2/edit \ --input '{ "prompt": "Keep the subject and pose exactly. Relight as soft window light from the left, late-afternoon warm color temperature. Add subtle shadow on the right side of the face.", "image_urls": ["https://your-cdn.example/portrait.jpg"] }' \ --output-dir ./out
For broader edit treatment see image-edit.
"warm window light from camera-left, soft shadow on counter, late-afternoon temperature, preserve product orientation""golden hour rim from behind, warm soft key from front-left, preserve identity"images: [source, lighting-reference] and "Apply the lighting (direction, color temperature, contrast) of image 2 to image 1. Preserve image 1's subject identity."image_urls array — same lighting prompt across the batchai-image-generation.qwen-image collection — Qwen Edit base + LoRA variants (relight, skin, others)best-image-editing-models collection| 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.
The skill picks Qwen Edit Relight LoRA for dedicated lighting work, falls back to broader edit endpoints when relight is part of a composite pass. The CLI POSTs to the Model API, polls request status, and downloads the result into --output-dir.
npm i -g @runcomfy/cli or npx -y @runcomfy/cli. Agents must not pipe an arbitrary remote install script into a shell on the user's behalf.runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600. Set RUNCOMFY_TOKEN env var in CI / containers.--input. The CLI does not shell-expand prompt content. No shell-injection surface.model-api.runcomfy.net and *.runcomfy.net / *.runcomfy.com. No telemetry.Bash(runcomfy *) only.runcomfy-cli — the underlying CLIimage-edit — full image-edit routerai-image-generation — text-to-image / image-to-image routerimage-inpainting — mask-driven region edits| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | fail→pass | 11,163 | 6,284 | -44% | 1 | 1 | 0% | 2,041 | 4,015 | +97% | 0 | 0 | — |
case-01 | fail→pass | 11,528 | 3,831 | -67% | 1 | 1 | 0% | 2,014 | 3,382 | +68% | 0 | 0 | — |
case-02 | fail→pass | 11,251 | 4,483 | -60% | 1 | 1 | 0% | 2,014 | 3,618 | +80% | 0 | 0 | — |
case-03 | fail→pass | 14,901 | 3,150 | -79% | 1 | 1 | 0% | 2,636 | 3,306 | +25% | 0 | 0 | — |
case-04 | fail→fail | 9,613 | 5,164 | -46% | 1 | 1 | 0% | 1,438 | 3,662 | +155% | 0 | 0 | — |
case-05 | fail→fail | 11,267 | 4,552 | -60% | 1 | 1 | 0% | 2,197 | 3,564 | +62% | 0 | 0 | — |
case-06 | fail→fail | 18,291 | 5,563 | -70% | 1 | 1 | 0% | 1,583 | 3,869 | +144% | 0 | 0 | — |
case-07 | fail→pass | 12,479 | 4,179 | -67% | 1 | 1 | 0% | 2,245 | 3,511 | +56% | 0 | 0 | — |
case-08 | fail→pass | 9,262 | 6,178 | -33% | 1 | 1 | 0% | 1,592 | 3,919 | +146% | 0 | 0 | — |
case-09 | fail→pass | 10,427 | 4,959 | -52% | 1 | 1 | 0% | 1,625 | 3,574 | +120% | 0 | 0 | — |
case-11 | fail→pass | 8,565 | 2,705 | -68% | 1 | 1 | 0% | 1,590 | 3,300 | +108% | 0 | 0 | — |
case-12 | fail→pass | 9,898 | 2,639 | -73% | 1 | 1 | 0% | 1,628 | 3,175 | +95% | 0 | 0 | — |
case-13 | fail→pass | 10,577 | 1,847 | -83% | 1 | 1 | 0% | 1,975 | 3,031 | +53% | 0 | 0 | — |
case-14 | fail→pass | 10,433 | 1,559 | -85% | 1 | 1 | 0% | 2,020 | 2,952 | +46% | 0 | 0 | — |
case-15 | pass→pass | 12,076 | 5,028 | -58% | 1 | 1 | 0% | 2,000 | 3,676 | +84% | 0 | 0 | — |
case-16 | pass→pass | 15,668 | 3,520 | -78% | 1 | 1 | 0% | 2,377 | 3,266 | +37% | 0 | 0 | — |
case-17 | pass→pass | 9,883 | 1,158 | -88% | 1 | 1 | 0% | 1,774 | 2,923 | +65% | 0 | 0 | — |
case-18 | fail→pass | 9,010 | 1,666 | -82% | 1 | 1 | 0% | 1,614 | 2,912 | +80% | 0 | 0 | — |
case-19 | pass→pass | 9,562 | 1,240 | -87% | 1 | 1 | 0% | 1,769 | 2,917 | +65% | 0 | 0 | — |
case-20 | fail→pass | 9,887 | 1,208 | -88% | 1 | 1 | 0% | 1,557 | 2,842 | +83% | 0 | 0 | — |
case-21 | fail→pass | 5,257 | 1,429 | -73% | 1 | 1 | 0% | 908 | 2,892 | +219% | 0 | 0 | — |
case-22 | pass→pass | 9,036 | 3,794 | -58% | 1 | 1 | 0% | 1,603 | 3,424 | +114% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +64 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.