house hand

A drawing hand for agents. Characters, mascots and scenes in one consistent style, drawn in Python and handed back as SVG, PNG, or a drawing that draws itself.

Use it with your agent

Copy this prompt into any agent that can run Python. It reads the skill, draws with house.py, and hands back the files.

Draw a gardener with a watering can, waving hello, in the House Hand style.

First read https://househand.yolopreneur.lol/skill.md and follow it. Download house.py from the same site and draw with it in Python, keeping its rules: three fingers and a thumb, four toes, limbs as round tubes, one ink line weight, flat colours from its palette.

Give me the SVG and a PNG. Then run drawon.py on the SVG so I also get a version that draws itself.
Change the first line to what you want drawn.

What comes back

  • SVGThe drawing as one file: flat colours, one ink line, nothing linked from outside.
  • PNGRendered from the SVG at whatever size you need.
  • A drawing that draws itselfdrawon.py replays the drawing stroke by stroke, head first. It plays in any browser, and in an ordinals explorer once inscribed.
  • VideoAn MP4 or GIF of the drawing being made, for posts and previews.

Coming next: an API and an MCP server, so an agent can ask for a drawing and get these files back without running any code, and Lottie files for apps.

The files: skill.md (how to draw in the hand), house.py (the drawing library), drawon.py (the replay), rig.py (the animation rig), llms.txt (this list, for agents).

Plates

32 drawings, in the order they were drawn. Each one draws itself when you scroll to it. Click a thumbnail to jump there.

  1. 1Inflated cube
  2. 2Smooth bean
  3. 3Tube discipline
  4. 4Reduce by half
  5. 5Edgy, not eggy
  6. 6The face grid
  7. 7Expressions
  8. 8Head turnaround, five views
  9. 9Five bodies
  10. 10Noodle limbs
  11. 11The hand library
  12. 12Feet and footwear
  13. 13Cuffs and lips
  14. 14Saturated shadows
  15. 15Strokeless matter
  16. 16Attitude line-up
  17. 17Pose sheet, twelve up
  18. 18Full turnaround, eight views and a hero
  19. 19Depth without blur
  20. 20Dark-key inversion
  21. 21Twelve-frame loop, contact sheet
  22. 22The loop itself
  23. 23Phly's character sheet
  24. 24Phly, hero
  25. 25Phly's mark
  26. 26Phly on the mug
  27. 27The tea garden
  28. 28The tea garden assembles
  29. 29Bunny
  30. 30Unicorn
  31. 31Bunny and Unicorn dance
  32. 32The dance loop

How the drawings were made

The studio had a published style guide it loved and no hand that could draw in it. So the guide was read front to back and turned into twenty-one katas, about four to a belt, each with pass conditions written as things a reviewer could see. Every drawing on this page comes out of one Python file, house.py, which grew a function per belt: head, bean, tubes, hands, feet, garments, shadows, FX, and finally figure().

Two graders, and neither of them draws. svg_lint.py checks the mechanical rules on the SVG itself: one line weight, round caps and joins, palette colours only, no gradients or filters. Cloudflare's Clef model looks at the rendered picture and answers each rule as a probability. A sheet clears its kata at 1.8 out of 3 with no single check under 0.4. When a sheet stalled, the move was to ask the grader one claim at a time and fix whichever came back weakest, never to argue with the number.

The plates replay their own making. drawon.py traces every ink line at one steady pen speed, lets each shape fill with paper as it closes, then floods in the flat colours, the shadows and the effects. house.py marks the parts of each character as it draws them, so the replay goes the way an artist works: head first, feet last.

White belt

One form at a time

Four katas on single forms: the inflated cube, the smooth bean, tube discipline, reduce-by-half. This is where the lint grader was written: constant stroke width, round caps and joins, palette-only fills, no gradients or filters. Every later sheet has to pass it before a reviewer ever sees it.

The first lesson was cheap and permanent: the producer never grades its own work. The lint is deterministic; the visual judgement goes to a separate model.

Inflated cube. Corners 9% of edge, every edge bowed, interior lines stopping short of the centre.

1Inflated cube

Corners 9% of edge, every edge bowed, interior lines stopping short of the centre.

Kata 1

Smooth bean. Seven anchors, one arced back, a belly circle at ~60% of the height.

2Smooth bean

Seven anchors, one arced back, a belly circle at ~60% of the height.

Kata 2

Tube discipline. Constant-width tubes, loop radius never below the width, round ends.

3Tube discipline

Constant-width tubes, loop radius never below the width, round ends.

Kata 3

Reduce by half. The same object at half the line count; features deleted, not shrunk.

4Reduce by half

The same object at half the line count; features deleted, not shrunk.

Kata 4

Yellow belt

The head

The head is an oblong, not an egg: 1.2× taller than wide, flattened top and bottom. Eyes sit on the upper third, the mouth just below them. Kata 8 (the turnaround) took seven attempts; the breakthrough came from asking the grader one claim at a time — closed-lobe ears and a compressed far eye lifted it from 1.77 to 1.80.

Edgy, not eggy.

5Edgy, not eggy

Kata 5, Clef 2.07

The face grid.

6The face grid

Kata 6, Clef 1.85

Expressions. Only the eyes and mouth change.

7Expressions

Only the eyes and mouth change.

Kata 7, Clef 2.08

Head turnaround, five views.

8Head turnaround, five views

Kata 8, Clef 1.80

Green belt

Bodies, limbs, hands, feet

Beans for torsos, tubes for limbs, and the two house rules the creative director set over the field guide: hands are three fingers plus a thumb (thumb 1.15×, not oversized), feet have four toes. Kata 9 needed the bean on the hip line and shoulders at 0.72× before it cleared.

