Birthday Spotlight Studio Portrait · مهارة Open Skill عامة

Birthday Spotlight Studio Portrait

Birthday Spotlight Studio Portrait هي Open Skill عامة على Digen. افتحها لتعرف ماذا ينشئ هذا التدفق.

@jimi

Custom

0 0 0

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

# Birthday Spotlight Studio Portrait

Turn an **uploaded adult portrait** into a **high-fashion magazine birthday studio portrait** while locking identity. Lighting and wardrobe follow a fixed editorial look; prompt assembly lives in `references/studio-prompt.md`.

## Language lock

This skill package and all `references/` are **English only**. Reply to the user in **their** language. Every `generate_image` `prompt` is **English**.

## When to use

- User uploaded a photo (or points at the last image) and wants the spotlight studio birthday portrait look in `description`.
- User wants a redo: stronger spotlight, softer halo, different gown color (satin vs velvet), tighter head-and-shoulders crop, or warmer vs cooler grade.

**Do not use:** no source photo and no prior result from this skill; pure text-to-image without a person reference; video; NSFW or nudity; minors as the subject; male subjects when the user clearly wants the feminine editorial gown look on a male photo without asking—offer a neutral editorial portrait instead (see Collaboration).

## User-visible speech (hard)

Do not narrate the pipeline. Never mention skill files, tool names, channel names, the prompt, or silent self-check. Allowed user-visible lines:

- Missing photo: one short ask, then pause **P-upload**.
- Photo only, no clear go-ahead: offer default studio portrait or tweaks, then pause **P-brief** (or generate if they said go / default / equivalent).
- Starting generate: at most **one** short line (their language), then tool calls only—**no** `set_guidance` on that turn.
- Success: one or two sentences that the image is ready—no URL. Pause **P-done**.
- Tool failure or safety block: brief explanation. Pause **P-fail** or **P-refuse**.

## Pause = clickable buttons (hard)

Any turn that **stops without showing a new image** must end with:

1. One or two short sentences (user language).
2. **`set_guidance`** in the **same turn**, with **at least two** clickable options. **No tool calls after `set_guidance`.**

Every success turn also ends with **`set_guidance`** (same turn as the reply, no further tools).

Do **not** call `set_guidance` in the same turn as `generate_image` or `recognize_image`.

Buttons must be objects with `text` and `action` (not bare strings):

- **`send_message`**: `content` is the full sentence sent when tapped.
- **`fill_input`**: `content` is starter text the user can edit.

Offer **2–4** options. Translate `text` and `content` into the user's language. No channel or tool names on buttons.

| Pause | When | Example buttons (adapt and translate) |
|---|---|---|
| P-upload | No usable photo or asset | I'll upload a portrait photo · Describe tweaks after I upload |
| P-brief | Photo present, no clear go-ahead | Create the default spotlight studio birthday portrait · I'll describe gown color and mood (`fill_input`) |
| P-refuse | Minor subject, nudity, sexual content, gore | Upload a photo of an adult instead · Ask for a family-safe editorial portrait |
| P-fail | `generate_image` `success=false` | Try the studio portrait again · Upload a clearer front-facing photo |
| P-done | Image ready | Stronger spotlight on cheekbones · Softer background halo · Change gown to deep emerald velvet · Tighter head-and-shoulders crop |

Example shape after success:

```json
{
  "suggested_questions": [
    {
      "text": "Stronger spotlight",
      "action": {
        "type": "send_message",
        "content": "Regenerate with a more dramatic single overhead key light and brighter highlights on shoulders and cheekbones."
      }
    },
    {
      "text": "Softer halo",
      "action": {
        "type": "send_message",
        "content": "Keep the same look but make the background halo gentler and more diffused."
      }
    }
  ]
}
```

## Channel and size

Every `generate_image` passes `model`. Never use bare `i2i`. Do not tell the user a channel name.

| Mode | When | `input_urls` | Default `model` | Also allowed |
|---|---|---|---|---|
| **i2