Glass Curtain Wall Portrait Edit · সর্বজনীন Open Skill

Glass Curtain Wall Portrait Edit

Glass Curtain Wall Portrait Edit Digen-এ একটি সর্বজনীন Open Skill। খুলে দেখুন এই ওয়ার্কফ্লো কী তৈরি করে।

@jimi

Custom

0 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/3325120/2026-10-13/uqf3mx9d.jpg

# Glass Curtain Wall Portrait Edit

Turn an uploaded selfie or portrait into a **photorealistic fashion editorial** on a modern glass curtain wall terrace. Lock the subject's identity from the source photo. Scene, camera, pose, and grade are defined in `references/scene-spec.md` and assembled in `references/prompt-template.md`. Read those files before every `generate_image`. No project database. Do not tell the user tool names, channel names, prompt text, or URLs.

## Language lock

This file and all of `references/` are **English only**. No Han characters. No CJK punctuation. User-visible sentences and button labels follow the user's language. Image prompts stay English.

## User-visible speech (hard)

Do not narrate the pipeline. Never mention skill files, tool names, channel names, the prompt, `entity_type`, self-check, or silent redo. Do not call `write_todos`. No numbered plan or checklist.

Allowed text only:

- No usable photo: ask for an upload, then pause `P-empty`.
- Starting a make: one short line in their language, then generate tools only. No buttons on that turn.
- Success: one or two sentences that the editorial portrait is ready. No URL. No prompt. Pause `P-done`.
- Tool `success=false`: say it did not finish. No invented URL. Pause `P-fail`.
- Refuse: one polite line. Do not generate. Pause `P-refuse`.

A generate turn may only show the making line. A pause turn is the allowed sentence plus `set_guidance` and no other tool.

## Pause = clickable buttons (hard)

Every wait and every finished run calls `set_guidance` in the same turn as the user-visible sentence. Do not stop with only a question.

- 2–4 buttons. Translate labels and `content` into the user's language.
- Short reply: `send_message`. Text they must complete: `fill_input` with `replace: true`.
- No emoji. No "type continue." No button that repeats a sexual or minor request.
- Do not call `set_guidance` on a turn that calls `recognize_image` or `generate_image`.

| Pause | When | Buttons |
|---|---|---|
| P-empty | No upload and no last successful result from this skill | I'll upload a selfie (`send_message`) · Use a sample adult look and generate (`send_message`) |
| P-fail | `generate_image` returns `success=false` | Try again (`send_message`) · I'll describe a change (`fill_input`) |
| P-refuse | Subject looks underage, or sexual / nude request | Use an adult photo instead (`send_message`) · I'll describe a different look (`fill_input`) |
| P-done | Portrait is ready | Cooler and more steel-blue (`send_message`) · Softer reflections on the glass (`send_message`) · Change outfit to minimal chic (`send_message`) · Try a closer crop (`send_message`) |

For `fill_input`, use a short template in the user's language, e.g. lines for outfit, pose, or mood change.

## Reference files

| File | When to read |
|---|---|
| `references/scene-spec.md` | Before first generate; when user asks what the look includes |
| `references/prompt-template.md` | Immediately before every `generate_image` |

Do not read both at once unless you are about to generate.

## Channel

Every `generate_image` passes `model`. No physical model name. Never say a channel to the user. **Never use bare `i2i`.** Text-only without a reference is allowed only when the user explicitly chose "sample adult look" from `P-empty`.

| Mode | When | `input_urls` | Default `model` | Also allowed |
|---|---|---|---|---|
| **i2i** | User upload or edit last success | required | **`i2i.hd.lite`** | `i2i.hd` / `i2i.hd.gpt` |
| **t2i** | User chose sample look, no photo | omit | **`t2i.hd`** | `t2i.hd.lite` / `t2i.hd.gpt` |

If the user names a model, lock it: nano banana → `i2i.hd` / `t2i.hd`; GPT image → `i2i.hd.gpt` / `t2i.hd.gpt`; lite → `*.hd.lite`. Reuse the last successful channel on edits unless they name one. On redo after rejection, `input_urls[0]` is the **image being edited** (upload or prior success), not a failed output.

## Size

Pass `orientation` and `aspect_ratio` on every `generate_im