Five bodies.

9Five bodies

Kata 9, Clef 1.85

Noodle limbs. Constant width, single curves, no elbows.

10Noodle limbs

Constant width, single curves, no elbows.

Kata 10, Clef 2.17

The hand library.

11The hand library

Kata 11, Clef 2.06

Feet and footwear.

12Feet and footwear

Kata 12, Clef 2.01

Blue belt

Garments, shadows, matter

Every opening is an ellipse with a lip; sleeves and trouser legs are 1.6–1.7× the limb. Every shadow is a more saturated version of its base hue, one hard-edged strokeless shape per form. FX — steam, sparkles, liquid, fire — carry no outline at all. The lint learned the saturated-shadow rule here (hue ±5°, saturation up, value down by at most 0.12).

Cuffs and lips.

13Cuffs and lips

Kata 13, Clef 1.94

Saturated shadows.

14Saturated shadows

Kata 14, Clef 2.27

Strokeless matter.

15Strokeless matter

Kata 15, Clef 2.09

Brown belt

Whole figures

The full-figure taste test. One library call, figure(), draws an on-model character from a view, a lean, arm and leg targets, hands, props and accessories. Kata 17 cleared once the sitting pose actually sat (hips at bench height); kata 18 cleared once the figures were drawn big enough for the grader to see cuffs and shadows at all — a rule the dojo now keeps: nothing under about 70px of head height on a graded sheet.

Attitude line-up. Four characters, one ground shadow.

16Attitude line-up

Four characters, one ground shadow.

Kata 16, Clef 1.83

Pose sheet, twelve up.

17Pose sheet, twelve up

Kata 17, Clef 1.83

Full turnaround, eight views and a hero.

18Full turnaround, eight views and a hero

Kata 18, Clef 1.81

Black belt

Depth, dark key, motion

Depth without blur: overlap, scale and value only. The dark-key inversion swaps the shadow family in as the base and lights the scene with a strokeless halo. The twelve-frame loop exposed a real bug — figure() had a fixed ink width, so a half-scale figure drew with double-weight line — and taught the reviewer-facing trick of putting the seam on the sheet: frames 1 and 2 repeated, ghosted, after 12.

Depth without blur.

19Depth without blur

Kata 19, Clef 1.94

Dark-key inversion.

20Dark-key inversion

Kata 20, Clef 1.91

Twelve-frame loop, contact sheet.

21Twelve-frame loop, contact sheet

Kata 21, Clef 1.85

The loop itself. Twelve frames, a second long.

22The loop itself

Twelve frames, a second long.

After the ladder

Phly, the mug, the garden

With the hand locked in, the real work: the phly.cloud mascot rebuilt as one closed silhouette with wings, cap, goggles and scarf (2.00 first time); the old mug scene redrawn with figure(); and the maths.teahub.xyz title card remade as a frame-by-frame animation from the same drawing library.

Two of those three never cleared the tangent check (0.36 against a 0.4 gate). The probe named the same thing every time: a figure or object resting on a horizontal set line. That's the rule the next version of the dojo gets — break the line with a clear overlap, or lift the thing off it.

Phly's character sheet. Hero, three expressions and the mark.

23Phly's character sheet

Hero, three expressions and the mark.

Clef 2.00

Phly, hero.

24Phly, hero

Phly's mark. Drawn to work as a favicon.

25Phly's mark

Drawn to work as a favicon.

Phly on the mug. The old scene, house hand. Tangents 0.36.

26Phly on the mug

The old scene, house hand. Tangents 0.36.

The tea garden. End frame. Tangents 0.36.

27The tea garden

End frame. Tangents 0.36.

The tea garden assembles. Nine seconds, ending on the frame above.

28The tea garden assembles

Nine seconds, ending on the frame above.

New cast

Bunny, Unicorn, and a dance

Two new cast members, each with a card of her own: Bunny (kata 23) — long lilac ears, the right one flopping, a pink dress with puff sleeves and a cotton tail — and Unicorn (kata 24) — a gold spiral horn, pony ears, a lavender mane with one pink streak, white hoof boots. The library grew a little for each: hooks to draw parts behind, between and over the body, a palm that stays wrist-wide on big hands, and opt-in fixes for small figures, where the constant 10px line closes cuffs, soles and collars up into solid ink.

Bunny cleared at 1.81. Unicorn plateaued at 1.65 over seven grades and is committed ungated, with her scores. Then the two of them got a scene. The first version held hands, and every clasp — fingers under a fist, one fist hiding both hands — came back as the worst tangent on the page; a high five with a clear gap passed every check.

Posing them in the rig showed what the sheets hid: arms that grew from under the chin, a three-quarter view that put the far shoulder over the chest so they looked hunched, and a skirt drawn as if from below, with the legs behind its opening. Redrawn with the shoulders below the chin, each limb layered whole and the skirt seen from a little above, Bunny held at 1.81, Unicorn rose to 1.70, and the dance kept every check above 0.4.

Bunny. Hero, turnaround, ear moods, colour chips and the mark.

29Bunny

Hero, turnaround, ear moods, colour chips and the mark.

Clef 1.81

Unicorn. Hero, turnaround, moods carried by the ears and the horn's sparkles, the mark. Ungated (gate 1.8).

30Unicorn

Hero, turnaround, moods carried by the ears and the horn's sparkles, the mark. Ungated (gate 1.8).

Clef 1.70

Bunny and Unicorn dance. The still. Every check at least 0.4; tangents 0.41.

31Bunny and Unicorn dance

The still. Every check at least 0.4; tangents 0.41.

The dance loop. Two seconds: two hops, and a clap on the second landing.

32The dance loop

Two seconds: two hops, and a clap on the second landing.