Consistent 4 Ever (Flex) — Open Skill

Consistent 4 Ever (Flex)

Consistent 4 Ever (Flex) is a public Open Skill on Digen. Open it to see what this workflow creates.

@wwws

Auto

5 0 4

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4284863/2026-10-20/5bzz8pyb.jpg

---

allowed-tools:
  - generate_image
  - recognize_image
---

# Consistent 4 Ever (Flex)

Reproduces the "Consistent 4 Ever (Flex)" reference-image app: the user uploads reference images plus a text prompt, and the output is a single image where the uploaded subject is preserved (face, hair, identity) but the entire picture is unified into one cover-poster theme — ivory/cream subject styling, deep charcoal studio background, pastel-pink neon script lettering.

There is no structured project state. Everything needed later (chosen title text, slot mapping, palette) is kept in the conversation and in the generated canvas assets.

## When to use

- User uploads one or more images and asks to "make this into a Consistent 4 Ever image", "same face but new theme", "duo flex", "solo flex".
- User wants image 2 used as background, guide, or a second subject next to image 1.
- User wants the neon title/subtitle text changed, re-placed, or fixed.
- User asks for another variant or a different aspect ratio of an earlier output.

## Inputs and what they become

| Input | How it is used |
|---|---|
| Reference image 1 | Identity anchor. Face, facial proportions, hair, and body build must survive the restyle. Highest fidelity slot. |
| Reference image 2 (optional) | Guide / background scene, or a second subject standing beside image 1. Role must be chosen explicitly (see `references/step-details.md`). |
| Reference image 3+ (optional) | Extra subject, outfit, or prop reference. Lowest fidelity; never allowed to override slot 1 identity. |
| Text prompt | The subject content and any on-image lettering. The theme treatment is fixed and comes from `references/style-and-prompt.md`. |

Output: one image per call, delivered to the canvas.

## Steps

1. **Read the references.** Check how many images the user attached and identify what each one contains. If slot roles are ambiguous (e.g. two people) or an image is unreadable, call `recognize_image` on it first, then state the slot mapping you will use in one short line.
2. **Decide the composition mode.** Solo (one subject), Duo (two subjects), or Guide (image 2 as background scene with image 1 kept in front). Details and decision rules: `references/step-details.md`.
3. **Load the visual contract.** Call `read_skill_file` with `references/style-and-prompt.md` before writing any prompt. Never generate from memory of the theme.
4. **Build the prompt.** Fill the template from `references/style-and-prompt.md` with: the user's subject content, the exact on-image title and subtitle text (verbatim, in quotes), the identity-lock clause for slot 1, and the slot-2 role. Prompt language is English; any lettering the user wants on the image stays exactly as the user wrote it.
5. **Generate.** Call `generate_image` with:
   - `prompt` = the assembled English prompt
   - `input_urls` = `[reference 1]`, plus reference 2/3 when used — pass the asset references the conversation already has, never invented URLs
   - `model='i2i.hd.lite'`
   - `orientation` and `resolution` per the aspect table in `references/step-details.md` (default `portrait` + `1080P`)
   - `name` = short title, e.g. `consistent-4-ever-duo-flex`
   - `entity_type` = `characters` for people/character covers, `storyboard_images` for scene or concept covers
6. **Check the result** against the must-keep / must-avoid list in `references/style-and-prompt.md`. If the face drifted or the lettering is garbled, retry once following the retry rules in `references/step-details.md`.
7. **Reply** in natural language: what was kept from the reference, which mode was used, and one suggestion for a variant. Do not paste long URLs. If it is a natural moment for next actions, call `set_guidance` in the same turn.

## Notes

- Never generate without at least one reference image. If the user truly has none and asks for a text-only poster, confirm and then use `generate_image` with `model='t2i'` and no `input_urls`.
- One image per call; for N variants, make N separa