design-blog-hero
Generate a blog post hero artifact — TWO pixel-exact HTML canvases in a single file: an Open Graph card (1200×630) for social meta tags AND an in-page hero…
Generate a newsletter email header banner — pixel-exact 600×200 HTML canvas (the standard email-client safe-zone width). Self-contained, INLINE styles only (no external <style> blocks beyond <head>) for email-client compat. Intended to be screenshot to PNG and embedded as <img>
$ npx -y skills add slogsdon/skills-design --skill design-newsletter-header --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/design-newsletter-headerContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate a newsletter email header banner — pixel-exact 600×200 HTML canvas (the standard email-client safe-zone width). Self-contained, INLINE styles only (no external <style> blocks beyond <head>) for email-client compat. Intended to be screenshot to PNG and embedded as <img>
name: design-newsletter-header description: Generate a newsletter email header banner — pixel-exact 600×200 HTML canvas (the standard email-client safe-zone width). Self-contained, INLINE styles only (no external <style> blocks beyond <head>) for email-client compat. Intended to be screenshot to PNG and embedded as <img> in email — the rendered image is what readers see, regardless of their email client. Reads ./design/<brand-slug>/DESIGN.md and tokens.css. Triggers include "newsletter header", "email header for X", "email banner", "/newsletter-header".
Produces a 600×200 pixel-exact HTML canvas for use as a newsletter email header. The canvas is small — typography choices must be ruthless. Display sizes top out around 36–48px; meta around 11–14px. The artifact is meant to be screenshot to PNG and embedded as `<img>` in the email — the email client never sees raw HTML, so font and CSS quirks don't matter for delivery.
`./design/<brand-slug>/artifacts/newsletter-header-YYYY-MM-DD-<slug>.html`
test -f ./design/<brand-slug>/tokens.css
If missing, stop and tell the user to run `/design-system <brand-slug>` first.
Ask in one message:
1. Header text — the masthead string (max 6 words) 2. Optional issue number / dateline (e.g. "Issue 003 · 2026.05.02") 3. Optional tagline / subtitle (max 6 words)
If the user gives 8+ words, push back: "600×200 won't hold that legibly. Cut to the masthead + meta." Don't proceed until they agree.
Pick ONE. Newsletter headers favor restraint — pick the simplest archetype that carries the brand register:
Then pick:
**Cross-artifact rule:** vary from the brand's most recent header (issue 002 vs issue 003 should not be visually identical).
Template:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><Brand> — Newsletter header — <issue></title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=<families>&display=swap">
<style>
/* Inline tokens (no external CSS — though Google Fonts <link> is allowed since it's a font, not CSS) */
<minimal subset of tokens.css needed for this artifact>
html, body { margin: 0; padding: 0; background: #2a2a2a; min-height: 100vh; display: grid; place-items: center; font-family: var(--type-sans-family); }
.canvas {
width: 600px;
height: 200px;
background: var(--color-surface); /* or --color-ink for inversion */
color: var(--color-ink);
position: relative;
overflow: hidden;
padding: 24px 32px;
box-sizing: border-box;
display: flex;
flex-direction: column;
/* Layout per variation */
}
@page { size: 600px 200px; margin: 0; }
</style>
</head>
<body>
<!--
Variation choices:
archetype: <picked>
layout: <picked>
color: <picked>
-->
<article class="canvas">
<!-- masthead content per archetype -->
</article>
</body>
</html>For the masthead itself:
> Newsletter header at `./design/<brand-slug>/artifacts/newsletter-header-YYYY-MM-DD-<slug>.html`. > > Variation: `<archetype>` × `<layout>` × `<color>`. > > Export PNG: open in browser → DevTools → set viewport to 600×200 → screenshot the `.canvas` element. Embed the PNG as `<img>` in your email at full resolution (the email client renders the image directly, no font/CSS dependencies).
Governed by three shared canonical references — read them, do not restate them:
**Forbidden (fast scan — the references hold the full list):**
-
Brand-agnostic design system and artifact generators for Claude Code, plus a figure-worth audit and PDF and HTML-to-PNG export utilities. 19 skills total. Install via the slogsdon-claude-code-config marketplace.
Repo: slogsdon/skills-design
Generate a blog post hero artifact — TWO pixel-exact HTML canvases in a single file: an Open Graph card (1200×630) for social meta tags AND an in-page hero…
Generate a printable business card — pixel-exact 1050×600 front canvas + 1050×600 back canvas in a single HTML file. Standard 3.5×2 inch card at 300dpi. Front…
Generate a LinkedIn / Instagram multi-slide carousel — single HTML file with N square 1080×1080 .canvas divs, each representing one slide. Default N=5 (cover +…
Generate an Instagram post artifact — pixel-exact HTML canvas at 1080×1350 (portrait, default — Instagram's max-real-estate format) with opt-in 1080×1080…
Generate a deliverable landing-page HTML file (NOT a screenshot artifact). 1440px design width, mobile-responsive (CSS-only, no JS). Sections: hero…
Generate a minimal single-column standalone HTML page — mobile-first at 375px width — for use as a link-in-bio destination. Contains: name/wordmark, short…