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…
Capture pixel-exact PNG screenshots of design artifact components inside HTML files produced by design-* skills (LinkedIn, Instagram, YouTube, Twitch, OBS overlays, blog hero, business card, etc.). Targets the `.canvas` / `.canvas-*` / `.scene` containers — not full pages. Use
$ npx -y skills add slogsdon/skills-design --skill screenshot-html --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/screenshot-htmlContext preview
The summary Claude sees to decide when to auto-load this skill.
Capture pixel-exact PNG screenshots of design artifact components inside HTML files produced by design-* skills (LinkedIn, Instagram, YouTube, Twitch, OBS overlays, blog hero, business card, etc.). Targets the `.canvas` / `.canvas-*` / `.scene` containers — not full pages. Use
name: screenshot-html description: Capture pixel-exact PNG screenshots of design artifact components inside HTML files produced by design-* skills (LinkedIn, Instagram, YouTube, Twitch, OBS overlays, blog hero, business card, etc.). Targets the `.canvas` / `.canvas-*` / `.scene` containers — not full pages. Use after generating design artifacts and visual exports are needed.
Targeted artifact-node screenshots via headless Chromium. Skips browser chrome and page background — captures just the design canvas.
Skip if:
The script queries for these conventions used by `design-*` skills:
Nested matches are deduped — only top-level artifact containers are screenshotted.
If a file has no matches, the script falls back to a full-page screenshot. `--full-page` forces fallback for every file.
From the project root where the design HTML lives (Playwright must resolve there):
node skills/screenshot-html/scripts/screenshot-html.mjs <dir> [--output <dir>] [--width <px>] [--height <px>] [--full-page]
Flags:
The browser runs at `deviceScaleFactor: 1` so PNG pixel dimensions match the canvas's declared size exactly (matches what `design-*` skills assume for export).
**None — the script self-bootstraps on first run.**
If Playwright isn't resolvable, the script installs it (and the Chromium binary) into its own `node_modules` next to `screenshot-html.mjs`. First run takes ~10–60s for the install; subsequent runs hit the fast path (~1s overhead).
$ node screenshot-html.mjs ./design/<brand>/artifacts Playwright not found. Installing into <skill-dir>/scripts/node_modules (one-time)… added 2 packages in 986ms …
The bootstrap also catches the "Chromium binary missing" failure mode (post-upgrade, fresh CI runner) and self-heals with `playwright install chromium` before retrying the launch.
The script anchors npm to its own directory by writing a stub `package.json` and passing `--prefix=<scripts-dir>`. Without those, npm walks up looking for the closest ancestor `package.json` and the install bleeds into a parent project. The bootstrap deliberately avoids that.
A local `.gitignore` covers `node_modules/`, `package.json`, and `package-lock.json` — none of the install artifacts are checked in.
These were considered and rejected; documented so future maintainers don't waste time re-discovering them:
`skills/screenshot-html/scripts/screenshot-html.mjs` (lives alongside this skill in the config repo). Always invoke with `node skills/screenshot-html/scripts/screenshot-html.mjs ...` from a directory where Playwright resolves — typically the project containing the design HTML, not this config repo. The script is self-contained — no relative imports — so calling it by absolute path from any cwd works too.
For each top-level artifact in a file, the script derives a hint from the element's id (preferred, e.g. `scene-starting`) or its most specific class token (`canvas-front`, `canvas-og`, etc.):
| Source file | Targets | Output filenames | |---|---|---| | `linkedin-2026-05-02-field-note.html` | one `.canvas` | `linkedin-2026-05-02-field-note.png` | | `business-card.html` | `.canvas-front`, `.canvas-back` | `business-card--canvas-front.png`, `business-card--canvas-back.png` | | `blog-hero.html` | `.canvas-og`, `.canvas-hero` | `blog-hero--ca
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…