Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
bluzir avatar

Verify Artifact

  • 41 installs
  • 98 repo stars
  • Updated April 20, 2026
  • bluzir/claude-code-design

verify-artifact is a Claude Code skill that screenshots and vision-inspects a rendered HTML artifact, sweeps the console, and reports layout, color and typography regressions by severity.

About

This skill runs a visual verification pass on an HTML artifact after a build. It takes a fresh screenshot, sweeps the browser console, and reasons over the rendering against design taste rules for typography, layout, color and content. For decks it runs a programmatic overflow audit because hidden overflow is visually silent. It stays silent when the artifact passes and otherwise reports issues ranked P0 to P3.

  • Screenshots an HTML artifact, sweeps the console, and vision-inspects for layout, color and typography regressions
  • Deck-aware overflow audit catches silently clipped slide content that vision alone misses
  • Silent on a clean pass; reports issues by P0-P3 severity for the agent to fix

Verify Artifact by the numbers

  • 41 all-time installs (skills.sh)
  • Ranked #1,275 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

verify-artifact capabilities & compatibility

Capabilities
wireframe · use design system · ui design
Works with
chrome
Use cases
ui design · testing · web design
From the docs

What verify-artifact says it does

Screenshot + console sweep + visual inspection of an artifact for layout/color/typography regressions.
SKILL.md
**Typography**: text ≥ 24px on 1920×1080 slides, ≥ 12pt on print, ≥ 44px for mobile hit targets
SKILL.md
**Silent-on-pass:** if no P0/P1 issues **and** console is clean, respond with a single line: `verify-artifact: OK`.
SKILL.md
npx skills add https://github.com/bluzir/claude-code-design --skill verify-artifact

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs41
repo stars98
Last updatedApril 20, 2026
Repositorybluzir/claude-code-design

What it does

Catch layout, color and typography regressions in a rendered HTML artifact before end of turn.

Who is it for?

Visually checking a rendered HTML artifact or deck for regressions before finishing a turn

Skip if: Console-only checks with no rendering (that is what /done covers)

When should I use this skill?

After /done reports clean and before end of turn, to vision-check the actual rendering

What you get

Visual and console issues are found and reported by P0-P3 severity, or the artifact passes silently

  • A timestamped screenshot under .claude/
  • A severity-ranked list of visual and console issues

By the numbers

  • P0-P3 four-level severity rubric
  • typography rule of text >= 24px on 1920x1080 slides

Files

SKILL.mdMarkdownGitHub ↗

Verify Artifact

Deeper check than /done — uses vision on the actual rendering and flags visual problems, not just console errors.

Pipeline

1. Ensure preview is live: if $0 isn't already open in Chrome DevTools MCP, navigate there first via /preview $0.

2. Deck-aware pre-check (if `<deck-stage>` present). Decks have overflow: hidden on sections — vertical overflow is visually silent, so vision alone will miss it. Before screenshot, also hard-reload with cache-bust to make sure the browser is rendering the current on-disk CSS, not a cached state from before the last edit:

   mcp__chrome-devtools__navigate_page({ type: "reload", ignoreCache: true })

Then run the programmatic audit:

   // mcp__chrome-devtools__evaluate_script
   async () => {
     const stage = document.querySelector('deck-stage');
     if (!stage) return { isDeck: false };
     const DECORATIVE = '.glow, .glow-2, .hero-glow, .chrome, [data-decorative], [aria-hidden="true"].backdrop';
     const isDecorative = (el) => {
       if (el.matches(DECORATIVE) || el.closest(DECORATIVE)) return true;
       const cs = getComputedStyle(el);
       if (cs.pointerEvents === 'none' && !el.textContent?.trim() && parseFloat(cs.opacity) < 1) return true;
       return false;
     };
     const out = [];
     for (let i = 0; i < stage.totalSlides; i++) {
       stage.goToSlide(i);
       await new Promise(r => setTimeout(r, 80));
       const s = stage.querySelectorAll('section')[i];
       const sRect = s.getBoundingClientRect();
       const scale = 1080 / sRect.height;
       let maxBottom = 0, culprit = null;
       for (const el of s.querySelectorAll('*')) {
         if (isDecorative(el)) continue;
         const cs = getComputedStyle(el);
         if (cs.display === 'none' || cs.visibility === 'hidden') continue;
         const r = el.getBoundingClientRect();
         if (r.height === 0 && r.width === 0) continue;
         const b = (r.bottom - sRect.top) * scale;
         if (b > maxBottom) { maxBottom = b; culprit = el.className?.toString?.().slice(0, 40) || el.tagName; }
       }
       const contentBottom = Math.round(maxBottom);
       const overflow = contentBottom - 1080;
       const headroom = 1080 - contentBottom;
       const status = overflow > 0 ? 'FAIL' : headroom < 40 ? 'WARN' : 'OK';
       out.push({ slide: i + 1, contentBottom, overflow, headroom, status, culprit });
     }
     stage.goToSlide(0);
     return { isDeck: true, slides: out };
   }

