Sandbox
@moskoo/xxg-portrait-rebuild-light

Portrait relighting skill for Claude Code and Codex

This skill turns portrait edits into a structured lighting workflow instead of a vague prompt. It separates light, exposure, skin texture, color style, capture response, and atmosphere so the agent can change the look without redrawing the person.

183 stars21 forksPythonUpdated 10d ago
Who it's for

Builders who want their agent to relight portrait photos while preserving identity and composition.

What it delivers

You can request a portrait lighting change without losing the person’s face, pose, or framing.

What it does

Director-led lighting workflow

Uses a fixed decision order for scope, key light, exposure, fill, skin, color temperature, grade, capture response, and atmosphere.

Compact prompt compiler

Builds a short edit prompt with explicit `EDIT`, `LIGHT`, `RENDER`, `SKIN`, and `AVOID` lines.

Skin texture controls

Separates clean tone, highlights, and microdetail so skin stays natural instead of plastic or overworked.

Lighting and exposure recipes

Provides named codes for soft window light, Rembrandt lighting, low-key scenes, backlight, and other portrait setups.

Capture and style profiles

Adds device and look recipes for digital, medium format, 35mm, smartphone, instant film, and disposable-camera responses.

Validation scripts

Includes Python checks for aspect ratio, edit plans, and backend gating used to keep outputs within the intended rules.

How to get it

  1. 1Personal skill
    mkdir -p ~/.codex/skills
    cp -R ./xxg-portrait-rebuild-light ~/.codex/skills/
  2. 2Shared Agent Skills directory
    mkdir -p ~/.agents/skills
    cp -R ./xxg-portrait-rebuild-light ~/.agents/skills/
  3. 3Personal install
    mkdir -p ~/.claude/skills
    cp -R ./xxg-portrait-rebuild-light ~/.claude/skills/
  4. 4Project install
    mkdir -p .claude/skills
    cp -R ./xxg-portrait-rebuild-light .claude/skills/
  5. 5Local install
    openclaw skills install ./xxg-portrait-rebuild-light \
      --as xxg-portrait-rebuild-light
  6. 6Shared install
    openclaw skills install ./xxg-portrait-rebuild-light \
      --as xxg-portrait-rebuild-light \
      --global

README

xxg-portrait-rebuild-light skill-logo

XXG Portrait Rebuild Light

MIT License Python codex Claude OpenClaw Version 2.1.0

English | 简体中文 | 日本語 | 한국어

xxg-portrait-rebuild-light is an image-edit skill for existing portraits. V2.1 separately controls physical light, exposure placement, color/style grade, capture-device response, broad skin tone, bounded reflection, and scale/focus-aware microdetail.

The skill changes the lighting without redrawing the person. It preserves identity, facial structure and proportions, natural slight asymmetry, expression, pose, camera view, and composition. It avoids plastic skin, grainy skin, dirty color variation, and fake depth made by exaggerating wrinkles.

Key features

  • Provides texture-only fidelity recovery without changing source lighting, color, focus, depth of field, or scene content.
  • Repairs plastic smoothness by separating clean broad tone, source-shaped highlights, and scale/focus-aware regional microdetail.
  • Adds seven skin-finish profiles (P0–P6) for source-matched, satin-matte, soft-daylight, editorial, direct-flash, beauty, and available-light response.
  • Adds E0–E7 exposure recipes that explicitly place highlight headroom, facial midtones, directional shadows, and black point.
  • Adds G0–G8 color/style grades and D0–D8 capture profiles for full-frame digital, medium format, 35mm negative, CCD compact, point-and-shoot flash, smartphone, instant film, and disposable-camera response.
  • Separates device response from optics: camera-style edits preserve viewpoint, perspective, crop, focal plane, and depth of field unless optical restyle is explicitly requested.
  • Repairs weak backlighting, disconnected indoor window light, flat lighting, unintended crushed shadows, and highlights with no physical source.
  • Supports soft window light, commercial soft light, Rembrandt lighting, cinematic low-key lighting, golden hour, dual-color neon, and diagonal hard light.
  • Adds at most one physically coherent atmosphere effect: window shadow, tree shadow, background bokeh, sunset flare, subtle volumetric light, or a full-black backlit subject silhouette.
  • Controls subject and background in layers: key light and exposure intent first, then fill, shadows, ambient light, and color temperature.
  • Preserves identity, facial feature size and position, expression, pose, wardrobe, background structure, and source framing.
  • Reduces the skin-detail target automatically when the face is small, without canceling the requested lighting change.
  • Uses the current agent's own image-generation or image-editing capability by default; no separate API is required.
  • If the current agent has no image-edit capability, or the edit misses the target, returns one complete compact image-edit prompt.
  • Never uses Pillow, NumPy, OpenCV, ImageMagick, or temporary filter scripts to produce the delivered image.

