agentleFS
DozenTwelveDozenTwelve/Papermorph/.claude/skills/papermorph/SKILL.md

papermorph

Skill1k starsChanged 2 days agoMITView on GitHub

Make or edit animated, narrated, interactive web books from reference PDFs, animated picture books (paper-puppet films) from a story, a joke or a fairy tale, narrated documentaries about a book or an idea, built from public-domain pictures, and upright shorts for a phone feed that make one point in under three minutes. Use for book planning, storyboards, chapter animation and exercises, narration, and cover and contents pages, including "make the next chapter", "turn this story into a picture book", "make a documentary about this book", "make a short about this for YouTube Shorts" or "fix this animation". Deliver runnable static book files; bookshelf design, bookshelf registration and hosting are separate tasks.

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the tier's first file, then only what the current step needs.

    line 20
  2. Distinctive:

    Every tier shares the core:

    line 29
  3. Very specific:

    All in SKILL/scripts/; each prints its usage with --help when run with the uv run --with … its docstring's first lines name (without its …

    line 61
  4. Distinctive:

    Use the engine API and inspect individual functions when needed.

    line 75
  5. Very specific:

    Keep style.json current and short.

    line 76

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Papermorph

Papermorph makes three tiers of book on one engine:

  • Lessons, from a textbook PDF: each chapter is a short animated lesson film where the picture carries the explanation, the narration says it, and quick checks and practice happen inside the picture.
  • Picture books, from a story, a joke or a fairy tale: short films of paper puppets in front of sets, drawn in code or painted by an image model, with voices, effects and music.
  • Films, from a book, an idea or the user's argument: narrated documentaries of found public-domain pictures, words and maps moved in step with the voice, and upright shorts for a phone feed that make one point in under three minutes.

All are an SVG stage (1600×900, or 900×1600 for a short) plus a player; beats pair narration clips with timed actions. Good means alive (things act and change with weight and timing), composed (each moment reads as one picture, text beside what it names), true (motion, labels and numbers agree at every moment) and smooth (it plays without stutter, Firefox included).

What the picture should be depends on the book and on the user, so the work starts with a conversation that ends in style.json: the user's words, the look they chose, the voices, which model does which step, and later the approved chapters. Every chapter is made against it; how each beat is laid out and choreographed is yours to judge against it and the approved chapters. User requests override defaults. Re-create explanations, examples and drawings; keep source PDFs, page images and extracted text outside the static output folder and out of version control (.gitignore: *.pdf, books/*/pages/). A chapter the Skill made is a first cut: review rounds and the user's viewing come before it is published.

Which tier

Read the tier's first file, then only what the current step needs. Every file below is linked from here; none needs another to be found.

The user bringsTierStart withThen, as the step needs
A textbook PDF (a course book too)Lessonslessons.mdintake.md · authoring.md · diagrams.md (tier 1) · scenes.md (tier 2) · assets.md · questions.md · checks.md · cover.md · courses.md (citations, item bank, SCORM: only when the book calls for them)
A story, a joke, a fairy tale, or a story book's PDFPicture booksstories.mdpuppets.md · painting.md (a painted look)
A book, an idea or a stretch of history to explain as a narrated filmFilms: documentaryfilms.mddocumentary.md
One point to make in under three minutes, upright, for a phone feed (YouTube Shorts, TikTok, Reels), or a long film to recutFilms: shortsfilms.mdshorts.md

Every tier shares the core:

FileWhat it holds
core/style.mdhow to ask the user, the models step, style.json
core/publish.mdnew_book.py, language, minutes, preview and delivery, video export
core/sound.mdthe narration file, voices, levels, effects, music, captions
core/review.mdseeing your own work in motion, frames, smoothness, director rounds
core/team.mdmaking chapters with subagents, the coordinator, workers in parallel
core/engine.mdthe player and drawing API, timing, camera, performance, traps

Start with the tier's intake whenever books/<book>/style.json does not exist yet; reuse answers and approvals already given. The reference books on https://papermorph.diamonddoge.org/ are the bar: the maths and science books for lessons, Joke Collection and Little Red Riding Hood for picture books, Madness and Civilization, Shooting an Elephant (interactive) and The Pandemic for documentaries, the Madness and Civilization shorts for shorts.

Project layout

books/<book>/                  private: source, style.json, storyboards, art, review/ (tier files list their own)
content/<book>/chNN/           narration.<lang>.json and the voice cache
tools/<book>/                  tests, audio scripts, evidence
site/<book>/                   the static book (only this is delivered)
  index.html                   cover and contents, or a series page
  lib/                         the engine (synced by engine.py), lib/book.css (this book's settings), the tier's kit, the book's own pieces
  img/                         the book's pictures
  chNN/index.html, audio/<lang>/   a chapter or episode, its beat MP3s and timings.js (films and picture books: audio/sfx/, audio/bgm/)

SKILL means this skill's absolute folder; <book> is the book slug, <lang> its primary language code. new_book.py starts a book of any tier (core/publish.md).

Needs: uv, ffmpeg/ffprobe, Edge TTS network access (or Kokoro, local), github.com for engine.py when the repository's engine/ folder is not at hand, an OpenRouter key only for the paid steps the user chooses (paint.py, eleven.py, video.py; paint_openai.py takes an OpenAI key), and Playwright browsers (uv run --with playwright playwright install chromium firefox; where Playwright's Chromium does not run, set CHROME to an installed Chrome, Chromium, Brave or Edge). Preview: python3 SKILL/scripts/serve.py 8765 site (no browser caching).

Scripts

All in SKILL/scripts/; each prints its usage with --help when run with the uv run --with … its docstring's first lines name (without its packages even --help stops on the import).

ForScripts
Every booknew_book.py start a book folder · serve.py preview without caching · engine.py sync the engine into books · tts.py narration and word times · level.py even loudness · lint.py static checks · check.py page errors, console warnings and beat lengths in Chromium and Firefox · shot.py beat screenshots · strip.py storyboard sheets and motion strips · still.py stretches where nothing moves · playlog.py sounds and captions against the picture · perf.py Firefox frame times · export.py MP4 and .srt · sfx.py synthesized effects
Lessonsoutline.py and split_pages.py page map and chapter text · check_blank.py empty openings · overlap.py arrows through text · sprites.py image processing steps · refs.py verified citations · items.py question bank · scorm.py LMS package
Picture booksmouths.py mouth shapes · join.py one clip per scene · bake_sets.py set layers · bake_puppets.py puppet bitmaps · paint.py / paint_openai.py image-model pictures · painted.py place them in the book
Filmscommons.py public-domain pictures and recordings with their licences · prep.py print, line and full-bleed treatments · trace.py drawings that draw themselves on · video.py a clip from a still · frames.py a clip as treated frames · geo.py the map kit's data from Natural Earth · eleven.py ElevenLabs narration with word times · music.py a track cut to the film, and the bed in the voice's gaps · safe.py words outside an upright film's safe area

silence.py, ledger.py (the one cost ledger: date, chapter, file, model, what, cost) and browsers.py are helpers the others import.

Context

  • Talk with the user from the main conversation: intake, and every sheet and choice of the pilot. When subagents are available, later chapters are made as a team, each step on the model the user chose (core/team.md); without them, run the same steps in the current agent with file-based state.
  • Use the engine API and inspect individual functions when needed; copy kit files rather than reading their full source as instructions.
  • Keep style.json current and short; chapter status, errata and historical feedback stay in chapters.md and chapters/chNN.md.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.