Fitness Transformation — Open Skill

Fitness Transformation

Fitness Transformation is a public Open Skill on Digen. Open it to see what this workflow creates.

@GG_Bone

Health

1 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4150474/2026-10-15/pbghj9r9.jpg

# Fitness Transformation

Take one uploaded photo and return a single "before -> after" fitness transformation image: the same person on both halves of one photograph, the left half in their everyday clothes in a bright neutral room, the right half in gym clothes with a visibly more muscular, toned physique in a dark gym with teal accent light.

There is no structured project state — one request is one `generate_image` call, plus retries when the user asks for changes.

## When to use

- The user uploads a photo and asks to make it "fitness", "gym version", "more muscular", "toned", "fitness transformation", "before/after", "transformation picture".
- The user uploads an already generated transformation and asks to change the gym, the outfit, the lighting, the title text, the muscle level or the crop.
- Works for real people, avatars, illustrations and fictional characters. For non-human characters keep their species, markings and silhouette; only wardrobe, physique and background change.
- Not for: video generation, multi-shot editing, or anything that is not a single re-styled image.

## Before generating

1. If no image is attached, ask for one. Never invent a subject from text alone — this skill is always image-to-image.
2. Read the attached image and note: how many people, which one is the main subject, pose, framing, hair, facial hair, glasses, skin tone, apparent age, and the clothes they are wearing. These are the identity anchors that must survive.
3. If the photo has several people, ask which one to transform (do not transform the group).
4. Defaults you do not need to ask about: portrait 9:16, single main subject, same pose and camera on both halves, split before/after layout, no title text.
5. Only ask when the user is ambiguous about: title text on/off and its wording/language; split layout vs. full-frame gym look; muscle level.

## Steps

1. Read `references/style-guide.md` once per conversation, before composing the first prompt. It holds the palette, lighting, wardrobe, background, typography and the reusable prompt template. Do not re-read it unless the user asks to restyle the look.
2. Compose the prompt with the template in the reference. Fill in a short subject description (apparent age, gender presentation, ethnicity, hair, glasses/beard, original clothing) and keep the identity-lock, seam and layout sentences as written.
3. Call the generator with the user's photo as the reference image:

   `generate_image(prompt=<composed prompt>, input_urls=[<the user's image — asset_id or uri>], model='i2i.hd', orientation='portrait', name='Fitness Transformation', entity_type='fitness_transformations')`

   - Always image-to-image: this skill only runs when there is a reference photo, so the channel is `i2i` family, never `t2i`.
   - Use `model='i2i.hd'` by default (crisper skin and muscle detail). If the call is rejected because of the channel, retry with `model='i2i'`, then `model='i2i.hd.lite'`, and only if the platform reports the channel listing is broken, call `list_models(model_type='image')` to see what is available — `list_models` is a fallback only, never the primary way to pick a channel.
   - `orientation='portrait'` is the default for this style. Change it only if the user asks for a horizontal or square version, and say so in the prompt.
   - Never pass a physical model name; never invent pixel sizes.
4. Optional title text: if the user wants the poster look, keep the quoted title in the prompt exactly as the user wrote it (default wording "Fitness Transformation", translated into the user's language if they used another one), and reserve headroom at the top of the frame. If the model garbles the letters, tell the user plainly and return a clean text-free version.
5. Iterations ("bigger arms", "darker gym", "keep my jeans on the right too"): make one more `generate_image` call, using the previous result as `input_urls` so the rest of the composition is preserved, and change only the clause the user aske