← Email LoveCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Email Love
Snapshot Sep 30, 2026 · 23:14 UTC · version 4.11.3
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "email-love-figma-quality-gates",
"description": "Audit an Email Love Figma design-system migration batch or reusable module before it is approved. Use for independent QA, completion review, or regression checks involving mobile icon geometry, real image fills, cropped social icons, component-property semantics, source fidelity, Email Love structure, or differences between the Figma canvas and the Email Love plugin Preview/export. Do not use this skill to build, migrate, or repair the modules themselves; route those tasks to the Email Love Builder, Design System Migration, or Template Repair skill first, then return here for acceptance.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 488
},
{
"relative_path": "references/quality-gates.md",
"size_in_bytes": 7330
},
{
"relative_path": "references/run-learnings.md",
"size_in_bytes": 4890
},
{
"relative_path": "references/snapshot-schema.md",
"size_in_bytes": 5675
},
{
"relative_path": "scripts/check_icon_perimeter.py",
"size_in_bytes": 6853
},
{
"relative_path": "scripts/validate_batch_snapshot.py",
"size_in_bytes": 30202
}
],
"skill_md_contents": "---\nname: email-love-figma-quality-gates\ndescription: Audit an Email Love Figma design-system migration batch or reusable module before it is approved. Use for independent QA, completion review, or regression checks involving mobile icon geometry, real image fills, cropped social icons, component-property semantics, source fidelity, Email Love structure, or differences between the Figma canvas and the Email Love plugin Preview/export. Do not use this skill to build, migrate, or repair the modules themselves; route those tasks to the Email Love Builder, Design System Migration, or Template Repair skill first, then return here for acceptance.\n---\n\n# Email Love Figma Quality Gates\n\nTreat this as an independent acceptance layer. The builder's report is evidence to inspect, not proof that a module is ready.\n\n## Route before reviewing\n\n1. A whole library, legacy inventory, foundations, tokens, or several component categories\n is a design-system migration. Use `email-love-design-system-migration` for the work.\n2. One new campaign or sequence assembled from an existing library is builder work. Use\n `email-love-figma-builder`.\n3. One existing module or template with a rendering defect is repair work. Use\n `email-love-template-repair`.\n4. Use this skill after any of those workflows to accept or reject the result.\n\nIf scope expands during a build, reroute immediately. Do not let a campaign build silently\nturn into a library migration.\n\n## Load only the relevant references\n\n- Read [quality-gates.md](references/quality-gates.md) for every audit.\n- Read [snapshot-schema.md](references/snapshot-schema.md) when producing or validating the\n machine-readable audit snapshot.\n- Read [run-learnings.md](references/run-learnings.md) when explaining why these gates exist\n or reviewing a similar failure pattern.\n\n## Audit workflow\n\n### 1. Establish the authority\n\nRecord the source reference for each module and which design is authoritative. If the\nsource is missing or ambiguous, return `audit incomplete, missing source authority`. Do not\napprove from memory or from a prose build report.\n\n### 2. Enforce the proof batch\n\nBefore a normal migration batch, require a proof batch of no more than four modules. Cover\nas many of these risk classes as the source contains:\n\n- a full-width or deliberately cropped photo;\n- a grouped icon-and-text row;\n- a multi-column module with component properties;\n- a footer or social-icon row.\n\nDo not release later modules until every proof module passes production desktop and mobile Preview/export. If the exporter is unavailable, stop after the proof batch and request the\nhuman Preview check. Canvas evidence cannot waive this gate.\n\n### 3. Capture an audit snapshot\n\nCreate one JSON snapshot using [snapshot-schema.md](references/snapshot-schema.md). Measure\nthe actual nodes and component-property bindings; do not copy claims from a report. Include\nthe selected mobile viewports and separate desktop and mobile exporter status.\n\n### 4. Run the structural and geometry validator\n\n```bash\npython3 scripts/validate_batch_snapshot.py path/to/audit-snapshot.json\n```\n\nTreat every reported error as a failed gate. Warnings need a written disposition. The\nvalidator fails closed: missing inventories, an empty module list, a census mismatch, or a\nmeasurement that is not a finite number are all errors, never silent defaults. It is\ndeliberately conservative about grouped icons: it subtracts both section and column padding\nbefore comparing the resolved mobile box to the asset's natural width. Documented\nrender-contract exceptions (top-aligned multi-column axes, bordered-group headroom) are\ndeclared in the snapshot, not waived by the checker. A passing snapshot is snapshot\nvalidation only, never production acceptance.\n\n### 5. Inspect icon and social assets\n\nExport each icon node at 2x as a PNG, then run:\n\n```bash\npython3 scripts/check_icon_perimeter.py path/to/icon.png path/to/social-icon.png\n```\n\nThe check is a heuristic with four outcomes: `pass`, `needs-review` (alpha touches an edge\nor the inset is thin: compare the source crop and production render before approving),\n`not-applicable` (a fully opaque asset, where alpha proves nothing about the crop and a\nvisual source comparison is still required), and `error`. Only `pass` is automatic. Inspect\none file per independently linked social icon, do not approve an unverified sprite crop,\nand never alter approved brand artwork merely to satisfy the heuristic.\n\n### 6. Compare source and production renders\n\nCompare a fresh Figma screenshot with the authoritative source, then compare both desktop\nand mobile Email Love plugin renders. Check crop, focal point, aspect ratio, type hierarchy,\nspacing, stacking, link independence, and the false state of every BOOLEAN property.\n\nThe exporter render is the arbiter. A clean canvas proves only the canvas.\n\n### 7. Report gate-by-gate\n\nUse exactly one of these completion states:\n\n- `complete`: source, structure, assets, properties, canvas, desktop export, mobile export,\n and handoff gates all pass;\n- `canvas and structure ready, exporter verification deferred`: production render evidence\n is unavailable;\n- `batch rejected, repair required`: one or more gates fail;\n- `audit incomplete, missing source authority`: fidelity cannot be judged.\n\nNever shorten a deferred state to `complete`, `fixed`, or `verified`.\n\n## Maintain the package\n\nRun both script self-tests after editing this skill, then the repository's own validator\nfrom the repository root:\n\n```bash\npython3 scripts/validate_batch_snapshot.py --self-test\npython3 scripts/check_icon_perimeter.py --self-test\n```\n"
}SHA-256: 91900537ac47a8aaff25b10dd399ae9768d752ab238319a1e9dd353be9696bbb