Pre-release
Icon generation that cannot drift.
The model never emits a coordinate. It gets five primitives: rect, circle, line, dot and part. It picks what to draw and where. The library picks how, so every node lands on the grid and every radius comes from a measured tier. It can't express free path data, so it can't write drift.
One email, when it ships. Nothing else.
Five lines, and not one number the model chose
icon square-check
keyline square
rect 4,4 16x16 r3
line 8,12 11,15 16,10
fitfit and center are there so the model never does spatial arithmetic. Scaling to the keyline is a pure function of the content, so the library does it exactly.
Ask for something off-spec and it says no, at length
line segment 2 (11,15.75 → 14.5,10.5) runs at 123.69°, 11.31° off
the nearest axis (135°). Off-axis edges are legitimate — 29.3% of
stroked icons in the set have one, on rational slopes between two
grid points — but they are asked for, not arrived at: pass
`offAxis: true` (`off-axis` in the DSL) if that is the shape, or
move an endpoint onto the axis.The escape is real. You just have to ask for it by name, and it stays visible in review. Off-axis edges aren't a bug to stamp out. They're 29.3% of the set, and they sit on rational slopes because the edge runs between two grid points. Refusing all of them would refuse a third of the corpus.
It learns your set's vocabulary, then draws in it
iconsmith parts clusters every subpath in a set into reusable marks. Over blode-icons that's 199 parts across 1,863 icons, the top 50 covering 86% of instances, 61 of them named by hand. Nothing can reason about p0031. Everything can reason about cloud.
- stroke
- circle
- diagonal
- square
- chevron
- rect
- sparkle
- semicircle
- elbow
- corner-bracket
- corner
- arrowhead
- hexagon
- arc-quarter
- oval
- oblique
- rect-wide
- open-rect
- capsule
- check
- bubble
- ring-open
- keyframe
- open-rect-narrow
- square-open
- open-rect-wide
- shield
- bolt
- arc-c
- triangle
- arch-wide
- car
- half-disc
- arc-shallow
- capsule-wide
- arch-small
- arch
- check-small
- rect-open
- dome
- squircle
- open-rect-deep
- elbow-tall
- capsule-small
- cloud
- pencil
- page-open
- shoulders
- pencil-tip
- arc-long
- bell
- squircle-wide
- mouse
- circle-cut
- star
- drop
- bag
- pointer
- speaker
- page
- triangle-large
The house spec is measured, not asserted
I derived every constant from 2,085 icons. 97.5% of stroked shapes use stroke 2. The radius tiers match 78.4% of the 6,188 corners I measured. The values I'd written from the Cursor article matched 23.9%.
Cursor is the inspiration. The corpus is the specification.
Four numbers, never one
- floor
- a random icon scored against the target
- baseline 0.737
- the measured median between two mature icon sets drawing the same concept
- treatment
- what the pipeline scored
- ceiling 1.0
- pixel identity
Every eval prints all four. Anything above 0.95 gets flagged SUSPECT, because at that point the harness is comparing something to itself.
It's not on npm yet.
This started as one tool that outgrew its own icon set. Leave an address and I'll send one email the day you can install it.
One email, when it ships. Nothing else.