The sharpest single insight in Canon’s motion shelf: a sprite that only spins in the picture plane reads as confetti no matter how good the artwork is. What the eye checks for is the tumble — the leaf turning about its own long axis, showing its face, thinning to nothing edge-on, opening out again. On 2D canvas that’s one line (ctx.scale(Math.cos(spin), 1) crossing zero); in 3D it’s the reason you instance quads and never point sprites, which always face the camera and can never go edge-on.
The second insight compounds the first: lateral drift is driven by the same angle as the tumble, ninety degrees out of phase — a leaf slips sideways when it knifes through the air edge-on and stalls when it presents its face flat. One coupled term instead of an independent sine, and the path suddenly looks aerodynamic instead of like a wind easing bug. The rest covers both-face sprite baking, density-versus-count math, depth layering, color under tone mapping, prefers-reduced-motion, and visibility pausing.
Works for maple, sakura, blossom, ash, and snowfall shapes — anywhere drifting foliage has to read as the real thing.
Install: copy agent-skills/web-design/falling-leaves/ from the repo into your .claude/skills/ directory.
Gotcha: it opens by telling you when not to use it — for a bounded atmosphere of generic motes it points you at the author’s sibling ambient-section-particles skill instead, which isn’t bundled in this folder. The self-aware scoping is part of why it made the cut.