Reference-grade guide to building and shipping icon systems (grids, optical sizing, variable axes, SVG delivery) and imagery (aspect ratios, art direction, modern formats, performance) with copy-pasteable code, exact numbers, and cross-device rules.
SkillScore100Maintained
Automatic
◆Frontend / UI pack
Last verified 8/3/2026
What it changes
Passed 22 of 22 test cases with the skill, and 21 of 22 without it.
Without skill95%
With skill100%
Checks it passed that the model alone missed
Recommends setting SVG fill or stroke to currentColor.
1 fixed21 passed either way0 still failing0 broke
Pass-rate lift
+5 pp
Tokens
+196%
Agent turns
0%
Response time
-15%
Model gemini-3.6-flashMeasured 8/3/2026v122 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
What's inside
The instructions your model reads when the skill loads.
SKILL.md236 linessingle file
Iconography & Imagery
Icons and images carry most of a UI's pixels and most of its weight. Get the grid, the optics, and the delivery format right and everything reads sharper and loads faster. This is the working reference: build the icon set on a disciplined grid, ship it as inline SVG or a sprite, and serve images as AVIF/WebP with a reserved aspect-ratio box.
1. Icon grid & construction
Every icon lives on a square pixel grid. Standardize one base, scale by clean multiples.
Base grid
Used by
Live area (padding)
Stroke
Corner radius
16px
dense toolbars, inline text icons
14px (1px)
1.5px
1px
20px
compact UI (tables, menus)
18px (1px)
1.5px
1.5px
24px
default UI standard (Material)
20px (2px)
2px
2px
40px
large touch targets, feature tiles
34px (3px)
2.5px
3px
48px
hero / marketing
40px (4px)
3px
4px
Keyline shapes anchor optical consistency. In a 24px box the canonical keylines are: square 18×18, circle ⌀20, vertical rectangle 16×20, horizontal rectangle 20×16. Snap each glyph to the keyline that matches its dominant shape so a circle (◎) and a square (▣) feel the same visual weight even though their bounding boxes differ.
Pixel-snap all anchors to whole or half pixels at the base size. A 2px stroke centered on a whole-pixel coordinate renders crisp; a stroke on x=12.37 renders blurry. For odd stroke widths (1px) center on the half-pixel (x=12.5) so the stroke lands inside one pixel column; for even widths (2px) center on the whole pixel.
Optical alignment over mathematical centering. A triangle (play ▶) centered by its bounding box looks left-heavy — nudge it ~1px right toward its visual centroid. Asymmetric glyphs almost always need a manual optical nudge.
Consistent corner radius across the whole set. Don't mix 1px and 4px corners; pick one radius scaled per base size.
Terminal & joint consistency: choose round vs. butt line caps and round vs. miter joins once (stroke-linecap, stroke-linejoin) and apply set-wide. Mismatched caps read as two different designers.
Optical sizing: a stroke that reads as 2px at 24px becomes hairline at 16px and chunky at 48px. Maintain apparent weight by increasing relative stroke at small sizes and drawing dedicated small variants (don't just transform: scale() a 24px icon down to 16px — it goes muddy). Material ships 20/24/40/48 masters for exactly this reason.