AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Flyer Maker

skill-mikefluff-skills-flyer-maker · by Mikefluff

Turn event details (title / date / location / CTA) plus optional photo into a poster / flyer / social-event-graphic with embedded text in a chosen style. Multi-aspect: portrait, square, story, landscape, a4. Use when: 'make a flyer for X', 'event poster', 'workshop flyer', 'meetup poster', 'афиша', 'плакат', 'флайер для мероприятия'.

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-mikefluff-skills-flyer-maker

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-mikefluff-skills-flyer-maker)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Flyer Maker? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

End-to-end flyer / poster generator. Input: event details (title, optional date / location / CTA) plus an optional user-supplied photo. Output: N single-image variants at different aspect ratios, each with the event details embedded as text + the photo integrated (if provided) + a consistent visual style.

This skill orchestrates three lower-level components:

  1. image-prompt style anchor + composition-zone vocabulary
  2. common/runners execute layer — multi-aspect batch generation via the chosen image provider
  3. common/style-library/carousel/ — reuses the 24 carousel visual styles as the visual vocabulary (poster styles overlap heavily with editorial carousel styles)

Use when the user wants a finished flyer image — not just a prompt. Without --execute, returns the assembled prompts; with --execute, generates the actual PNGs.

This skill does NOT:

  • Generate animated flyers (use reel-builder for motion)
  • Render print-ready CMYK / 300DPI files — outputs are RGB at standard digital resolutions (1080 / 1240 px). For print: open the PNG in a real DTP tool (Affinity / InDesign / Photoshop) and convert.
  • Compose multi-image collages — single image per aspect.
  • Generate QR codes (deferred to v2.5.x — if you need a QR, generate separately and overlay manually).
  • Search Eventbrite / Meetup / Luma for event metadata — you provide title / date / location explicitly.
  • Replace a designer's judgment on layout — the composition zones are starter conventions; tweak via prompt iteration.

ROLE

Read the event details + optional photo + optional style → pick a model (text-friendly + multi-ref-capable if photo provided) → assemble per-aspect prompts with composition zones filled in → batch execute via the image provider → save PNGs + manifest → print paths.

PIPELINE

  1. Resolve event details:
  • Required: --title
  • Strongly recommended: at least one of --date, --location, or --cta (a flyer without a single detail is just a styled portrait)
  • Optional: --subtitle, --time (can be merged with date)
  1. Resolve photo (optional):
  • --photo : passed as reference image to the chosen model.
  • Multi-ref capable models needed (Nano Banana Pro / Flux Kontext / gpt-image-2 / Ideogram 3 / Seedream 5.0).
  • If --photo provided AND --model auto: skill picks a ref-capable model.
  • If --photo provided AND --model that can't handle refs: warn + auto-substitute, or exit if user passed --strict.
  1. Resolve style — see references/event-details.md:
  • --style : load from common/style-library/carousel/.md. Use the Style anchor (text-in-image mode) block (flyers always have text).
  • --style auto: pick from library based on the event type implied by the title + the chosen tone (formal, casual, indie, corporate). Algorithm same as carousel-builder.
  • --style-mod "": append a tweak to the anchor.
  1. Pick model — see references/model-picker.md:
  • --model auto:
  • Photo provided + identity preserve critical (named speaker) → nano-banana-pro
  • Photo provided + brand-style transfer needed → flux-2-pro or seedream-5
  • Photo provided + Latin/CJK text needed → gpt-image-2
  • No photo + text-heavy → ideogram-3-quality
  • No photo + photoreal style → nano-banana-pro or flux-2-pro
  • --model : explicit override.
  • ONE model for all aspects (consistency across the family).
  1. Build per-aspect prompts — see references/composition-zones.md:

Each aspect has a composition template with three zones:

  • Headline zone (top 20-25%): title in large bold typography
  • Visual zone (middle 50-55%): photo integration if provided, else style anchor visual
  • Details zone (bottom 25-30%): date + location + CTA in smaller typography

The prompt assembly per aspect: ```

Composition:

Embed text: Headline: ""

Aspect ratio: Size: ```

  1. Estimate cost + confirm — sum aspects × variants. Under default carousel budget ($1.50) → no prompt; over → ask once.
  1. Batch executecommon.runners.batch.run_batch():
  • Parallelism default 2 (each aspect = ~5-10s API call; running 3 in parallel rarely problematic but rate-limit safety)
  • Manifest updated after each aspect
  • --resume retries only failed aspects
  1. Output:

`` ./generated/flyer// portrait.png (1080×1350) square.png (1080×1080) story.png (1080×1920) landscape.png (1920×1080, if requested) a4.png (1240×1754, if requested) manifest.json style-used.md prompts.md ``

stdout last lines: `` Flyer: ./generated/flyer// (N/M aspects succeeded) Files: portrait.png · square.png · story.png ``

MODES

Required

  • flyer-maker --title ""

Strongly recommended (provide ≥1)

  • --date "" — free-form date / time
  • --location ""
  • --cta "" — call to action (e.g., "Tickets: link in bio", "RSVP via DM", "Free entry")

Optional content

  • --subtitle "" — secondary line under the title
  • --photo — reference image to embed (speaker face, venue shot, theme image)
  • --lang en|ru — language of embedded text (default: matches the language of --title)

