---
name: mucha-style-image
description: 'Generate or edit images in an Alphonse Mucha inspired Art Nouveau style with GPT Image 2. Use when the user asks for 穆夏风格, 阿尔丰斯·穆夏风格, Mucha style, Art Nouveau poster imagery, ornate decorative portraits, or elegant floral illustration outputs.'
metadata:
  icon: ':game-icons:art-nouveau:'
  title: Mucha Style Image
  packageName: '@alwaysmavs/mucha-style-image'
  version: 0.0.1
---

# Mucha Style Image

Use this skill when the user wants a new image, image edit, reference-guided
image, poster, portrait, product visual, or illustration to be rendered in an
Alphonse Mucha inspired Art Nouveau style. Trigger on requests such as
`穆夏风格`, `阿尔丰斯·穆夏风格`, `Mucha style`, `Mucha-inspired`,
`Art Nouveau poster`, decorative floral poster, ornate halo portrait, or similar
language.

Use GPT Image 2 through Fusion API for every generation or edit. Do not switch
to another image model unless the user explicitly asks.

## Style Direction

Always adapt the user's subject into a Mucha-inspired Art Nouveau image prompt.
Preserve any user-specified subject, product, person, pose, composition, aspect
ratio, text, colors, or commercial constraints unless they conflict with safety
or feasibility.

Add these style elements when they fit the task:

- elegant Art Nouveau poster composition
- graceful flowing linework and ornamental borders
- floral motifs, botanical vines, arabesque patterns, and decorative halos
- elongated graceful forms, symmetrical framing, and theatrical poster layout
- soft luminous skin or object rendering, muted jewel tones, gold accents, and
  refined lithographic texture
- flat decorative background panels with layered ornamental geometry

Avoid claiming the output is an original Alphonse Mucha work. Phrase the style
as "inspired by Alphonse Mucha" or "Mucha-inspired Art Nouveau". Do not add
visible text unless the user asks for text; image models often render text
imperfectly.

For portraits or photos of real people, preserve identity only when the user
provided the image or clearly requests it. For product images, preserve the
product shape, key markings, material, and color unless the user asks to restyle
them.

## Mode Selection

Use text-to-image when the user provides only a subject or prompt.

Use image editing when the user provides any local image, image URL, attached
image, `file_id`, reference image, mask, product photo, portrait, or asks to
turn an existing image into Mucha style.

Ask one concise follow-up only when a required prompt or source image is
missing, or when the user's requested deliverable has mutually exclusive
business constraints. Otherwise infer a polished default.

## GPT Image 2 Actions

Use only these connector actions:

- Text-to-image submit: `fusion-api.openai_image_async_submit`
- Text-to-image result: `fusion-api.openai_image_async_result`
- Image-edit submit: `fusion-api.openai_image_edit_async_submit`
- Image-edit result: `fusion-api.openai_image_edit_async_result`

Fusion API is the selected provider path. Do not ask the user for an OpenAI API
key during normal execution. Do not run `oo search` or `oo connector search`
during normal execution.

## Payload Defaults

Use these defaults unless the user asks otherwise:

- `model`: `gpt-image-2`
- `output_format`: `png`
- `response_format`: `b64_json`
- `quality`: `high`
- `size`: infer from the requested composition; use `1024x1536` for poster or
  portrait, `1536x1024` for landscape, and `1024x1024` for square

For quick drafts, `quality: "auto"` is acceptable only when the user asks for a
draft, speed, or lower cost.

For edits where subject, identity, product, or layout preservation matters, add
`input_fidelity: "high"` and state the preservation constraints directly in the
prompt.

For long prompts, nested image arrays, masks, or quote-heavy text, write the
payload to a JSON file and pass it with `--data @payload.json`.

## Local And Remote Images

For local image inputs, upload each file first:

```bash
oo file upload "<filePath>" --json
```

Read the returned `downloadUrl` field and pass it as `images[].image_url` or
`mask.image_url`. Do not pass raw local paths to Fusion API connector actions.

Each image reference must contain exactly one of:

- `image_url`: a public or uploaded image URL
- `file_id`: an OpenAI file id

For edits, keep image order aligned with the user's request: main source image
first, then style, product, pose, background, or other references.

## Text-To-Image Workflow

Build a prompt that combines the user's requested subject with the Mucha-inspired
style direction.

Example payload:

```json
{
  "model": "gpt-image-2",
  "prompt": "A Mucha-inspired Art Nouveau poster of a violinist standing among lilies, graceful flowing linework, ornate floral border, decorative halo, muted jewel tones, gold accents, refined lithographic texture, no visible text.",
  "output_format": "png",
  "quality": "high",
  "response_format": "b64_json",
  "size": "1024x1536"
}
```

Submit:

```bash
oo connector run "fusion-api" \
  --action "openai_image_async_submit" \
  --data @payload.json \
  --json
```

Extract `sessionId`, then poll:

```bash
oo connector run "fusion-api" \
  --action "openai_image_async_result" \
  --data '{"sessionID":"<sessionId>"}' \
  --json
```

If the result is `processing`, wait briefly and poll the same `sessionID`. Do
not submit a duplicate job unless the user asks to retry.

## Image Editing Workflow

Build a prompt that states the desired Mucha-inspired transformation and what
must remain unchanged.

Example payload:

```json
{
  "model": "gpt-image-2",
  "prompt": "Transform the source image into a Mucha-inspired Art Nouveau poster. Preserve the same person, facial identity, pose, camera angle, and main clothing silhouette. Add graceful flowing linework, ornate floral border, decorative halo, botanical motifs, muted jewel tones, gold accents, and refined lithographic texture. Do not add visible text.",
  "images": [
    {
      "image_url": "https://example.com/source.png"
    }
  ],
  "output_format": "png",
  "quality": "high",
  "response_format": "b64_json",
  "size": "1024x1536",
  "input_fidelity": "high"
}
```

Submit:

```bash
oo connector run "fusion-api" \
  --action "openai_image_edit_async_submit" \
  --data @payload.json \
  --json
```

Extract `sessionId`, then poll:

```bash
oo connector run "fusion-api" \
  --action "openai_image_edit_async_result" \
  --data '{"sessionID":"<sessionId>"}' \
  --json
```

Use a provided mask only when the user supplies one or asks for a localized edit.

## Results

In `oo connector run --json` output, the action payload is wrapped in the
top-level `.data` field.

For async result actions:

- `completed`: read image outputs from `.data.data.data[].b64_json` or
  `.data.data.data[].url`; read `.data.data.data[].revised_prompt` when useful
- `processing`: wait briefly and poll the same `sessionID`
- `not_found`: stop and report the returned `error`

For `b64_json` or `data:image/...;base64,...`, save the image locally as PNG,
JPEG, or WebP according to `output_format`. Do not print the encoded payload.
Choose a short descriptive filename such as `mucha-style-poster.png` unless the
user requested a name.

For a returned HTTP URL, either deliver that URL directly or save it locally:

```bash
oo file download "<url>" "<outDir>" --name "<fileNameWithoutExtension>" --ext "<extension>"
```

`oo file download` prints `Saved to: <path>` and does not support `--json`.

On success, make the image visible to the user when practical by previewing or
attaching the artifact. A local path alone is not enough when the environment can
render images.

## Failure Handling

Stop and report the smallest next action for missing prompt, missing source
image, inaccessible local path or URL, invalid `file_id`, schema rejection, auth,
billing, permission, timeout, or `not_found` session failures.

If the connector rejects an optional field, remove only that field when the
remaining payload still satisfies the user's request. Do not silently change
models, provider paths, or style direction.
