MA

manimgl-best-practices

Develop 3Blue1Brown-style OpenGL animations using ManimGL patterns.

Install

mkdir -p .claude/skills/manimgl-best-practices && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4282" && unzip -o skill.zip -d .claude/skills/manimgl-best-practices && rm skill.zip

Installs to .claude/skills/manimgl-best-practices

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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).
606 chars · catalog description✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • Configure Tex t2c color mapping
  • Debug InteractiveScene development workflows
  • Implement 3D parametric surface animations
  • Manage frame reorientation and camera movement
  • Setup GLSL shader styling

How it works

It accesses documentation and code patterns specific to the OpenGL-based 3b1b engine, focusing on `manimlib` and `InteractiveScene` structures.

Inputs & outputs

You give it
ManimGL code segment or rendering requirement.
You get back
Optimized shader or InteractiveScene implementation.

When to use manimgl-best-practices

  • Develop interactive animations
  • Configure GLSL shader styling
  • Create custom camera frames
  • Implement mathematical transformations

About this skill

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.

When not to use it

  • Manim Community Edition (ManimCE) projects
  • Static 2D diagram generation without animation

Limitations

  • Incompatible with ManimCE syntax
  • Requires specific knowledge of OpenGL/GLSL patterns

How it compares

It handles the specific requirements of Grant Sanderson's engine, which differs significantly from the community version.

Compared to similar skills

manimgl-best-practices side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
manimgl-best-practices (this skill)36moReviewAdvanced
manim296moReviewIntermediate
manimce-best-practices36moReviewBeginner
lecture-transcript-slide-matcher69moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

manim

davila7

Comprehensive guide for Manim Community - Python framework for creating mathematical animations and educational videos with programmatic control

29113

manimce-best-practices

adithya-s-k

Trigger when: (1) User mentions "manim" or "Manim Community" or "ManimCE", (2) Code contains `from manim import *`, (3) User runs `manim` CLI commands, (4) Working with Scene, MathTex, Create(), or ManimCE-specific classes. Best practices for Manim Community Edition - the community-maintained Python animation engine. Covers Scene structure, animations, LaTeX/MathTex, 3D with ThreeDScene, camera control, styling, and CLI usage. NOT for ManimGL/3b1b version (which uses `manimlib` imports and `manimgl` CLI).

33

lecture-transcript-slide-matcher

az9713

Combines YouTube lecture transcripts with PDF slides to create an interactive HTML page. Matches each slide to corresponding transcript segments, organized by key concepts. Use when users want to create synchronized lecture notes from transcript text files and slide PDFs.

669

openevidence-install-auth

jeremylongshore

Install and configure OpenEvidence API authentication. Use when setting up a new OpenEvidence integration, configuring API credentials, or initializing OpenEvidence in your healthcare application. Trigger with phrases like "install openevidence", "setup openevidence", "openevidence auth", "configure openevidence API key".

17

add-cyberbrick-sample

Shen-Ming-Hong

新增或更新 CyberBrick MicroPython 範例工作區的完整工作流程。當使用者提到新增範例、更新範例、add sample、update sample、修改範例積木、建立範例積木、新增 CyberBrick 示範程式、sample workspace、範例工作區、更新翻譯、stringTranslations、nameTranslations、字串翻譯、標籤翻譯 時自動啟用。包含從 Blockly 工作區匯出 JSON、建立或覆蓋範例檔、更新索引、15 語系翻譯填寫(含識別字名稱翻譯 nameTranslations 與 text 積木字串翻譯 stringTranslation

00

mock-interviewer

std2main

模拟硅谷大厂 Senior Engineer 进行技术面试,支持语音交互和实时代码审计。

00

Search skills

Search the agent skills registry