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…
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
Claude Code
$ npx -y skills add slogsdon/skills-design --skill screenshot-html --agent claude-code
Codex
$ npx skills add slogsdon/skills-design --skill screenshot-html -a codex -y
Cursor
$ npx skills add slogsdon/skills-design --skill screenshot-html -a cursor -y
Gemini CLI
$ npx skills add slogsdon/skills-design --skill screenshot-html -a gemini-cli -y
GitHub Copilot
$ npx skills add slogsdon/skills-design --skill screenshot-html -a github-copilot -y
OpenCode
$ npx skills add slogsdon/skills-design --skill screenshot-html -a opencode -y
Windsurf
$ npx skills add slogsdon/skills-design --skill screenshot-html -a windsurf -y
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.
Generate a blog post hero artifact — TWO pixel-exact HTML canvases in a single file: an Open Graph card (1200×630) for social…
Generate a printable business card — pixel-exact 1050×600 front canvas + 1050×600 back canvas in a single HTML file. Standard…
Generate a LinkedIn / Instagram multi-slide carousel — single HTML file with N square 1080×1080 .canvas divs, each representing…
Generate an Instagram post artifact — pixel-exact HTML canvas at 1080×1350 (portrait, default — Instagram's max-real-estate…
Generate a deliverable landing-page HTML file (NOT a screenshot artifact). 1440px design width, mobile-responsive (CSS-only, no…
Generate a minimal single-column standalone HTML page — mobile-first at 375px width — for use as a link-in-bio destination.…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…