PluginBench
Skill
Review
Audit score 70

manimgl-best-practices

adithya-s-k/manim_skill

Best practices for ManimGL (3Blue1Brown's OpenGL animation engine) with interactive development, 3D rendering, and LaTeX math.

What is manimgl-best-practices?

ManimGL is Grant Sanderson's OpenGL-based animation framework for creating mathematical visualizations. Use this skill when working with InteractiveScene, Tex, camera frames, or the manimgl CLI—not for Manim Community Edition. Covers interactive development workflows, 3D rendering, LaTeX coloring, and checkpoint-based iteration.

  • Interactive development with -se flag and checkpoint_paste() workflow
  • 3D scene rendering with camera control via self.frame.reorient()
  • LaTeX math rendering with Tex class and tex_to_color_map (t2c) for selective coloring
  • Animation classes: ShowCreation, Transform, ReplacementTransform, LaggedStart, Succession
  • Mobject types: VMobject, Groups, Text, Tex, 3D surfaces (Sphere, Torus, parametric)
  • Camera frame manipulation, fix_in_frame() for screen-space objects, and self.embed() debugging

How to install manimgl-best-practices

npx skills add https://github.com/adithya-s-k/manim_skill --skill manimgl-best-practices
Prerequisites
  • Python 3.7+
  • manimgl package installed (pip install manimgl)
  • Basic understanding of Python classes and decorators
  • LaTeX knowledge helpful for Tex() expressions
Claude Code
Cursor
Windsurf
Cline

How to use manimgl-best-practices

  1. 1.Install manimgl: pip install manimgl
  2. 2.Create a scene class inheriting from InteractiveScene with a construct() method
  3. 3.Use manimgl CLI to render: manimgl scene.py MyScene
  4. 4.For interactive development, use -se flag: manimgl scene.py MyScene -se 15
  5. 5.In interactive mode, use checkpoint_paste() to run code snippets with or without animations
  6. 6.Consult rule files (scenes.md, animations.md, tex.md, etc.) for specific patterns
  7. 7.Use provided templates (basic_scene.py, 3d_scene.py, math_scene.py) as starting points

Use cases

Good for
  • Creating mathematical derivation videos with animated equations and color-coded terms
  • Building 3D visualizations with rotating camera angles and dynamic surfaces
  • Developing animations interactively by running code snippets and previewing instantly
  • Rendering educational content with synchronized text, shapes, and transformations
  • Debugging animation timing and positioning using embedded IPython shells
Who it's for
  • Mathematics educators and content creators
  • 3D visualization developers
  • Animation engineers working with Grant Sanderson's framework
  • Researchers creating educational videos
  • Anyone migrating from or comparing to Manim Community Edition

manimgl-best-practices FAQ

What's the difference between ManimGL and Manim Community Edition?

ManimGL uses manimlib imports, manimgl CLI, InteractiveScene, ShowCreation, and self.frame. Manim CE uses manim imports, manim CLI, Scene, Create, and self.camera.frame. They are separate packages with different APIs.

How do I color specific parts of a LaTeX equation?

Use the t2c (tex_to_color_map) parameter: Tex(R'E = mc^2', t2c={'E': BLUE, 'm': GREEN, 'c': YELLOW}). Or use set_color_by_tex() after creation.

What does the -se flag do?

The -se flag (skip to end) drops you into an interactive IPython shell at a specified line number, preserving animation state. Useful for iterative development: manimgl scene.py MyScene -se 20

How do I control the 3D camera?

Use self.frame.reorient(phi, theta, gamma, center, height) to set camera angles. Animate it with self.play(self.frame.animate.reorient(...)).

What is checkpoint_paste() and when do I use it?

In interactive mode, checkpoint_paste() runs clipboard code with animations. Use checkpoint_paste(skip=True) to run instantly, or checkpoint_paste(record=True) to record output.

Full instructions (SKILL.md)

Source of truth, from adithya-s-k/manim_skill.


name: manimgl-best-practices description: | 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 checkpoint_paste() workflow.

NOT for Manim Community Edition (which uses manim imports and manim CLI).

How to use

Read individual rule files for detailed explanations and code examples:

Core Concepts

Creation & Transformation

Text & Math

  • rules/tex.md - Tex class, raw strings R"...", and LaTeX rendering
  • rules/text.md - Text mobjects, fonts, and styling
  • rules/t2c.md - tex_to_color_map (t2c) for coloring math expressions

Styling & Appearance

3D & Camera

  • rules/3d.md - 3D objects, surfaces, Sphere, Torus, parametric surfaces, lighting
  • rules/camera.md - frame.reorient(), Euler angles, fix_in_frame(), camera animations

Interactive Development

Configuration & CLI

  • rules/cli.md - manimgl command, flags (-w, -o, -se, -l, -h), rendering options
  • rules/config.md - custom_config.yml, directories, camera settings, quality presets

Working Examples

Complete, tested example files demonstrating common patterns:

Scene Templates

Copy and modify these templates to start new projects:

Quick Reference

Basic Scene Structure

from 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)

