← ClaudeAtlas

emoting-on-8x8listed

Design legible expressions and custom animations for the ESP32-S3 8x8 LED matrix (Claude's expression channel, matrix_express / matrix_animate / the CANNED library in mcp_server/expressions.ts). Use whenever creating, redesigning, or debugging a glyph or animation that has to read on the physical 64-pixel panel, including when an expression "doesn't read," looks like one flat color, flickers, or freezes the board.
srfinch17/peckworks-skills-laboratory · ★ 0 · AI & Automation · score 72
Install: claude install-skill srfinch17/peckworks-skills-laboratory
# Emoting on the 8×8 panel The matrix is Claude's expression window. The hard part isn't drawing; it's that a 64-pixel panel running at **brightness 5** can show almost no detail and almost no color nuance. Everything here exists to make a human identify the thing **at a glance** (the silhouette test). You can't see the LEDs; the user is your eyes; fire, ask, iterate. ## First decide: expression or firmware? Two build paths; pick before you start, because they deploy completely differently: - **Frame-based expression**: a glyph/loop you author pixel-by-pixel and push as frames. Design it HERE with `matrix_animate`, `save_as` to ship. Zero deploy, instantly reversible. Use for emotes, status, wait/idle bits; anything ≤24 hand-drawn frames. - **Firmware animation**: a generative real-time mode (fire, particles, snow, anything parametric or endless). That's a new `anim_*.ino` and needs a **flash**. **Switch to the `add-animation` skill** for the 6-step wiring; then come back here for the *legibility* craft (brightness bands, silhouette, color choice) while you design the look. Rule of thumb: **you author the pixels → expression; the board computes them → firmware.** The three tiers below are all within the *expression* path. ## The iron rule: iterate live, promote winners There are three tiers, with very different costs. Don't prototype in the expensive one. | Tier | How | Cost | |---|---|---| | **On-the-fly** | `matrix_animate` (raw frames) | zero (instant, pri