演示图片 演示图片 演示图片 演示图片

Core method

The skill first makes a director-style lighting decision internally:

Scope → Key L → Exposure E → Fill/Shadow → Skin S/P → Light color T → Look G → Capture D → Atmosphere A

The prompt sent to the image model uses four compact lines, adding RENDER only for a requested grade or device response. Target length is 55–110 English words:

EDIT: Choose the smallest authorized scope; retain source identity, geometry, pose, camera view, optics, framing, and every unauthorized axis.
LIGHT: One L and E with explicit highlight, midtone, shadow, black-point, background, T, and optional A behavior.
RENDER: One G palette/curve plus one D capture response. Omit for G0 + D0.
SKIN: One scale-aware S plus one light-consistent P finish.
AVOID: Only two or three source-specific failures.

The skill does not pile identity audits, object inventories, repeated negatives, and several photographic styles into one prompt. That often causes constraints to cancel each other or produces an unchanged copy.

For skin-only requests, V2.1 forces L0 + E0 + T0 + G0 + D0 + A0. Tone correction changes only E/T/G; capture-style changes only G/D and a logically required E. Relighting changes L/E/T/A. Viewpoint, perspective, crop, focal plane, and depth of field stay source-matched unless the user explicitly requests optical-restyle.

A6 forces E6 silhouette exposure, moves the effective light behind the person, removes all fill and catchlights, and renders the subject interior black. L/T and any G/D treatment affect only the rear source and background; S/P are suppressed.

Recipes

Choose only:

one L light + one E exposure + one S skin scale + one P skin finish + one T light color + one G color/style grade + one D capture response + zero or one A atmosphere

Lighting L

CodePurpose
L0Match the source; repair only flat light, unexplained crushed shadows, abnormal highlights, and harsh transitions
L1Natural backlight, highlight-priority by default; add fill only when explicitly requested
L2Soft natural window light
L3Large commercial soft light
L4Outdoor skylight
L5Indoor practical and mixed lighting
L6Hard single-point light or direct sunlight
L7Low-key diagonal narrow light beam
L8Classic editorial Rembrandt lighting
L9Cinematic low-key warm key / cool ambient light
L10Golden-hour sunset side backlight
L11Cyberpunk cyan/magenta dual-tone neon
L12Clean, even commercial soft light

Exposure E

CodePurpose
E0Preserve source highlights, midtones, shadows, and black point
E1Balanced natural exposure with clear midtones and directional shadows
E2Protect a bright source/rim and let unlit planes follow available bounce
E3Recover only blocked shadow information while controlling bright sources
E4High-key exposure with textured whites and gentle facial modeling
E5Low-key exposure with selected lit planes and a clean black point
E6Full silhouette exposure; use only with A6
E7Direct-flash subject exposure with rapid ambient falloff

Skin scale S

CodePurpose
S0Small face or wide shot; restore only clean skin tone and natural reflection
S1Default for medium shots; low-contrast microtexture with original lip and eye-area detail
S2High-resolution close-up; region-aware pores, fine vellus hair, and existing details

Skin finish P

CodePurpose
P0Preserve the exact source diffuse/specular response; default for texture-only edits
P1Natural satin-matte balance with bounded key-facing highlights
P2Soft-daylight luminous midtones and broad highlight roll-off
P3Editorial satin response with controlled T-zone highlights
P4Direct-flash response with compact separated highlights
P5Clean beauty response without porcelain uniformity
P6Available-light response with source focus falloff and no added grain or marks

Color temperature T

CodePurpose
T0Preserve the source white balance
T1Neutral natural daylight
T2Golden warm light with healthy neutral zones retained in the skin
T3Warm key light with cool background ambience
T4Cyan/magenta neon relationship
T5Cool-neutral overcast or blue-hour light without a full-frame blue wash
T6Warm tungsten practicals with distance-based color falloff
T7Mixed daylight/practical balance with believable skin and neutral objects

Color and style grade G

CodePurpose
G0Preserve the source palette and curve
G1Neutral editorial color with a restrained S-curve
G2Clean commercial color, accurate whites, bright midtones
G3Muted documentary environment with protected skin chroma
G4Warm lit skin with controlled cool background/shadow ambience
G5Pastel editorial midtones and compressed highlights
G6Tonal monochrome with separated skin, hair, clothing, and background
G7Restrained 1970s print response; grain remains opt-in
G8Clean 1990s/Y2K flash color and contrast

Capture response D

