--- name: anime-cel description: Make Japanese TV-anime style videos (MP4) with code — cel-shaded characters with tapered line art, big detailed eyes, hair clumps with a specular band, comedic anime reactions (sweat drop, anger vein, sparkle eyes, ≥< eyes, dot eyes, tears), painted skies with cumulus clouds, school/street/classroom/rooftop sets with time-of-day palettes, speed/focus lines, impact frames, dramatic zooms, smears, sakura petals and anime subtitles (CJK). Canvas 2D rendered frame by frame in headless Chrome, encoded with ffmpeg. Use when a reference video or brief calls for anime / 動畫 / 日系動畫 / アニメ / cel-shaded / slice-of-life / school romance / shōnen-style reactions, or when the video-clone router picks the anime-cel style. 2D only; characters are original (Hina, Ren) or new ones built on the same rig. --- # anime-cel Modern TV-anime look drawn entirely by code: characters with confident tapered line art (heavier on the shadow side), flat cel colour + one hard-edged shadow tone + a rim highlight, large layered eyes, hair built from pointed locks with an "angel ring" highlight; line-free painted backgrounds; anime staging effects. Every frame is a pure function of `t`. Read **[GUIDE.md](GUIDE.md)** in full before building anything. Model sheets in `docs/`: `faces-hina.jpg`, `faces-ren.jpg` (19 expressions each), `turns.jpg` (front → 3/4 → profile), `bodies.jpg`, `motion.jpg` (stances, walk, run), `hands.jpg`, `sets.jpg`, `fx.jpg`, and `demo-sheet.jpg` (the demo film). ## Workflow 1. **Scaffold** `bash .claude/skills/anime-cel/scripts/new_project.sh ` (`--keep-demo` keeps the example). It copies `template/`, unhooks the demo, runs `npm install`, checks node/ffmpeg/Chrome. 2. **Storyboard** each shot with its reads (what the viewer must understand, in order, with times) and the anime staging you will use (establishing pan, cut on action, focus-line BG for the emotional beat, impact frame, reaction close-up…). Set `duration` in `src/config.js`. 3. **Build one file per shot** in `src/scenes/` (IIFE ending in `shots([[t0, fn]])`, add its `