Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Trigger when: (1) User mentions "manimgl" or "ManimGL" or "3b1b manim", (2) Code contains `from manimlib import *`, (3) User runs `manimgl` CLI commands, (4) Working with InteractiveScene, self.frame, self.embed(), ShowCreation(), or ManimGL-specific patterns. Best practices for ManimGL (Grant Sanderson's 3Blue1Brown version) - OpenGL-based animation engine with interactive development. Covers InteractiveScene, Tex with t2c, camera frame control, interactive mode (-se flag), 3D rendering, and c
.claude/skills/adithya-s-k-manimgl-best-practices/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 42% | 0% |
Read individual rule files for detailed explanations and code examples:
-se flag, checkpoint_paste()Complete, tested example files demonstrating common patterns:
Copy and modify these templates to start new projects:
pythonfrom manimlib import * class MyScene(InteractiveScene): def construct(self): # Create mobjects circle = Circle() # Add to scene (static) self.add(circle) # Or animate self.play(ShowCreation(circle)) # Note: ShowCreation, not Create # Wait self.wait(1)
bash# Render and preview manimgl scene.py MyScene # Interactive mode - drop into shell at line 15 manimgl scene.py MyScene -se 15 # Write to file manimgl scene.py MyScene -w # Low quality for testing manimgl scene.py MyScene -l
| Feature | ManimGL (3b1b) | Manim Community | |---------|----------------|-----------------| | Import | from manimlib import * | from manim import * | | CLI | manimgl | manim | | Math text | Tex(R"\pi") | MathTex(r"\pi") | | Scene | InteractiveScene | Scene | | Create anim | ShowCreation | Create | | Camera | self.frame | self.camera.frame | | Fix in frame | mob.fix_in_frame() | self.add_fixed_in_frame_mobjects(mob) | | Package | manimgl (PyPI) | manim (PyPI) |
ManimGL's killer feature is interactive development:
bash# Start at line 20 with state preserved manimgl scene.py MyScene -se 20
In interactive mode:
python# Copy code to clipboard, then run: checkpoint_paste() # Run with animations checkpoint_paste(skip=True) # Run instantly (no animations) checkpoint_paste(record=True) # Record while running
python# Get the camera frame frame = self.frame # Reorient in 3D (phi, theta, gamma, center, height) frame.reorient(45, -30, 0, ORIGIN, 8) # Animate camera movement self.play(frame.animate.reorient(60, -45, 0)) # Fix mobjects to stay in screen space during 3D movement title.fix_in_frame()
python# Use raw strings with capital R formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}") # Color mapping with t2c equation = Tex( R"E = mc^2", t2c={"E": BLUE, "m": GREEN, "c": YELLOW} ) # Isolate substrings for animation formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}") formula.set_color_by_tex("n", BLUE)
pythondef construct(self): circle = Circle() self.play(ShowCreation(circle)) self.embed() # Drops into IPython shell here
pythonself.set_floor_plane("xz") # Makes xy the viewing plane
pythontext = Text("Label") text.set_backstroke(BLACK, 5) # Black outline behind text
bash# Install ManimGL pip install manimgl # Check installation manimgl --version
manimgl, not manim (community version)ShowCreation, not CreateTex with capital R raw stringsself.frame directly-se flag for interactive developmentThis skill contains example code adapted from 3Blue1Brown's video repository by Grant Sanderson.
License: CC BY-NC-SA 4.0
See LICENSE.txt for full details.
Other measured skills in the registry, with their headline benchmark lift.