| name | image-poster |
| description | Single-image generation skill for posters, key art, and editorial
illustrations. Defaults to gpt-image-2 but is provider-agnostic โ the
same workflow drives Flux, Imagen, or Midjourney via the active
upstream tooling. Output is one or more PNG/JPEG files saved to the
project folder.
|
| triggers | ["poster","key art","illustration","image","cover art","ๆตทๆฅ","ๆ็ป"] |
| od | {"mode":"image","surface":"image","scenario":"design","preview":{"type":"html","entry":"example.html"},"design_system":{"requires":false},"example_prompt":"Editorial poster for an indie film festival โ one bold abstract\nsilhouette over a warm, slightly grainy paper background; hand-set\nsans serif title at the top, festival dates and venue at the bottom\nin monospace. Muted ochre + ink palette.\n"} |
Image Poster Skill
Produce one finished image asset per turn unless the user asks for
variations. Image generation rewards a tight, structured prompt โ your
job is to assemble that prompt from the user's brief, then dispatch.
Resource map
image-poster/
โโโ SKILL.md โ you're reading this
โโโ example.html โ what the resulting card looks like in Examples
Workflow
Step 0 โ Read the project metadata
The active project carries imageModel, imageAspect, and (optional)
imageStyle notes. Use them as the upstream model + canvas + style
anchor; only ask the user to fill them in if they're marked (unknown โ ask).
Step 1 โ Compose the prompt
Plan in this exact order before calling any tool:
- Subject + composition โ what is in the frame, where, at what
scale; eye-line and crop.
- Lighting + mood โ natural / studio / moody; warm / cool; key
plus rim plus fill; time of day if outdoor.
- Palette + textures โ hex anchors when the user gave a brand
palette; otherwise a 3-word mood tag (e.g. "muted ochre + ink").
- Camera / lens โ only if the user wants photographic realism
("85mm portrait, shallow DOF") or a specific film stock.
- What to avoid โ common AI-slop patterns ("no extra fingers, no
warped text, no logo placeholders").
Step 2 โ Dispatch via the media contract
Use the unified dispatcher โ do not call upstream provider APIs by
hand. Run from your shell tool:
"$OD_NODE_BIN" "$OD_BIN" media generate \
--project "$OD_PROJECT_ID" \
--surface image \
--model "<imageModel from metadata>" \
--aspect "<imageAspect from metadata>" \
--output "<short-descriptive-name>.png" \
--prompt "<the full assembled prompt from Step 1>"
The command prints one line of JSON: {"file": {"name": "...", ...}}.
The daemon writes the bytes into the project folder; the FileViewer
picks it up automatically.
Step 3 โ Hand off
Reply with a one-paragraph summary of the prompt you used and the
filename returned by the dispatcher (e.g. I generated hero-poster.png
with gpt-image-2 at 1:1.). Do not emit an <artifact> tag.
Hard rules
- One image per turn unless asked for variations.
- Honor
imageAspect exactly โ the upstream cost is the same; matching
the aspect avoids a re-render.
- No filler typography in the image itself unless the user asked for
in-frame text. Real copy beats lorem.
- Save every render โ never describe an image without producing the
file. The user expects something to open in the file viewer.