--- name: pixel-art description: Make modern, polished pixel-art animated videos (MP4) with code — indie-game look (Celeste / Eastward / Stardew-level scenes, original), 480×270 art upscaled ×4 with nearest-neighbour, limited palettes (day / dusk / night) with Bayer dithering, parallax skies, hills, forests and towns, dithered light and weather, auto-outlined procedural pixel characters with 16 expressions, walk cycles, jumps and held props, emote bubbles, dither / diamond / iris / block transitions and crisp RPG dialogue-box captions (Latin + CJK). Canvas 2D in headless Chrome, encoded with ffmpeg. Use when a reference video or brief calls for pixel art, 8-bit / 16-bit, retro game, JRPG, cozy-game or 像素風 / 像素動畫 / 點陣 looks, or when the video-clone router picks the pixel-art style. --- # Pixel art engine Every frame is a pure function of `t`. Shots draw into a **480×270 software framebuffer** (world unit = one art pixel), `ENGINE.end` upscales it ×4 to 1920×1080 with nearest-neighbour, and `window.overlayHook` draws crisp pixel captions on top at full res. Same render contract and `render.mjs` CLI as painted-animation. ## Workflow 1. **Scaffold:** `bash .claude/skills/pixel-art/scripts/new_project.sh [--keep-demo]`, then **read `GUIDE.md` in full** (look rules, full API, character system, review loop). Look at `docs/model-faces.png`, `docs/model-views.png`, `docs/kit-sheet.png`, `docs/demo-sheet.jpg`. 2. **Storyboard** with reads per shot (as in painted-animation). Pick a palette per shot (`pal('day'|'dusk'|'night')`) and a colour arc. 3. **Build one file per shot** in `src/scenes/`, IIFE-wrapped, ending with `shots([[t0, fn], ...])`; add a `