Loading...
Loading...
Draws hand-authored SVG spot illustrations in a halftone line style for design and coding scenes. Identifying traits are a confident black line with a slight hand wobble and contours left open, grey tones made only of fine halftone dots clipped to shapes, a few solid black masses (hair, leaves, a bag, a black tee), warm off-white paper and no colour at all. Covers the two-ink palette, line weights, the open-contour and stipple techniques, a seeded compiler that turns tone tags into dot fills, rubbery long-limbed characters and expressive hands, doodles, floor pools and a render-and-critique loop. Use when someone asks for halftone, stipple, dotted, risograph-like, newsprint, black-and-white, monochrome line, editorial line or zine-style illustrations, or for empty states, onboarding, 404 pages, blog headers, feature spots and marketing cards in that look.
npx skill4agent add mengto/skills illustration-halftone-lineillustration-one-lineillustration-two-colour-brushillustration-line-interiorexamples/| Role | Hex | Where it goes |
|---|---|---|
| Paper | | the full-bleed card rect, and the fill of every shape that must hide what is behind it |
| Ink | | every line, every halftone dot, every solid black mass |
stroke="#f4f1ea"stroke="#111" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"| Element | Width |
|---|---|
| Figures, hands' outer contour, furniture, shoes' outline | 2.0 (1.9–2.1) |
| Screens' inner frame, window glass, plants, small props | 1.6–1.7 |
| Finger and thumb creases, folds, cuffs, hems, hood seams | 1.3–1.6 |
| Keyboard keys, nail ticks, text lines on paper props | 1.1–1.3 |
| Squiggles, braces, radiating ticks | 2.0–2.3 |
M366 74 H410 C420 74 428 82 428 92 V138 M426 160 C424 168 418 174 410 174 H318 M300 174 H166 …stroke="none"scripts/halftone.mjs<filter id="xx-wob">--seedflat 0.19flat 0.36–0.38linrad<g transform="translate(cx cy) rotate(a)">M-16 18 C-26 0 -20 -24 4 -26 C20 -26 23 -10 22 -1 L31 9 Q29 11.5 23 12 C24 18 23 24 17 28 C11 32 0 31 -8 24 Z${H.head(x, y, rot, dir, hair, { back, eye, smile })}dir(x, y)rotr 1.8–1.9H.hair.glasses()H.hair.curly(t)'flat 0.3'H.hair.bun()H.hair.ponytail()H.hair.long.backback.frontH.hair.glasses()${H.limb([[x,y] shoulder, elbow, wrist], [halfWidths], tone)}'flat 0.19''''black'references/craft.md${H.hand(x, y, rot, sc, thumb)}scripts/halftone.mjs(x, y)thumb<g transform="translate(x y) scale(-1 1)">${H.hand(0, 0, rot, sc, false)}</g>${H.shoe(x, y, dir, sc)}(x, y)x + 8·diry − 14rotate(−8 hipX hipY){ }</>${H.pool(cx, cy, rx)}</><defs><rect id="xx-paper" width="480" height="360" fill="#f4f1ea"/>rx<g id="xx-frame" transform="translate(dx dy)">card.src.svg@P@<!--DEFS--><defs><stip>${…}node scripts/halftone.mjs card.src.svg card.svg --prefix oh- --seed 41node scripts/halftone.mjs demo /tmp/halftone-demo.svg${…}H.poolH.EH.shoeH.handH.limbH.headH.hair.*<gen>…</gen><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 360">
<rect id="@P@paper" width="480" height="360" fill="#f4f1ea"/>
<defs><!--DEFS--></defs>
<g id="@P@frame" transform="translate(0 0)">
<g id="@P@art" filter="url(#@P@wob)" stroke="#111" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none">
${H.pool(120, 307, 24)}
<path d="M40 307.6 H150" stroke-width="2"/>
…
</g></g></svg>d<path d="M98 190 C94 214 … Z" fill="#f4f1ea" stroke="none"/>
<stip d="M98 190 C94 214 … Z" t="flat 0.19"/>
<path d="M98 190 C94 214 90 236 88 252 C86 268 82 284 79 299 M96 300 C98 284 102 268 104 254"/><stip … t="flat 0.36"/>fill="url(#@P@dl)"url(#@P@dm)<stip>flat tlin x1 y1 t1 x2 y2 t2rad cx cy r t0 t1noise a scale<stip>${H.E(cx, cy, rx, ry)}<path d="…hair…" fill="#111"/><path d="…" stroke="#f4f1ea" stroke-width="1.3"/><path d="M60 268 C53 259 60 248 67 253 C74 258 65 265 63 256 C61 245 74 236 81 243 C88 250 75 257 75 246 C75 233 91 224 96 234" stroke-width="2.3"/>references/craft.mdreferences/craft.md#888opacity--paletteH.hairpair-programming.svgtrain-ride.svgdesign-critique.svgcard.src.svg<stip>node scripts/halftone.mjs card.src.svg card.svg --prefix oh- --seed 41node scripts/render.mjs card.svg card.pngnode scripts/render.mjs --sheet sheet.png examples/*.svg card.svgnode scripts/render.mjs card.svg hand.png --zoom 180,170,60,50 --scale 8#ff0000#0000ffH.handreferences/craft.mdnode scripts/lint.mjs card.svg --prefix oh- --palette style.json#f4f1earx#111#f4f1eascripts/lint.mjs--prefix--palette style.json