CodePurpose
D0Preserve source capture response
D1Modern full-frame digital: clean detail and smooth highlight roll-off
D2Medium-format digital: smooth tonal steps and restrained sharpening
D335mm color negative: gentle highlight compression and softer microcontrast
D4Compact CCD/digicam: direct crisp tone with modest highlight headroom
D5Point-and-shoot direct flash; pair with L6 + E7
D6Smartphone computational: broad range without HDR halos or crunchy edges
D7Instant-film tone; border and grain remain opt-in
D8Disposable-camera response; exposure defects and grain remain opt-in

Atmosphere A

CodePurpose
A0Add no atmosphere effect
A1Soft window shadow
A2Sparse natural tree shadow
A3Soft bokeh restricted to the defocused background
A4Gentle lens flare aligned with the sunset direction
A5Very subtle volumetric light with sparse dust motes
A6Force the entire backlit subject to a clean black silhouette; no face, skin, hair, or clothing detail remains visible inside

See Lighting, skin, color-temperature, and atmosphere recipes for detailed prompt clauses.

Image capabilities by agent

AgentDefault route
CodexRead the $imagegen rules, discover the actual tool in ALL_TOOLS, prefer tools.image_gen__imagegen, and pass source images through referenced_image_paths
Claude CodeUse the image-generation or image-editing capability installed or built into the current environment
OpenClawUse the imagegen skill or native image action enabled for the current agent
Other agentsUse an equivalent image-edit capability explicitly exposed by the tool registry

In Codex, the skill never guesses tools.image_gen or input_image. It returns a prompt handoff only after tool discovery confirms that no compatible image capability exists. If the real image tool fails, produces an almost unchanged image, changes identity, or dirties the skin, the skill also returns a short copy-ready prompt.

Requirements

  • An agent that supports directory-based SKILL.md skills.
  • An image-generation or image-editing capability in the current agent.
  • Python 3.9 or newer, used only for read-only aspect-ratio, mask, and region checks.
  • Pillow 9.1 or newer, used only for read-only analysis and never to create the final image.

Install the read-only script dependencies:

python3 -m pip install -r ./xxg-portrait-rebuild-light/requirements.txt

Install in Codex

Personal skill:

mkdir -p ~/.codex/skills
cp -R ./xxg-portrait-rebuild-light ~/.codex/skills/

Shared Agent Skills directory:

mkdir -p ~/.agents/skills
cp -R ./xxg-portrait-rebuild-light ~/.agents/skills/

For a project-level install, place it in .agents/skills/ at the project root. Invoke it explicitly with $xxg-portrait-rebuild-light.

Install in Claude Code

Personal install:

mkdir -p ~/.claude/skills
cp -R ./xxg-portrait-rebuild-light ~/.claude/skills/

Project install:

mkdir -p .claude/skills
cp -R ./xxg-portrait-rebuild-light .claude/skills/

Invoke it with /xxg-portrait-rebuild-light.

Install in OpenClaw

Local install:

openclaw skills install ./xxg-portrait-rebuild-light \
  --as xxg-portrait-rebuild-light

Shared install:

openclaw skills install ./xxg-portrait-rebuild-light \
  --as xxg-portrait-rebuild-light \
  --global

You can also copy the complete directory into the current agent workspace's skills/ directory or the shared ~/.openclaw/skills/ directory.

Install in other agents

Copy the complete xxg-portrait-rebuild-light/ directory into the agent's personal or project skill root. Preserve the relative structure of SKILL.md, requirements.txt, references/, scripts/, and agents/, then reload the skill list.

Usage examples

Tone and exposure correction

Use $xxg-portrait-rebuild-light to edit this portrait with L0 + E1 + S1 + P0 + T7 + G1 + D0 + A0.
Keep the existing light direction. Protect bright-area shape, place facial midtones clearly, open only blocked shadows, and retain a stable black point. Neutralize the unwanted cast while preserving skin hue, white objects, wardrobe color, viewpoint, focal plane, depth of field, and scene content.

Smartphone capture response

Use $xxg-portrait-rebuild-light to edit this portrait with L0 + E1 + S1 + P1 + T0 + G0 + D6 + A0.
Preserve the physical light and optics. Use broad usable dynamic range, neutral skin color, restrained local tone mapping, and controlled edge sharpening; keep bright sources shaped and shadows directional, without changing crop, focal plane, or depth of field.

Classic fashion editorial

Use $xxg-portrait-rebuild-light to edit this portrait with L8 + E1 + S2 + P3 + T1 + G1 + D2 + A0.
A large soft key from the upper front-side creates restrained Rembrandt lighting; subtle fill preserves the eye socket, one cheek falls into a deep soft shadow, and the eyes receive one source-consistent catchlight. Keep the skin clean and healthy with low-contrast photographic microtexture.