Visual

  • --style auto| — visual style (uses carousel style library; default auto)
  • --style-mod "" — append a tweak to the chosen anchor
  • --aspects portrait,square,story,landscape,a4 — comma list (default: portrait,square,story)
  • --variants N — N takes per aspect (default 1)
  • --model auto| — image provider (default auto)

Execution

  • --execute — actually generate (else returns plan + prompts)
  • --output — custom output (default ./generated/flyer//)
  • --parallelism N — concurrent API calls (default 2, max 4)
  • --yes — skip cost confirmation
  • --resume — retry only failed aspects
  • --strict — fail (don't auto-substitute) if --model can't handle --photo

Inspection

  • --prompts-only — print plan + per-aspect prompts, exit (no API call)
  • --cost-only — print total cost, exit
  • --check — validate env vars + library files exist

STRUCTURED LAYOUT (Ideogram 4 only)

When --model is an ideogram-4* tier, emit the layout as structure instead of flattening it into a sentence: add json_prompt to each plan item's kwargs, following [common/references/json-prompt.md](../../common/references/json-prompt.md). This skill already knows where every element goes; sending that directly is what stops the arrangement drifting between variants.

On any v3 tier the provider refuses a json_prompt rather than ignoring it, so keep the prose prompt as written and send nothing extra.

REFERENCES (load on demand)

| File | When to load | |---|---| | [references/event-details.md](references/event-details.md) | Step 1 — required vs. optional fields, formatting conventions for date/time/location | | [references/aspect-presets.md](references/aspect-presets.md) | Step 5 — pixel dimensions, social-platform-specific recommendations | | [references/composition-zones.md](references/composition-zones.md) | Step 5 — headline/visual/details zone layouts per aspect, anti-clutter rules | | [references/model-picker.md](references/model-picker.md) | Step 4 — auto-pick decision tree, capability matrix, cost preview | | [references/troubleshoot.md](references/troubleshoot.md) | When text renders wrong, photo doesn't integrate, layout collapses |

EXAMPLES

See [examples/before-after.md](examples/before-after.md) — 3 calibration runs: solo founder workshop with embedded speaker photo (Nano Banana Pro), conference poster without photo using bold typographic Swiss style (Ideogram 3 Quality), three-aspect launch event with Kinfolk-minimal aesthetic + RU+EN bilingual variant (gpt-image-2).

CONSTRAINTS

  • Embedded text on image is the differentiator. Without text rendering, this is just a styled image — use image-prompt directly. The skill defaults to text-friendly models because the title + details MUST land readable.
  • Headlines ≤8 words. Past 8 words, even the best text-in-image models distort. The validator warns; the prompt assembly trims if longer.
  • One model for all aspects. Mixing providers across the portrait / square / story batch breaks visual cohesion. Lock per-flyer.
  • One style for all aspects. Same anchor across the batch.
  • Photo identity preserve uses Nano Banana Pro by default. For speaker portraits in a flyer, NBP is the safest pick. Override with --model gpt-image-2 if you need text + photo blended in a stylized layout.
  • Aspect compositions differ. A 1080×1350 portrait and a 1080×1920 story have different headline/details zones — see references/composition-zones.md. Don't assume the prompt is identical across aspects.
  • Cost confirm ONCE per batch. Sum across all aspects + variants.
  • --prompts-only is the safety dry-run. Always recommend it for first iteration — flyers iterate on copy + composition more than on style.
  • Manifest updates after every aspect. --resume retries only failed ones.
  • No QR codes in v1. If you need a QR (ticketing link, venue map), generate separately and overlay in a real image editor.
  • No print-ready output in v1. Outputs are RGB PNG at digital resolutions. For print: open in a DTP tool and convert.
  • Event-slug derived from title. Default: kebab-case of title, max 40 chars + date suffix. Override via --output .
  • --photo accepts local paths AND URLs. Provider routes accordingly.
  • Never print API keys. Mask in errors.
  • Output dir is ./generated/flyer// by default.

INVOCATION HINTS

When the user says any of:

  • "make a flyer for X", "event poster for Y", "workshop flyer"
  • "meetup poster", "concert poster", "exhibition flyer"
  • "use this photo on a flyer", "put my face on a workshop poster"
  • "flyer with embedded date and location"
  • "промо для мероприятия", "афиша", "плакат", "флайер"
  • "сделай афишу для воркшопа / встречи / митапа"
  • "афиша с моей фоткой"

Defaults: --aspects portrait,square,story --style auto --model auto. Without --execute, returns prompts + plan; with --execute, generates files.

If the user mentions a specific platform (Instagram → emphasize 4:5 portrait + 9:16 story; LinkedIn → emphasize 1:1 square + 1.91:1 landscape; print → suggest A4 aspect), bias --aspects accordingly.

This skill is distinct from:

  • image-prompt — that writes prompts for any image; this orchestrates a multi-aspect batch for flyers specifically
  • carousel-builder — that's N-slide narrative; this is 1-image-per-aspect event posters
  • reel-builder — that's video; this is static images

For album / book / podcast covers: use image-prompt --execute with a simpler one-shot prompt (no event-details structure). A dedicated cover-maker skill is planned (see ROADMAP).

For YouTube thumbnails: image-prompt --execute with 16:9 size + face + bold title. A dedicated thumbnail-maker skill is planned.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.