design-blog-hero — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-blog-hero (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Produces a single self-contained HTML file containing TWO pixel-exact canvases:
The same headline + meta render in both canvases at appropriate proportions. Screenshot each canvas separately for its respective use.
DESIGN.md exists for the brand--color-accent)./design/<brand-slug>/artifacts/blog-hero-YYYY-MM-DD-<slug>.html — single file, two canvases stacked vertically with a labeled header above each so it's clear which to screenshot for which use.
test -f ./design/<brand-slug>/tokens.cssIf missing, stop and tell the user to run /design-system <brand-slug> first.
Ask in one message:
1. Hero headline — the post's title, sentence-case ending in period (max ~12 words for legibility at OG thumbnail size)
2. Optional dek — 1 supporting sentence (max ~18 words)
3. Category label — short string (e.g. "field notes", "strategic insights")
4. Dateline — YYYY.MM.DD
5. Optional type-accent word — one word from the headline to set in the brand's accent colorPick ONE archetype that applies to BOTH canvases (consistency between OG and in-page hero is important for brand recognition):
chrome-led — eyebrow + headline + dateline + category. Use cautiously — it's the AI-editorial default.type-only — headline only at maximum scale; nothing else. Strongest for short titles.inverse-text — body copy fills surface; headline carved out of the type wall.object-of-content — looks like a fragment of the actual article (excerpt, pull-quote pattern, transcript line).pattern-led — typographic pattern fills surface; headline is the punctum.Then pick from:
symmetric | asymmetric | off-grid | full-bleed | splitmonochrome | single-accent | inverted (full dark inversion is the canonical v2 feature treatment for hero contexts)display-dominant | mixed-weight | mono-ledCross-artifact rule: if a recent artifact for this brand used the same archetype, pick differently. Read ./design/<brand-slug>/artifacts/*.html variation comments before deciding.
Template:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><Brand> — Blog hero — <topic></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 from DESIGN.md>&display=swap">
<style>
/* Embed tokens.css verbatim */
<contents of tokens.css>
html, body { margin: 0; padding: 0; background: #2a2a2a; min-height: 100vh; font-family: var(--type-sans-family); }
body { display: flex; flex-direction: column; align-items: center; gap: 32px; padding: 32px 0; }
/* Section labels (above each canvas — for the screenshotter, NOT part of the artifact) */
.canvas-label {
font-family: var(--type-mono-family);
font-size: 12px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: rgba(255,255,255,0.7);
align-self: center;
}
/* OG canvas — exact 1200×627 (LinkedIn/Twitter/Facebook OG spec) */
.canvas-og {
width: 1200px;
height: 630px;
background: var(--color-surface); /* or --color-ink for inversion */
color: var(--color-ink);
/* ... layout per variation ... */
}
/* In-page hero — wider format for article header */
.canvas-hero {
width: 1440px;
height: 600px;
background: var(--color-surface);
color: var(--color-ink);
/* ... layout per variation ... */
}
@page { size: 1200px 630px; margin: 0; } /* default page size for browser print export */
</style>
</head>
<body>
<!--
Variation choices:
archetype: <picked>
layout: <picked>
color: <picked>
type-press: <picked>
-->
<span class="canvas-label">→ OG card · 1200×630 · screenshot this for og:image meta tag</span>
<article class="canvas canvas-og">
<!-- hero content -->
</article>
<span class="canvas-label">→ In-page hero · 1440×600 · screenshot this for the article header</span>
<article class="canvas canvas-hero">
<!-- same content, different proportions — vary headline scale and meta placement to suit -->
</article>
</body>
</html>Adapt the inner content per archetype. For example:
background: var(--color-ink); color: var(--color-surface);); headline in creamBlog hero artifact at ./design/<brand-slug>/artifacts/blog-hero-YYYY-MM-DD-<slug>.html.>
Variation:<archetype>×<layout>×<color>×<type-press>.
>
Export OG: open in browser → DevTools → device toolbar → set viewport to 1200×630 → screenshot the.canvas-ogelement. Export in-page hero: same flow at 1440×600 on.canvas-hero.
Governed by three shared canonical references — read them, do not restate them:
Forbidden (fast scan — the references hold the full list):
hsl(230–280) family on a near-white surface. The single loudest AI tell.Required variation (every invocation):
Authenticity: prefer specific over generic everywhere — real datelines (not "today"), the brand's actual voice (not "build the future" filler), concrete CTAs over placeholders.
clamp() for headline overflow.var(--*) from tokens.css. The only literal pixel values allowed are 1px for hairlines and the canvas pixel dimensions.../design-anti-patterns.md (the hard floor — wins every conflict), ../design-principles.md (the craft floor), and ../design-variation-sop.md (direction roster + offer-3 procedure). The anti-patterns file is the canonical anti-tell list. If you find a new tell in the output, add it there.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.