Severity:

  • FAIL (overflow > 0) — P0. Content silently clipped. Report list of slides + culprit class; skip rest of verify, tell Claude to fix.
  • WARN (headroom < 40) — P1. Visually tight against edge (font-metric variance can push over). Report as soft issue.
  • OK — proceed.

3. Take a fresh screenshot to a timestamped path:

   ts=$(Bash(date -u +%Y%m%dT%H%M%SZ))
   mcp__chrome-devtools__take_screenshot({ filePath: `.claude/verify-${ts}.png`, fullPage: true })

For decks that passed the overflow audit, also sample slides at positions [0, mid, last] and save as .claude/verify-${ts}-slide-${n}.png — vision-check each rather than just the current viewport.

3. Read the screenshot with vision: use the Read tool on .claude/verify-<ts>.png — Claude is multimodal and will see the image as input.

4. Grab console: mcp__chrome-devtools__list_console_messages — collect all severities.

5. Reason over the image + console. Check against the Claude Design taste rules:

  • Typography: text ≥ 24px on 1920×1080 slides, ≥ 12pt on print, ≥ 44px for mobile hit targets, legible hierarchy, no AI-slop fonts (Inter, Roboto, Arial, Fraunces)
  • Layout: no overflow/clipping/misalignment, consistent spacing rhythm
  • Color: contrast ≥ 4.5:1 on body text, palette from brand/design system, no invented colors
  • Content: no Lorem ipsum or TODO markers still visible, no filler
  • AI-slop tropes: no aggressive gradients, no rounded-card-with-left-border-accent, no emoji without brand justification, no SVG-drawn imagery (should be placeholders)
  • Console: errors, React hydration mismatches, CORS, missing assets

6. Severity rubric:

  • P0 — artifact is broken (crashes, blank page, major overflow)
  • P1 — looks wrong (contrast failure, typography violation, layout bug)
  • P2 — could be better (inconsistent spacing, minor color drift)
  • P3 — nitpick

7. Silent-on-pass: if no P0/P1 issues and console is clean, respond with a single line: verify-artifact: OK.

  • Do NOT print anything else on a clean pass. This is noise otherwise.

8. Report: if issues found, list them by severity with screenshot coordinates or element descriptions precise enough for Claude to fix:

   [P1] Header h1 at top-left is 18px — should be ≥ 32px for slide context
   [P2] Footer contrast 3.2:1 vs 4.5:1 minimum — lighten text or darken bg

9. Auto-fix loop (only if user requested): address each P0/P1, then re-run verify-artifact.

Optional deep-dive

If the user asks for a deep check, run:

  • mcp__chrome-devtools__performance_start_trace — LCP/CLS/INP
  • mcp__chrome-devtools__lighthouse_audit — a11y / best-practices / SEO

These are opt-in; default verify is just screenshot + console + vision.

Alternative: parallel background check

For truly large artifacts (20+ slides) where verify latency matters, consider forking a subagent via the Agent tool (built into Claude Code) to run the visual inspection in parallel while you continue working. Pass the screenshot path + console dump in the prompt. This is optional — most artifacts benefit from inline verification.

Related skills

FAQ

What does it check?

Typography size and hierarchy, layout overflow and alignment, color contrast, leftover Lorem ipsum or TODOs, AI-slop tropes, and console errors.

What does it do on a clean pass?

It stays silent except for a single line 'verify-artifact: OK' to avoid noise.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.