manim
Scannednpx machina-cli add skill johnlarkin1/claude-code-extensions/manim --openclawManim
Build mathematical animations programmatically using Python. Manim renders scenes to video files with precise control over every visual element.
Quick Start
from manim import *
class MyScene(Scene):
def construct(self):
# Create objects
circle = Circle(color=BLUE)
text = MathTex(r"e^{i\pi} + 1 = 0")
# Animate
self.play(Create(circle))
self.play(Write(text))
self.wait(1)
self.play(FadeOut(circle, text))
Run with: manim -pql scene.py MyScene
Workflow
- Define a Scene class inheriting from
Scene(orThreeDScenefor 3D) - Implement
construct()method - Create Mobjects (mathematical objects) - shapes, text, graphs
- Animate with
self.play()- use animation classes likeCreate,Transform,FadeIn - Render using CLI:
manim -pqh scene.py SceneName
Core Concepts
Mobjects
All visible objects inherit from Mobject. Common types:
- Geometry:
Circle,Square,Line,Arrow,Polygon - Text:
Text,MathTex,Tex - Graphs:
Axes,NumberPlane,FunctionGraph - 3D:
Sphere,Cube,ThreeDAxes - Groups:
VGroupto combine objects
Animations
Pass to self.play():
- Creation:
Create,Write,FadeIn,GrowFromCenter - Transform:
Transform,ReplacementTransform,MoveToTarget - Indication:
Indicate,Flash,Circumscribe - Removal:
FadeOut,Uncreate
Positioning
obj.move_to(ORIGIN) # Move to point
obj.shift(RIGHT * 2) # Relative shift
obj.next_to(other, UP) # Position relative to another
obj.align_to(other, LEFT) # Align edge
Animation Parameters
self.play(Create(obj), run_time=2) # Duration
self.play(Create(obj), rate_func=smooth) # Easing
self.play(anim1, anim2) # Simultaneous
self.play(Succession(anim1, anim2)) # Sequential
self.play(LaggedStart(*anims, lag_ratio=0.5)) # Staggered
Common Patterns
Mathematical Equation
eq = MathTex(r"\int_0^1 x^2 \, dx = \frac{1}{3}")
self.play(Write(eq))
Function Graph
axes = Axes(x_range=[-3, 3], y_range=[-1, 5])
graph = axes.plot(lambda x: x**2, color=BLUE)
label = axes.get_graph_label(graph, label="x^2")
self.play(Create(axes), Create(graph), Write(label))
Value Tracking (Animated Numbers)
tracker = ValueTracker(0)
number = DecimalNumber(0).add_updater(
lambda m: m.set_value(tracker.get_value())
)
self.add(number)
self.play(tracker.animate.set_value(10), run_time=2)
3D Scene
class My3D(ThreeDScene):
def construct(self):
axes = ThreeDAxes()
sphere = Sphere()
self.set_camera_orientation(phi=75*DEGREES, theta=45*DEGREES)
self.play(Create(axes), Create(sphere))
self.begin_ambient_camera_rotation(rate=0.2)
self.wait(3)
Transform Between States
circle = Circle()
square = Square()
self.play(Create(circle))
self.play(Transform(circle, square)) # circle becomes square
CLI Reference
manim scene.py SceneName # Render scene
manim -p scene.py SceneName # Preview after render
manim -s scene.py SceneName # Save last frame only
# Quality flags
-ql # Low (480p @ 15fps)
-qm # Medium (720p @ 30fps)
-qh # High (1080p @ 60fps)
-qk # 4K (2160p @ 60fps)
Key Gotchas
- Transform mutates first object: After
Transform(a, b), referencea(now looks likeb), notb - Use ReplacementTransform to avoid confusion: replaces
awithbin scene - Mobjects are mutable: Use
.copy()to avoid unintended changes - LaTeX requires
rprefix:MathTex(r"\frac{1}{2}")notMathTex("\frac{1}{2}") - 3D requires ThreeDScene: Regular
Scenewon't render 3D properly self.add()is instant: Useself.play(FadeIn(...))for animated appearance
References
- Full API (animations, mobjects, scenes, colors, constants): See references/api.md
- Quick lookup (tables, patterns, CLI): See references/quick-reference.md
Source
git clone https://github.com/johnlarkin1/claude-code-extensions/blob/main/skills/manim/SKILL.mdView on GitHub Overview
ManimCE lets you build mathematical animations and visualizations in Python. It renders scenes to video files with precise control over every visual element, enabling explainer videos, animated equations, graphs, geometric proofs, and 3D visuals.
How This Skill Works
Define a Scene class, create Mobjects such as Circle, Axes, and MathTex, and animate them with self.play. Scenes are rendered to video via the Manim CLI, giving you fine control over timing, transforms, and camera angles.
When to Use It
- Explain a math concept with animated equations and visuals
- Visualize graphs, functions, and data with axes and plots
- Create 3D math visuals using 3D objects and ThreeDAxes
- Demonstrate geometric proofs or transformations with Transform and related animations
- Produce programmatic math explainers or lecture-style videos
Quick Start
- Step 1: Create a Python file and import from manim to set up a Scene
- Step 2: Define class MyScene(Scene) with a construct method and add Mobjects
- Step 3: Run the render command, e.g. manim -pql scene.py MyScene
Best Practices
- Start with a Scene subclass and implement construct to structure your animation
- Choose Mobjects with clear labels and colors, such as Circle, Axes, Graph, and Text
- Use MathTex for equations and updaters for dynamic values when needed
- Keep animations readable by pacing with run_time and sensible easing
- Render with appropriate quality flags and preview options to iterate quickly
Example Use Cases
- Animate Euler's identity e^{iĻ} + 1 = 0 with labeled terms
- Plot a function like y = x^2 on Axes and highlight a point or region
- Create a 3D scene with ThreeDAxes and a rotating Sphere
- Transform a Circle into a Square to illustrate metamorphosis
- Visualize an algorithm step by step, such as a binary search on a diagram