Image Poster Skill
SkillFiles & storageimage-poster is a skill that lets an AI agent create a single poster, key art, or editorial illustration from a written brief. The agent assembles a structured image prompt covering subject, lighting, palette, and camera details, then runs one dispatcher command to generate the picture. It defaults to gpt-image-2 but is provider-agnostic, working with Flux, Imagen, or Midjourney depending on the project setup. Results are saved as PNG or JPEG files in the project folder.
Available today. Use it from your connected AI after setup.
No other account needed.
Have a project set up with imageModel and imageAspect metadata, plus optional imageStyle notes.
Then ask your AI: use the Image Poster Skill skill
What your AI can do with it
- Generates one finished poster, key art, or illustration image per turn
- Composes structured prompts covering subject, lighting, palette, and camera details
- Defaults to gpt-image-2 and can drive Flux, Imagen, or Midjourney via upstream tooling
- Reads project metadata for imageModel, imageAspect, and imageStyle settings
- Saves output as PNG or JPEG files in the project folder
- Triggers on briefs mentioning poster, key art, illustration, or cover art
Getting started
- Have a project set up with imageModel and imageAspect metadata, plus optional imageStyle notes.
- Add the image-poster skill to the agent's available skills.
- Give the agent a written brief describing the poster, key art, or illustration you want.
- The agent composes the prompt and runs the media generate dispatcher command, saving the PNG or JPEG to the project folder.
What this skill tells your AI
The instructions your AI receives, as published by nexu-io/open-design in design-templates/image-poster/SKILL.md and read by ahel’s review.
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. When a value is not provided, infer a safe default from the brief and
media contract. Ask only when the choice would materially change the requested
result and no safe default can be inferred.
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
imageAspectexactly — 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.
Signals
- GitHub stars
- 98k
- Forks
- 11k
- Last commit
- Sep 2026
Others that do the same job
Questions
- Which image models does it work with?
- It defaults to gpt-image-2 but is provider-agnostic. The same workflow can drive Flux, Imagen, or Midjourney through the active upstream tooling, depending on the project setup.
- Where do the generated images go?
- The dispatcher writes the image bytes into the project folder as PNG or JPEG files, where the FileViewer picks them up automatically.
Advanced
- Item type
- skill
- Key
image-poster-nexu-io- Source
- github.com/nexu-io/open-design