Printed materials cannot be modified after distribution. That is why the structure of this skill is interview → lock the spec → design → rigorous QA loop → only the passing version to the user. Do not show the user incomplete intermediate versions.
Model gate: typography/whitespace/color judgment is most of the work — it is designed exclusively for frontier models (Claude Fable 5 class). If you are running on a smaller model, inform the user before starting and recommend switching models.
G1 — Interview (before design, mandatory)
Ask everything at once (use the question tool):
- Purpose/place: where will it be posted? Viewing distance? (distance = determines minimum font size)
- Physical spec: final size (e.g., A2, 24"×36", banner 26"×70"), printing method (digital/offset/banner large-format output), single-sided/double-sided.
- Content copy: all finalized text (title/date/time/venue/contact/QR link). Do not make up copy — get blanks from the user.
- Brand: is there a DESIGN.md/logo file? If not, start with minimal tokens using the brand-guide skill.
- Deadline: print shop drop-off date + print shop spec requirements (if any, those take priority).
G2 — Lock the spec (in numbers)
- Trim + Bleed: trim size + 3mm (0.125") bleed on all sides. Backgrounds/photos extend to the bleed, text and logos stay 5mm+ inside the trim line as a safe margin.
- Resolution: raster images 300 DPI (close range) / 100–150 DPI (long range, e.g., banners). Text and shapes as vectors — HTML→PDF rendering leaves text as vectors.
- Minimum text: body 7pt or larger (6pt for business cards), poster headline ~28pt per 1m of viewing distance.
- Color: HTML→PDF is RGB. For offset printing, confirm RGB→CMYK conversion with the print shop, and confirm rich black issues for deep blacks against the print shop's spec. Fluorescent/neon tones become dull in print — add a caution note to the on-screen proof.
- Implementation: HTML at actual physical dimensions (
@page { size: {W}mm {H}mm; margin: 0 }, elements in mm units), output via Playwright/Chromium PDF.
G3 — Design
- Apply brand tokens, hierarchy in 3 levels or fewer (title/secondary/detail).
- Line-breaking rules (mandatory for both KR/EN): Korean uses
word-break: keep-all+ titles use manual<br>at semantic units (do not break at particles — "성수동에서 / 만나요" OK, "성수동에 / 서 만나요" fail). English titles must not have orphan words (a single word on the last line), and must not end a line with a preposition/article. - QR codes at least 2×2cm + sufficient contrast, test with an actual scan.
G4 — QA loop (the heart of this skill, MANDATORY)
Render → extract screenshot → READ with your eyes → fix → repeat. Do not show the user until all of the following pass (max 5 loops; if issues remain, honestly report the remaining issues):
- Trim Simulation: Verify the version cropped at the bleed line — are elements that must not be cut within 5mm of the trim line?
- Distance Test: 25% reduced screenshot — is the headline/key information still readable?
- Character-by-Character Proofing: READ all text character by character — check dates/phone numbers/URLs/prices against the copy. One typo = the entire run is reprinted.
- Line Break Check: Exhaustively check for G3 rule violations (broken particles, orphan words, line breaks in the middle of a word).
- Contrast/Legibility: Text contrast over background photos, blurring of small text.
- Brand: Comply with minimum logo size/margins/prohibited backgrounds.
- Alignment: Elements off the grid, awkward spacing.
G5 — Print-ready finishing (font outlines + color)
Finish the QA-passed version into a file the print shop can receive as-is. The tool is Ghostscript —
VERIFY: gswin64c -version (Windows) / gs -version. If not installed:
github.com/ArtifexSoftware/ghostpdl-downloads/releases (Windows gs*w64.exe /S),
macOS brew install ghostscript.
1. Font outlines (default). Chromium PDF embeds fonts as subsets, but outlines (all text → vector paths) are safest — print shop RIP compatibility and font licensing issues disappear:
gswin64c -o {name}_print.pdf -sDEVICE=pdfwrite -dNoOutputFonts {name}_qa.pdf
2. CMYK conversion (only when the print shop requires it). Add to the command above:
-sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK
RGB→CMYK without an ICC profile skews colors (especially vivid/neon) — ask the print shop
first: digital printing shops often accept RGB PDFs, and in that case it's better not to convert.
3. Finishing verification (blocking).
- Check fonts are removed:
mutool info -F {name}_print.pdf→ the font list must be empty (if no mutool, wingetArtifexSoftware.mutool). - Visual comparison by re-rendering after outlining:
mutool draw -o check.png -r 72 {name}_print.pdf→ READ side by side with the QA version — check for broken glyphs/changes in hairline thickness. Outline conversion can rarely alter thin strokes. - Check file size — text-heavy documents get larger after outlining (normal), investigate if more than 10x.
4. Delivery.
{name}_print.pdf(bleed + trim marks + outlines, CMYK if requested) +{name}_preview.png- one-line spec for the print shop (trim size/bleed/color mode/recommended paper/"font outlines complete").
- Give the user only 1–2 comps — only ones that passed QA. Don't offload unfinished versions with "pick from several versions."