manimvox-core
Skill2 starsChanged 21 days agoMITView on GitHub
The authoring contract for manimvox episodes: Episode structure, narration timing, the safe stage, the kit's components and colours, writing rules for narration and visuals, accuracy rules, and lessons already paid for. Read before writing or editing any episode file (episodes/epNN_*.py) or briefing someone who will.
In this repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- manimvox-animationSkill
- manimvox-blocksSkill
- manimvox-cliSkill
- manimvox-conceptSkill
- manimvox-creativeSkill
- manimvox-paperSkill
- manimvox-playlistSkill
- manimvox-prSkill
- manimvoxSkill
- manimvox-voiceSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 1 is distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Write the script first: episodes/epNN_name.md, critiqued as manimvox-creative's script guide says.
- Very specific: line 16
Write episodes/epNN_name.py, and register it in series.json under episodes.
- Very specific: line 17
Run manimvox draft epNN --every 5.
- Very specific: line 18
Read every contact sheet in sheets/epNN_name/ (or, if you cannot view images, run manimvox check layout epNN and read its report).
- Very specific: line 20
Run manimvox render epNN. This needs the narration voice.
- Distinctive: line 63
Stage: keep everything inside x from -6.6 to 6.6 and y from -3.45 to 3.15.
- Very specific: line 65
Narration drives time: Use say, steps or narrate.
- Very specific: line 66
No LaTeX: Never use Tex, MathTex, Integer, DecimalNumber or Manim's Code.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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.
Files
Writing a manimvox episode
An episode is one Python file in episodes/: a class that subclasses Episode (or Episode3D, for a camera that tilts) and implements build(). Narration and picture are written together, so the video stays in step with the voice. For command flags and output, see manimvox-cli. For the voice, see manimvox-voice.
Read references/author-guide.md before writing. It holds the kit cheat sheet, the lessons already paid for, the writing and accuracy rules, and the report you owe.
The loop
- Write the script first:
episodes/epNN_name.md, critiqued as manimvox-creative's script guide says. The code follows it line for line. - Write
episodes/epNN_name.py, and register it inseries.jsonunderepisodes. - Run
manimvox draft epNN --every 5. It takes about 30 seconds and uses no voice. - Read every contact sheet in
sheets/epNN_name/(or, if you cannot view images, runmanimvox check layout epNNand read its report). Fix overlaps, text off the stage, clutter and empty scenes. - Repeat steps 3 and 4 until
layout check: okand the sheets read well. - Run
manimvox render epNN. This needs the narration voice; if it asks to download a model, ask the user first (and with no way to ask, the answer is no). - Done means the render printed
audio check: ok. A render without it is not finished.
The skeleton
Save as episodes/ep01_vectors.py and register it:
from manimvox.kit import *
class Ep01(Episode):
EP = 1
TITLE = "What is a vector?"
TAGLINE = "An arrow, a list of numbers, and why they are the same thing"
NCHAP = 1
def build(self):
move = arrow(ORIGIN, RIGHT * 3 + UP * 2, color=ACCENT) # cold open: the problem, drawn
self.say("A game moves a ship three steps right and two up.", Create(move))
self.intro("How does a game store that move? By the end, you will read it as two numbers.",
question="How does a game store a move?") # intro() clears the cold open
self.chapter("A move is an arrow")
v = arrow(ORIGIN, RIGHT * 3 + UP * 2, color=ACCENT, label="v")
self.say("Draw the move as an arrow from where the ship started.", Create(v))
nums = T("[3, 2]", 40, ACCENT).next_to(v, RIGHT)
self.say("Three right, two up. So the arrow is the pair three, two.", FadeIn(nums))
self.beat()
self.outro(["An arrow and a pair of numbers are the same move"],
"To recap: a move is an arrow, and an arrow is a pair of numbers. Next: adding two moves.",
next_title="Adding vectors", answer="As two numbers: three right, two up. That pair is a vector.")"episodes": [{"n": 1, "stem": "ep01_vectors", "cls": "Ep01", "title": "What is a vector?"}]NCHAP must equal the number of self.chapter(...) calls. stem is the file name without .py, starts ep, and holds only letters, digits, _, - and . (no /, spaces or ..); cls is the class name.
Rules that matter most
Each is expanded in the author guide.
- Stage: keep everything inside x from -6.6 to 6.6 and y from -3.45 to 3.15. The header and progress bar belong to the kit.
- Colours are theme roles (
ACCENT,INK,ERROR, ...), never hex codes.ACCENTmeans "new" or "the point";ERRORmeans wrong or refused. - Narration drives time. Use
say,stepsornarrate. Never hard-code a wait to match speech: a draft estimates the length, the final uses the real audio. - No LaTeX. Never use
Tex,MathTex,Integer,DecimalNumberor Manim'sCode. Write formulas withTor the kit'scode()and Unicode. - Arrows:
arrow(a, b)points fromatoband returns a group; animate it withCreate, notGrowArrow. - Structure:
intro,chapterandoutrostill structure the episode, but their look is chosen inDIRECTION.md(direction), not fixed. A usual shape: the opening shows a problem and asks one question; each chapter opens on something concrete, ends on a takeaway withself.beat(), and bridges to the next; the outro answers the opening question and says what is next, with a recap of the chapters' words when the direction asks for one (skipped at about a minute). Vary the seams:transition=onchapter, never the same at every one. A heading on every scene is a tell; use one where the claim needs saying. - Narration style: spoken English, short sentences, one idea each, at most 45 words a line. No hype. Define each term the first time it is spoken.
- Visuals: one idea per scene, a diagram that moves over a bullet list, the picture shows what the voice says at that moment.
- Accuracy: say only what
FACTS.mdholds. A designed claim is said as designed; an open question is shown as open. Never invent a number, name, endpoint or path. - Scope: edit only your own
episodes/epNN_*.py. Work around a kit bug in your file and report it.
What you hand back
Your report lists the episode file, its draft length and chapters; every statement not in FACTS.md with its source and label; any kit workaround; and the pronunciations to add to series.json. The exact list is in the author guide.
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
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.