Cinematic low-key warm/cool

Use $xxg-portrait-rebuild-light to edit this portrait with L9 + E5 + S1 + P3 + T3 + G4 + D1 + A5.
A warm side key shapes selected illuminated planes under explicit low-key exposure with no frontal fill. Keep cool color only in the background and rim, with extremely subtle source-aligned haze; illuminated skin remains chromatically clean and facial lines are not used for sculpting.

Golden-hour backlight

Use $xxg-portrait-rebuild-light to edit this portrait with L10 + E2 + S1 + P2 + T2 + G1 + D1 + A4.
Warm sunset light from the side-rear outlines the hair and shoulders. Expose for the sunset highlights with no frontal fill; let the unlit side of the face fall naturally into a partial silhouette, allow slight bloom on lit edges, and give the background matching oblique warm light and long shadows.

Cyberpunk neon

Use $xxg-portrait-rebuild-light to edit this night portrait with L11 + E5 + S1 + P6 + T4 + G4 + D1 + A3.
Separate the cyan rim light clearly from the magenta key while preserving a natural skin-tone zone in the center of the face. Keep bokeh only in the defocused background, never over the eyes or skin.

Full-black backlit silhouette

Use $xxg-portrait-rebuild-light to edit this portrait with L10 + E6 + S1 + P0 + T2 + G0 + D0 + A6.
Place the effective light behind the person and expose for the bright background. Remove all frontal and side fill, catchlights, and internal subject illumination. Render the face, skin, hair, clothing, and body as one clean continuous black silhouette while preserving the original outer contour, proportions, pose, camera view, and composition.

Soft window light with window shadow

Use $xxg-portrait-rebuild-light to edit this indoor portrait with L2 + E1 + S1 + P2 + T1 + G0 + D0 + A1.
Soft window light from the upper-left front creates a broad, gradual left-to-right falloff; faint room fill preserves the shadow side. One low-contrast window shadow continues across the person and adjacent wall and must not look pasted on.

Portrait with tree shadows

Use $xxg-portrait-rebuild-light to edit this outdoor portrait with L4 + E1 + S1 + P2 + T1 + G0 + D0 + A2.
Broad skylight illuminates the person. Sparse tree shadows break softly across facial and clothing curvature, may cross parts of the eyes and cheeks where physically plausible, and continue into the background in the same direction with source-consistent color and smooth transitions.

Output standard

  • The target key light, light-to-shadow relationship, or atmosphere effect is immediately visible at normal viewing size.
  • The subject remains the same person; facial features are neither beautified nor made artificially symmetrical.
  • Subject, clothing, and background obey the same light sources.
  • Shadow depth, highlight roll-off, and silhouette strength follow the selected exposure intent instead of flattening the scene to keep everything visible.
  • E clearly controls highlight headroom, subject midtones, directional shadows, and black point; G/D produce one coherent palette and capture response without unauthorized optical change.
  • Source complexion remains clean and continuous, with bounded source-shaped highlights and regional detail limited by scale, focus, and illumination.
  • Grain, added marks, random color variation, global sharpening, and darker facial lines are never used to imitate realism.
  • Window shadows, tree shadows, bokeh, sunset flare, and light beams have a plausible source and landing area.
  • With A6, the complete subject interior is clean black with no facial, skin, hair, clothing, or catchlight detail; identity continuity is judged from the preserved outer contour, proportions, pose, and framing.
  • Preserve composition, orientation, aspect ratio, and the subject's share of the frame. Proportional downscaling to an image model's maximum resolution is allowed; exact source pixel dimensions are not required.

Related files

License

Licensed under the MIT License.

Files in the repo

Repository payload14 top-level entries
  • agents
  • assets
  • references
  • scripts
  • .gitignore
  • CHANGELOG.md
  • CONTRIBUTING.md
  • LICENSE
  • README.ja.md
  • README.ko.md
  • README.md
  • README.zh-CN.md
  • requirements.txt
  • SKILL.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

Vincentwei1021/
anything2explainer

Topic in, narrated explainer video out. A Claude Code / Codex skill that turns any topic into a black-canvas motion-graphics explainer video with TTS voiceover, subtitles and a chapter progress bar. Chinese or English; every frame drawn in code with Remotion.

666

Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop

86k

Agent skill for beautiful, verifiable architecture, workflow, sequence, data-flow, and lifecycle diagrams—self-contained HTML with motion and crisp export.

57k
img2threejs/
img2threejs

Rebuild the object in a reference image as a code-only, procedural, quality-gated, animation-ready Three.js model. Token-efficient image-to-3D.

16k