image-poster skill
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.
Is the image-poster skill safe?
Clean: nothing in its files matched our rules. We read 2 files in the folder on 2026-09-28.
No findings.
Install the image-poster skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/nexu-io/open-design.git /tmp/open-design mkdir -p ~/.claude/skills cp -r /tmp/open-design/design-templates/image-poster ~/.claude/skills/image-poster
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
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 ExamplesWorkflow
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:
scale; eye-line and crop.
- Subject + composition — what is in the frame, where, at what
plus rim plus fill; time of day if outdoor.
- Lighting + mood — natural / studio / moody; warm / cool; key
palette; otherwise a 3-word mood tag (e.g. "muted ochre + ink").
- Palette + textures — hex anchors when the user gave a brand
("85mm portrait, shallow DOF") or a specific film stock.
- Camera / lens — only if the user wants photographic realism
warped text, no logo placeholders").
- What to avoid — common AI-slop patterns ("no extra fingers, no
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 tag.
Hard rules
the aspect avoids a re-render.
- One image per turn unless asked for variations.
- Honor imageAspect exactly — the upstream cost is the same; matching
in-frame text. Real copy beats lorem.
- No filler typography in the image itself unless the user asked for
file. The user expects something to open in the file viewer.
- Save every render — never describe an image without producing the
More skills from nexu-io/open-design
- Aarticle-magazineHuashu / huashu-md-html-inspired magazine article layout for turning Markdown or notes into a polished long-form HTML essay.
- Aaudio-jingleAudio generation skill — jingles, beds, voiceover, and sound effects. Routes music requests to Suno V5 / Udio / Lyria, speech to MiniMax TTS / FishAudio / ElevenLabs V3, and SFX to ElevenLabs SFX or AudioCraft. Output is one MP3/WAV file saved to the project folder.
- Aaudio-jingleAudio generation skill — jingles, beds, voiceover, and sound effects. Routes music requests to Suno V5 / Udio / Lyria, speech to MiniMax TTS / FishAudio / ElevenLabs V3, and SFX to ElevenLabs SFX or AudioCraft. Output is one MP3/WAV file saved to the project folder.
- Ablog-postA long-form article / blog post — masthead, hero image placeholder, article body with figures and pull quotes, author byline, related posts. Use when the brief asks for "blog", "article", "post", "essay", or "case study".
- Ablog-postA long-form article / blog post — masthead, hero image placeholder, article body with figures and pull quotes, author byline, related posts. Use when the brief asks for "blog", "article", "post", "essay", or "case study".
- Abuild-testRun the project's build / typecheck / lint / test commands and emit the build.passing + tests.passing signals devloop convergence reads.
- Acard-twitterTwitter quote or data card designed to pair with a post.
- Acard-xiaohongshuXiaohongshu-style knowledge cards, arranged as a swipeable multi-card carousel.
- Aclinical-case-reportStructured medical case presentation for clinical rounds, conferences, and documentation. Generates SOAP-format or narrative case reports with physiologically accurate vitals, labs, and evidence-based plans. Use when the brief mentions "case report", "case presentation", "SOAP note", "clinical case", "ward rounds", "case summary", or "patient presentation".
- Aclinical-case-reportStructured medical case presentation for clinical rounds, conferences, and documentation. Generates SOAP-format or narrative case reports with physiologically accurate vitals, labs, and evidence-based plans. Use when the brief mentions "case report", "case presentation", "SOAP note", "clinical case", "ward rounds", "case summary", or "patient presentation".
- Acode-importRead an existing repository's structure into the project cwd as a normalised snapshot the agent can analyse without re-walking the tree on every turn.
- Acodex-interactive-capability-mapTurn a long-form article, thread, memo, or product narrative into a compact clickable capability map with a workflow loop, use-case matrix, and responsive detail panel.