
Manimce Best Practices
Author Manim Community Edition scenes with correct 3D camera, axes, and animation patterns for explainer videos.
Overview
Manimce Best Practices is an agent skill for the Build phase that teaches Manim Community Edition 3D scene, axes, and camera patterns for explainer animations.
Install
npx skills add https://github.com/adithya-s-k/manim_skill --skill manimce-best-practicesWhat is this skill?
- ThreeDScene setups with phi/theta camera orientation
- 3D primitives: Sphere, Cube, Cone with positioning and Create animations
- Ambient camera rotation patterns for showcase shots
- ThreeDAxes with labeled x/y/z and configurable ranges
- Run command documented: manim -pql with scene class names
- Documented manim -pql preview-quality render flag
Adoption & trust: 2.2k installs on skills.sh; 902 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent writes broken or outdated Manim scripts and you lose hours on 3D camera and axes setup.
Who is it for?
Indie educators, dev advocates, and founders producing scripted explainer animations in Python.
Skip if: Builders who only need static diagrams or slide decks with no programmatic video pipeline.
When should I use this skill?
Creating or debugging ManimCE 3D scenes, axes, or camera motion for explainer content.
What do I get? / Deliverables
You get working ThreeDScene and ThreeDAxes example modules you can render with manim -pql and extend scene-by-scene.
- Runnable ManimCE scene Python modules
- 3D visualization pattern reference
- Render commands per scene class
Recommended Skills
Journey fit
Educational motion graphics are produced while building the product story, docs, and launch assets. Docs and demo media benefit from repeatable ManimCE scene patterns rather than one-off scripts.
How it compares
Skill-backed ManimCE scene recipes, not a GUI video editor or Remotion React stack.
Common Questions / FAQ
Who is manimce-best-practices for?
Solo builders and creators shipping math or product explainers who render with Manim Community Edition from Python.
When should I use manimce-best-practices?
During Build (docs) when drafting launch demos, course segments, or README visuals that need 3D Manim scenes.
Is manimce-best-practices safe to install?
It is instructional Python for local renders; review the Security Audits panel on this Prism page and audit any skill repo before running manim on your machine.
SKILL.md
READMESKILL.md - Manimce Best Practices
""" 3D Visualization Patterns for Manim Community Demonstrates ThreeDScene, 3D axes, surfaces, and camera control. Adapted from 3b1b patterns for ManimCE. Run with: manim -pql 3d_visualization.py SceneName """ from manim import * import numpy as np class Basic3DScene(ThreeDScene): """Basic 3D scene with shapes.""" def construct(self): # Set camera orientation self.set_camera_orientation(phi=60 * DEGREES, theta=-45 * DEGREES) # 3D shapes sphere = Sphere(radius=1, color=BLUE) cube = Cube(side_length=1.5, color=RED, fill_opacity=0.7) cone = Cone(base_radius=0.8, height=1.5, color=GREEN) # Position shapes sphere.shift(LEFT * 3) cone.shift(RIGHT * 3) self.play(Create(sphere), Create(cube), Create(cone)) self.wait() # Rotate camera self.begin_ambient_camera_rotation(rate=0.3) self.wait(4) self.stop_ambient_camera_rotation() class ThreeDAxesExample(ThreeDScene): """3D coordinate axes and plotting.""" def construct(self): self.set_camera_orientation(phi=70 * DEGREES, theta=-45 * DEGREES) # Create 3D axes axes = ThreeDAxes( x_range=[-3, 3, 1], y_range=[-3, 3, 1], z_range=[-2, 2, 1], x_length=6, y_length=6, z_length=4, ) # Axis labels x_label = axes.get_x_axis_label(r"x") y_label = axes.get_y_axis_label(r"y") z_label = axes.get_z_axis_label(r"z") self.play(Create(axes)) self.add_fixed_orientation_mobjects(x_label, y_label, z_label) self.wait() # Add a point point = Dot3D(axes.c2p(2, 1, 1.5), color=RED, radius=0.1) self.play(Create(point)) # Camera rotation self.begin_ambient_camera_rotation(rate=0.2) self.wait(5) class ParametricSurfaceExample(ThreeDScene): """3D parametric surface visualization.""" def construct(self): self.set_camera_orientation(phi=60 * DEGREES, theta=-60 * DEGREES) axes = ThreeDAxes( x_range=[-3, 3], y_range=[-3, 3], z_range=[-2, 2], ) # Saddle surface: z = x^2 - y^2 surface = Surface( lambda u, v: axes.c2p(u, v, u ** 2 - v ** 2), u_range=[-2, 2], v_range=[-2, 2], resolution=(20, 20), fill_opacity=0.7, ) surface.set_color_by_gradient(BLUE, GREEN, YELLOW) self.play(Create(axes)) self.play(Create(surface), run_time=2) self.begin_ambient_camera_rotation(rate=0.15) self.wait(5) class SphereVisualization(ThreeDScene): """Sphere with parametric representation.""" def construct(self): self.set_camera_orientation(phi=70 * DEGREES, theta=30 * DEGREES) # Parametric sphere sphere = Surface( lambda u, v: np.array([ np.cos(v) * np.sin(u), np.sin(v) * np.sin(u), np.cos(u) ]), u_range=[0, PI], v_range=[0, 2 * PI], resolution=(20, 40), ) sphere.set_color_by_gradient(BLUE_E, BLUE, TEAL) self.play(Create(sphere), run_time=2) # Animate camera self.begin_ambient_camera_rotation(rate=0.2) self.wait(5) class Function3DPlot(ThreeDScene): """Plotting z = f(x, y) surfaces.""" def construct(self): self.set_camera_orientation(phi=65 * DEGREES, theta=-45 * DEGREES) axes = ThreeDAxes( x_range=[-3, 3], y_range=[-3, 3], z_range=[-1, 1], ) # Sine wave surface surface = Surface( lambda u, v: axes.c2p( u, v, np.sin(np.sqrt(u ** 2 + v ** 2)) ), u_range=[-3, 3], v_range=[-3, 3], resolution=(30, 30), ) surface.set_colo