manim_skill:一个能让 AI 助手正确写 Manim 动画的 Agent Skill
- Smars
- Agent Skills , 开发工具 , 动画
- 23 Jun, 2026
解决痛点
让 ChatGPT 或 Claude 帮你写一段 Manim 动画代码,你大概率会拿到这样的东西:
有时候 import 从 manim 开始,有时候从 manimlib 开始。有时候用 Create(),有时候用 ShowCreation()。有时候场景类继承 Scene,有时候继承 InteractiveScene。AI 读过所有 Manim 的文档——但它读的是两个版本的文档,而且它不知道你用的是哪个版本。
结果:代码看起来有模有样,一跑就报错。import 失败、API 不存在、或者两个版本的特性混在一起。你花在调试上的时间比自己从零写还长。
manim_skill 解决的就是这个问题。它把每个 Manim 版本的最佳实践装进 AI 助手的技能包里,让 AI 知道该用哪个 API、该避免哪些坑。
功能亮点
manim_skill 提供两套独立的 AI Agent Skill,分别对应 Manim 的两个版本。安装后,AI 会根据你当前的操作自动加载对应的技能:
manimce-best-practices 在以下情况自动激活:
- 导入
from manim import * - 使用
manimCLI 命令 - 处理 Scene 类、数学动画或 LaTeX 渲染
manimgl-best-practices 在以下情况自动激活:
- 导入
from manimlib import * - 使用
manimglCLI 命令 - 处理 InteractiveScene、3D 渲染或交互模式
每套 skill 都是一组结构化的最佳实践文档,按概念组织:场景、动画、对象、颜色、文字、相机控制、3D 渲染。每份文件包含:
- 最佳实践 — 正确做法
- 可运行示例 — 经测试验证的代码
- 常用模式 — 附解释
- 避坑指南 — 哪些做法会让你浪费几个小时
这种结构对 AI 检索很关键。给 AI 一段结构化的”如何避免版本混乱”的规则,比把整个 Manim 文档塞进上下文效果要好得多。
结构化知识,不是原始文档
## animations.md
- 创建对象用 `Create()`(不要用 `ShowCreation`,那是 ManimGL 的 API)
- 透明度变换用 `FadeIn()` / `FadeOut()`
- 形态变换用 `Transform()`(同类对象之间)
- 文字动画用 `Write()`(逐字呈现)
版本差异内置
Skill 文件中包含两个版本的关键差异对照:
| 特性 | ManimCE | ManimGL |
|---|---|---|
| 场景基类 | Scene | Scene / InteractiveScene |
| 创建动画 | Create() | ShowCreation() |
| 文字类型 | Text(), MathTex() | Text(), Tex() |
| 3D | 有限支持 | 完整 OpenGL |
| 交互模式 | 不支持 | 支持 |
当 AI 的上下文里有这张表,它就不会再把 Create 和 ShowCreation 搞混了。
使用场景
manim_skill 在以下场景最有价值:
- 你经常用 AI 助手生成 Manim 动画,想要一致、正确的输出
- 你在教 Manim 新手,帮他们避免版本混淆是最头疼的事之一
- 你的项目需要同时支持 ManimCE 和 ManimGL
- 你用的是支持 skills.sh 的 Agent(Claude Code、Cursor、Copilot 等)
没有 manim_skill 时,每次让 AI 写 Manim 代码都是一次赌博。AI 得猜你要哪个版本——而两个版本的 API 差异大到猜错了就是废代码。
注意事项
manim_skill 不是魔法,有几个边界需要清楚:
- 只对支持 skills.sh 的 Agent 有效。 如果你的 AI 工具不支持 Agent Skills 开放标准,装了这个也没用。装之前先确认你的 agent 支持
npx skills add。 - 知识可能滞后于 API 变化。 Manim 在活跃开发中,如果社区版改了某个 API,skill 需要时间更新。测试套件是你判断时效性的最好信号。
- 通用最佳实践,不是项目定制。 Skill 教的是 Manim 通用规范,不是你项目内部的代码风格。
- 同时装两个 skill 只有在你需要双版本时才有意义。 如果你只用 ManimCE,装上 ManimGL 的 skill 只是白白占用上下文。
安装
一条命令搞定,自动检测你本地装了什么 agent:
# 同时装两个 skill
npx skills add adithya-s-k/manim_skill
或者只装你需要的版本:
# 只装社区版
npx skills add adithya-s-k/manim_skill/skills/manimce-best-practices
# 只装 ManimGL
npx skills add adithya-s-k/manim_skill/skills/manimgl-best-practices
快速上手
装完之后 AI 会自动加载,不需要额外配置。看效果对比:
装之前:
你:“用 Manim 画一个圆的动画”
AI:from manim import * … ShowCreation(circle) —— 两个版本的 API 混用,跑不起来
装之后:
你:“用 Manim 社区版画一个圆的动画”
AI:from manim import * … Create(circle) —— 正确的社区版 API,一次跑通
Skill 还自带完整的测试框架,所有代码示例都是可验证的:
# 测试所有 ManimCE skill 示例
uv run python tests/manimce/test_all_skills.py
# 测试某个特定 skill 文件
uv run python tests/manimce/test_all_skills.py animations.md
# 用并行测试 ManimGL skill
uv run python tests/manimgl/test_all_skills.py -j 4
这一点很重要。AI Skill 里的代码如果没经过验证,反而会让 AI 生成错误代码。manim_skill 的测试覆盖保证了知识是准确的。
实践示例
同一个 prompt,装 skill 前后的 AI 输出截然不同:
没有 manim_skill 时:
你:帮我写一段 Manim 场景,把正方形变成圆形
AI:from manim import *
class SquareToCircle(Scene):
def construct(self):
square = Square()
circle = Circle()
self.play(ShowCreation(square)) # 错了!ShowCreation 是 ManimGL 的 API
self.play(Transform(square, circle))
这段代码 import 是社区版的写法,但用了 ManimGL 的 ShowCreation。运行会报 AttributeError,报错信息是 “module ‘manim’ has no attribute ‘ShowCreation’”。
装 manim_skill 之后:
你:帮我写一段 Manim 场景,把正方形变成圆形
AI:from manim import *
class SquareToCircle(Scene):
def construct(self):
square = Square()
circle = Circle()
self.play(Create(square)) # 正确!Create 才是 ManimCE 的 API
self.play(Transform(square, circle))
AI 的激活规则告诉它当前是 ManimCE 上下文,所以用了 Create。代码直接运行,不需要调试。
总结
manim_skill 解决了一个具体但很痛的场景:AI 助手猜不到你用哪个 Manim 版本。 通过把版本相关的知识封装成 Agent Skill,它消除了 AI 辅助开发 Manim 时最常见的错误来源。
如果你用 AI 工具做数学动画,这是最值得装的 skill 之一。一条命令,零配置,你的 AI 就不会再把 Create 写成 ShowCreation。
你的 API 账单允许你在调试废代码上浪费多少时间?
GitHub:https://github.com/adithya-s-k/manim_skill 安装:
npx skills add adithya-s-k/manim_skill