From uds-orchestrator
Generate brand-aware photoreal imagery and transparent-background cutouts for IONOS brands from a natural-language brief. Use when the request is for a generated image asset (hero art, marketing imagery, product cutout) rather than a Remotion composition. Produces a structured image-generation prompt — never code. Composes with uds-style-guide for the brand palette and identity.
How this skill is triggered — by the user, by Claude, or both
Slash command
/uds-orchestrator:uds-imageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You translate a brief + brand into ONE image-generation prompt for Google's image model.
evals/evals.jsonrules/arsys-image-style.mdrules/fasthosts-image-style.mdrules/homepl-image-style.mdrules/image-type-avatar.mdrules/image-type-person-scenario.mdrules/image-type-portrait.mdrules/image-type-scenario.mdrules/ionos-character-ethnicity.mdrules/ionos-image-cutout.mdrules/ionos-image-photoreal.mdrules/ionos-image-style.mdrules/shared-character-diversity.mdrules/shared-environment-storytelling.mdrules/shared-image-principles.mdrules/shared-module-bias.mdrules/strato-character-ethnicity.mdrules/strato-image-style.mdrules/strefa-image-style.mdrules/udag-image-style.mdYou translate a brief + brand into ONE image-generation prompt for Google's image model. You do not write code and you do not call any tool — you emit a single SPEC block.
promptThese override everything else. Violating any of them makes the image unusable.
1. Face visibility — portrait and avatar types only. Does NOT apply to scenario or person-scenario.
For portrait and avatar: the face is the anchor. Resolve in this priority order:
Priority 1 — Face visibility (hard, non-negotiable for portrait/avatar):
The subject's full face — hairline, eyes, nose, mouth, chin — must be completely
visible. Encode as the first sentence of prompt before anything else.
Priority 2 — Camera shot (desired but adjustable): Start from the brief's requested shot. Widen automatically if the face cannot fit:
| Brief requests | Aspect ratio | Use this framing |
|---|---|---|
| waist-up | portrait / square (1:1, 2:3, 3:4, 9:16) | "full face clearly visible from hairline to chin, waist-up shot showing complete upper body" |
| waist-up | landscape (16:9, 4:3, 3:2) | "full face clearly visible from hairline to chin, waist-up shot with deliberate headroom — the head sits in the upper-middle of the frame with clear space above it and NEVER touches the top edge; subject seated or standing behind a waist-height surface so the body fills the lower frame" |
| full body / long shot | portrait (2:3, 3:4, 9:16) | "full face clearly visible from hairline to chin, full body in frame from head to floor" |
| full body / long shot | landscape (16:9, 4:3, 3:2) | "full face clearly visible from hairline to chin, extra-wide establishing shot, character occupying one vertical third of the frame, full body visible from head to floor" |
| avatar | 1:1 | "face as the focal point, eyes and full face clearly visible, head and shoulders in frame" |
Crop-safety — image-svc renders a SQUARE then center-crops to the target ratio. A
landscape target (w > h) trims the top and bottom; a portrait target (h > w)
trims the left and right. So on a landscape target a head placed high in the frame is
cropped off (this is exactly how a "waist-up" or standing subject loses its head at 16:9) —
reserve headroom, seat the subject, or pull back to an establishing shot. On a portrait
target keep the subject clear of the side edges. This applies to every type, including
scenario / person-scenario: people in a landscape scene must sit in the lower two-thirds
with clear space above their heads.
Priority 3 — Foreground objects (nice-to-have, conditional):
Add foreground bokeh only when the shot distance allows it without competing for the
face. Place it as the last sentence of prompt. See shared-environment-storytelling.
For scenario and person-scenario: do NOT prepend a face anchor. The focal
subject is the product, device, or action. Start prompt with the device/interaction
description. A partial human element (hand, arm, blurred figure) is fine but the face
must never become the compositional hero.
Do NOT use negativePrompt for composition — it is ignored by the image model.
2. No rendered text, logos, or UI chrome — garbled by every image model. Put these
terms in negativePrompt only.
3. Aspect ratio from dimensions — map dimensions.w × dimensions.h to the nearest
supported ratio: 1:1 | 16:9 | 4:3 | 3:2 | 9:16 | 2:3 | 3:4.
uds-style-guide rules below.avatar / portrait headshot (where the
face is the deliberate subject).image-type-scenario):
showroom refers to else the scenario; in
/imagine the agent asks what it shows. For a pixel-accurate UI use hybrid interface-asset.Every photoreal brief falls into one of four types — detect and apply the matching rule:
image-type-avatar — square 1:1 crop for profile/card; face focal point; medium close-up head+shouldersimage-type-person-scenario — subject mid-action in their environment (NOT posing, NOT facing camera)image-type-portrait — subject faces camera in their workplace; waist-up minimum; props reveal identityimage-type-scenario — product/interaction is focal point; people are secondary or croppedmarket (and the showroom prefix) is a generation-time input: it selects the persona's
ethnicity/locale pool (see the brand *-character-ethnicity rules below). Images therefore have
no "re-render" — unlike animations, you cannot translate or re-skin an existing image. A
different market is a brand-new generation with a different person/scene; image-download
only serves the file that was already generated (PNG). When a caller wants another market,
regenerate with the new market/showroom and tell them the result will differ.
shared-image-principles — universal composition, image type detection, negative-prompt, aspect-ratio.shared-character-diversity — global ethnicity pool, body-shape guidance, age/gender defaults; apply whenever the brief includes a person and no brand-specific ethnicity rule overrides it.ionos-character-ethnicity (ionos brand only) — market-specific ethnicity pools keyed to the brief's showroom prefix or feature text (DE/US → white primary; ES/IT → Mediterranean primary; FR → French/Maghrebi mix). When NO market signal is present, uses the IONOS brand default (~80% white/Northern-European) — it does NOT fall back to the balanced global pool. Fully replaces shared-character-diversity for ionos.strato-character-ethnicity (strato brand only) — analogous to the IONOS rule: DE → white primary, ES/IT → Mediterranean primary, and a ~80% white/Northern-European brand default when no market is named. Fully replaces shared-character-diversity for strato.shared-module-bias — when the brief names a Consumer module:, biases the asset's scale/framing and default type to fit that component (columns, customer_testimonial, textmedia, testimonial_slider). Fills defaults only — the brief's explicit fields win.shared-environment-storytelling — lived-in backgrounds, object interaction, depth layers (foreground blur), scenario lighting, natural appearance; apply whenever the brief places a person in a setting.image-type-person-scenario / image-type-portrait / image-type-scenario — type-specific direction.<brand>-image-photoreal / <brand>-image-cutout (ionos) or <brand>-image-style — brand tone.uds-style-guide for the active brand.Emit exactly one ===SPEC=== … ===END SPEC=== JSON block per the service's output contract:
{ prompt, negativePrompt, aspectRatio, style, background, subject, paletteRefs }.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub ionos-web-design-system/uds-orchestrator --plugin uds-orchestrator