--- name: crayon-storybook description: Make warm children's picture-book animations (MP4) drawn in crayon, coloured pencil and pastel on cream drawing paper — waxy crayon scribble fills broken by paper tooth, coloured-pencil outlines, slow 8 fps line boil, page-turn transitions, picture-book page framing and hand-lettered CJK storybook captions. p5.js + p5.brush rendered frame by frame in headless Chrome, encoded with ffmpeg. Use when a reference video or brief calls for a crayon / colored-pencil / pastel / kids' drawing / picture-book / bedtime-story / 繪本 / 蠟筆 / 色鉛筆 / 童書 look, or when the video-clone router picks the crayon-storybook style. --- # Crayon storybook A drawing engine for ReelMimic. Every frame is a pure function of time `t`: `studio.html` loads p5.js + p5.brush, the crayon look library, the cast and your scene files; each shot draws the whole 1920×1080 frame; `render.mjs` renders contact sheets, strips and crops for review, or all frames in parallel, and ffmpeg encodes the MP4. **Provenance.** The runtime (`template/src/core.js`, `timeline.js`, `render.mjs`, `studio.html`, the render contract and helpers: `paint`, `inkLine`, camera, `shots`, `glow`, `jump`/`take`/`spring`, `boilSeed`…) derives from the **painted-animation** skill (ClaudeAnimationBase, MIT © John Heibel / tuzhechen2005 — see `template/LICENSE`). The look (`crayon.js`), the characters (`cast.js`), the page turn, the page finish and the captions are this engine's own. ## Workflow 1. **Scaffold** — `bash .claude/skills/crayon-storybook/scripts/new_project.sh ` (add `--keep-demo` to keep the example). It copies the template, runs `npm install` (which also writes the patched p5.brush build, see gotchas) and checks node / ffmpeg / Chrome. Then **read [GUIDE.md](GUIDE.md) in full** and look at `docs/demo-sheet.jpg` and `docs/cast.jpg` with Read. 2. **Storyboard** in writing: shots, reads (what the viewer must understand, when), transitions, captions. 3. **Build** — `src/config.js` (`duration`, `bpm`, `fps: 24`); one IIFE file per shot/scene in `src/scenes/`, ending with `shots([...])`; add its `