SKILL.md
Viral Asset Templates
Seven proven single-image layouts. Pick the template that matches the message, fill it with real numbers and brand tokens, render sharp. Load the brand system (colors, fonts, logo rules) before designing; every rogue hex is rework.
Dimensions
- LinkedIn portrait: 1080x1350 (4:5), the default output. Maximum feed real estate.
- LinkedIn / Instagram square: 1080x1080 fallback.
- X / Twitter: 1200x675 (16:9).
Produce 1080x1350 unless told otherwise.
Template routing
| Message | Template |
|---|---|
| One impressive number or research finding | Stat callout |
| Us vs them, old way vs new way | Comparison |
| One feature, update, or capability | Feature spotlight |
| User quote or review | Testimonial card |
| Transformation with a metric | Before / after |
| Launch, milestone, event | Announcement |
| 3-4 related data points | Data story (mini infographic) |
More than 4 data points: it is a carousel, hand off to linkedin-carousel-generator.
Full layout diagrams and per-template design rules (type sizes, color placement, mandatory elements): read references/templates.md before building any of the seven.
Workflow
- Pick the template from the routing table. State the choice.
- Collect the content: the number, the quote, the screenshot. Real values only; source attribution is mandatory on stats.
- Apply brand tokens to the template's color slots (dark background + light text for stats and announcements, light background for data-dense layouts).
- Render. Code path: build at 2x (2160x2700), downscale to 1080x1350, PNG for text-heavy output, JPEG 90% for photo-based. Canva path: search brand templates first, apply brand kit id. Figma path: pull existing templates with get_design_context, screenshot to preview.
- Verify (below), then deliver with a suggested caption hook.
Verification
Open the rendered file at 100% and at phone scale (roughly 30% zoom). Expect: the core message readable at phone scale, text crisp (no downscale blur), logo present, source line on any stat, correct pixel dimensions. Run python3 -c "from PIL import Image; print(Image.open('<file>').size)" and expect exactly the target dimensions. Wrong size or soft text: re-render at 2x and downscale properly.
Completion checklist
- [ ] Template matches the message type
- [ ] All numbers and quotes real, stats carry source attribution
- [ ] Brand colors and fonts only
- [ ] Rendered at 2x and downscaled, exact target dimensions verified
- [ ] Readable at phone scale
- [ ] Logo present, CTA where the template calls for one
Any box unchecked: not done. Fix or say so.
Good vs bad
- Bad stat callout: "AI saves teams tons of time" over a gradient, no number, no source.
- Good stat callout: "72%" at 100px, "of first drafts ship unedited when the model knows your voice" as two support lines, source line at the bottom, logo bottom-right.
Footguns
- Rendering text at 1x produces fuzzy type on retina screens. Always 2x then downscale.
- Screenshots pasted raw look like bug reports. Frame them in a browser or device mockup (feature spotlight rule).
- All-checkmarks comparison graphics read as propaganda. Use yes / partial / no honestly; credibility is the conversion mechanism.
- Missing source attribution on a stat is the first comment someone leaves. Non-negotiable.
- Star ratings on casual feedback quotes overclaim. Stars only for formal reviews.