manim_skill:一个能让 AI 助手正确写 Manim 动画的 Agent Skill

解决痛点

让 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 *
  • 使用 manim CLI 命令
  • 处理 Scene 类、数学动画或 LaTeX 渲染

manimgl-best-practices 在以下情况自动激活:

  • 导入 from manimlib import *
  • 使用 manimgl CLI 命令
  • 处理 InteractiveScene、3D 渲染或交互模式

每套 skill 都是一组结构化的最佳实践文档,按概念组织:场景、动画、对象、颜色、文字、相机控制、3D 渲染。每份文件包含:

  • 最佳实践 — 正确做法
  • 可运行示例 — 经测试验证的代码
  • 常用模式 — 附解释
  • 避坑指南 — 哪些做法会让你浪费几个小时

这种结构对 AI 检索很关键。给 AI 一段结构化的”如何避免版本混乱”的规则,比把整个 Manim 文档塞进上下文效果要好得多。

结构化知识,不是原始文档

## animations.md

- 创建对象用 `Create()`(不要用 `ShowCreation`,那是 ManimGL 的 API)
- 透明度变换用 `FadeIn()` / `FadeOut()`
- 形态变换用 `Transform()`(同类对象之间)
- 文字动画用 `Write()`(逐字呈现)

版本差异内置

Skill 文件中包含两个版本的关键差异对照:

特性ManimCEManimGL
场景基类SceneScene / InteractiveScene
创建动画Create()ShowCreation()
文字类型Text(), MathTex()Text(), Tex()
3D有限支持完整 OpenGL
交互模式不支持支持

当 AI 的上下文里有这张表,它就不会再把 CreateShowCreation 搞混了。

使用场景

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

相关文章

lark-cli:用命令行全操作飞书,13.8k star 的官方 CLI

做飞书开发的痛点是什么? 好不容易拿到了 App ID 和 Secret,第一次调 API 之前还要搞 OAuth 流程、查 endpoint 路径、拼参数、处理分页。开发者文档写得全,但翻一篇完整 ...

edulab: 把数学题变成交互式 3D 课堂

一个学生盯着立体几何题发呆。"求直线 PQ 与平面 ABC 的夹角。" 课本上只有一张静态图。线叠在一起,角看不清楚。你没法旋转它,没法放大看交点,甚至无法直觉判断那个 120° 的答案在空间里到底对 ...

如何把真实世界的能力封装为 Agent Skill

通用 AI Agent 能力很强,但缺少每支团队都有的东西:程序性知识。你的代码审核清单、部署手册、API 规范——这些都不在模型的训练数据里。 这就是 Agent Skill 要解 ...

HyperFrames:写 HTML 就能出视频,专为 AI Agent 设计

做视频很慢。 传统视频工具是时间轴驱动的:拖素材、调关键帧、渲染、导出、修改、再渲染。你没法自动化这个流程,更没法让 AI 帮你做——因为 Premiere 不接受 prompt。 如果你想让代码 ...

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

你在跟 Claude Code 描述系统架构。它回复了一堆 ASCII art,差不多能看,但总觉得差点意思。你心想:"要是能直接让它画张图就好了。" 可以。 draw.io 的 Claude C ...

Karpathy 给 Claude Code 开的药方:四个原则治住 AI 乱写代码

Andrej Karpathy 一句话戳到了痛点:LLM 会带着错误的假设一路狂奔。它们把代码搞复杂、造抽象层、乱动不该动的东西。最气人的是,它们做得彬彬有礼、信心满满、而且批量生产。 一个 CLA ...