Render Command

# 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

Key Differences from ManimCE

FeatureManimGL (3b1b)Manim Community
Importfrom manimlib import *from manim import *
CLImanimglmanim
Math textTex(R"\pi")MathTex(r"\pi")
SceneInteractiveSceneScene
Create animShowCreationCreate
Cameraself.frameself.camera.frame
Fix in framemob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
Packagemanimgl (PyPI)manim (PyPI)

Interactive Development Workflow

ManimGL's killer feature is interactive development:

# Start at line 20 with state preserved
manimgl scene.py MyScene -se 20

In interactive mode:

# 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

Camera Control (self.frame)

# 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()

LaTeX with Tex class

# 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)

Common Patterns

Embedding for debugging

def construct(self):
    circle = Circle()
    self.play(ShowCreation(circle))
    self.embed()  # Drops into IPython shell here

Set floor plane for 3D

self.set_floor_plane("xz")  # Makes xy the viewing plane

Backstroke for text readability

text = Text("Label")
text.set_backstroke(BLACK, 5)  # Black outline behind text

Installation

# Install ManimGL
pip install manimgl

# Check installation
manimgl --version

Common Pitfalls to Avoid

  1. Version confusion - Ensure you're using manimgl, not manim (community version)
  2. ShowCreation vs Create - ManimGL uses ShowCreation, not Create
  3. Tex vs MathTex - ManimGL uses Tex with capital R raw strings
  4. self.frame vs self.camera.frame - ManimGL uses self.frame directly
  5. fix_in_frame() - Call on the mobject, not the scene
  6. Interactive mode - Use -se flag for interactive development

License & Attribution

This skill contains example code adapted from 3Blue1Brown's video repository by Grant Sanderson.

License: CC BY-NC-SA 4.0

  • Attribution required - Credit both 3Blue1Brown and the adapter
  • NonCommercial - Not for commercial use
  • ShareAlike - Derivatives must use the same license

See LICENSE.txt for full details.

Related skills

More from adithya-s-k/manim_skill and the wider catalog.

MAmanim-composer logo

manim-composer

adithya-s-k/manim_skill

Plan educational animations scene-by-scene before coding—transforms vague video ideas into detailed Manim implementation specs.

1.7k installs
MAmanimce-best-practices logo

manimce-best-practices

adithya-s-k/manim_skill

Best practices for Manim Community Edition animations, scenes, and LaTeX rendering.

2.5k installsAudited
WRwrite-xiaohongshu logo

write-xiaohongshu

adjfks/corner-skills

Research top Xiaohongshu posts, analyze patterns, enrich with Firecrawl, then write and publish XHS notes with strict limits: title ≤20 chars, body ≤1000 chars.

4.3k installs
ANanalyze-and-plan logo

analyze-and-plan

adobe/skills

Analyzes development requirements and generates structured acceptance criteria for AEM Edge Delivery Services (EDS) tasks. Use when the user needs to define acceptance criteria, write requirements, scope work, or create a definition of done for EDS blocks, components, variants, bug fixes, or styling changes. Produces task breakdowns, identifies edge cases, and documents analysis for new blocks, variants, behavior modifications, CSS-only changes, and bug fixes.

779 installs
AUauth logo

auth

adobe/skills

Authenticate with AEM Edge Delivery Services. Opens browser for login and captures token. Works for admin.hlx.page and Config Service APIs regardless of content source (Document Authoring, SharePoint, or Google Drive).

714 installs
AUauthoring logo

authoring

adobe/skills

Generate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project. Analyzes the project structure and produces a complete authoring guide with blocks, templates, configurations, and publishing workflows.

600 installs