skill by
@moskooRelight an existing JPG, JPEG, PNG, or WebP portrait and rebuild clean photographic skin response without changing the person. Use for realistic skin recovery, plastic-skin removal, natural fill, backlight correction, soft window light or shadows, tree shadows, bokeh, golden-hour side backlight, neon, studio soft light, low-key light beams, full-black silhouettes, or Higgsfield-Relight-like image edits.
Permissions
Files
Relight an existing JPG, JPEG, PNG, or WebP portrait and rebuild clean photographic skin response without changing the person. Use for realistic skin recovery, plastic-skin removal, natural fill, backlight correction, soft window light or shadows, tree shadows, bokeh, golden-hour side backlight, neon, studio soft light, low-key light beams, full-black silhouettes, or Higgsfield-Relight-like image edits.
Version history
Treat the input as the same photograph, not as a reference for a replacement image. Change illumination and material response while:
The requested change must be visible at normal viewing size. Do not flatten backlight, low-key light, hard light, or silhouette exposure merely to keep every detail readable.
ALL_TOOLS and prefer the exact discovered name image_gen__imagegen.const result = await tools.image_gen__imagegen({
referenced_image_paths: ["/absolute/path/source.png"],
prompt: "compact four-line English image-edit prompt"
});
generatedImage(result);
Never guess tools.image_gen or input_image. A wrong member name, argument, or TypeError is a dispatch error: correct the call from the registered signature instead of declaring the image tool unavailable. In Claude, OpenClaw, or another host, use the equivalent native image-edit action explicitly exposed by that host.
| Observed state | Required action |
|---|---|
| Compatible image tool discovered | Invoke it. A small face, dense text, complex props, or a subject touching frame edges lowers detail ambition but never blocks generation. |
| Correct image tool returns a real error | Report the actual error, enter prompt-only, and return a complete compact prompt. |
| Discovery completes with no compatible callable | Enter invocation-handoff and return a complete compact prompt. |
| Generated result is nearly unchanged, changes identity, dirties skin, or misses the lighting design | State that the result did not achieve the requested improvement, enter prompt-handoff, and recompile from the source image. |
Reading a skill, inspecting an image, creating a task, or saying that generation is starting does not count as an image-tool invocation.
Do not use Pillow, NumPy, OpenCV, ImageMagick, FFmpeg, sips, or custom raster scripts to relight, grade, retouch, sharpen, add texture, resize, crop, extend, composite, repair, or otherwise produce the delivered image. Use them only for read-only aspect-ratio, mask, and result audits. See requirements.txt.
Read the prompt compiler and the lighting recipes. Decide internally in this order:
Key → Exposure → Fill → Shadow → Subject → Background → Atmosphere
Select exactly:
one L + one S + one T + zero or one A
Use one key-light system. Any atmosphere must inherit that key's direction, color logic, and exposure. A6 is the sole override: force silhouette exposure, place the effective source behind the subject, remove fill/catchlights/internal illumination, render the entire subject interior black, use L/T only for the backlight and background, and suppress S.
Send only four lines to the image model:
EDIT: identity and structural invariants.
LIGHT: key, exposure, shadow behavior, background response, color temperature, and optional atmosphere.
SKIN: one scale-appropriate S target; replace with black interior for A6.
AVOID: the four highest-risk failure modes for this image.
40–90 English words; allow up to 120 for dense text or product scenes.Every handoff must use the same four-line structure with no placeholders.
Retain orientation, aspect ratio, composition, and subject-to-frame scale. A backend may downscale uniformly; exact pixel dimensions are not required. If a local result file exists, perform this read-only check:
python3 "$XXG_SKILL_DIR/scripts/check_aspect_ratio.py" SOURCE_IMAGE EDITED_IMAGE
Accept relative aspect-ratio drift of ≤5%. Never resize, crop, pad, or extend locally to force a pass.
After generation, read the identity and detail audit. At normal viewing size, verify:
If the result is nearly unchanged, strengthen the single key and one observable outcome. If skin becomes dirty, replace the SKIN line with clean continuous skin tone with low-contrast reflective microtexture. Never present a failed image as the final result.
references/prompt-recipes.md and references/lighting-skin-color-temperature-recipes.mdreferences/backend-and-clean-realism.mdreferences/identity-and-detail-audit.mdreferences/edit-plan-and-protection.mdPopular skills
Works with
Claude, Codex, Cursor & more