Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add bangbuilds/code-poem-film --skill code-poem-filmgit clone --depth 1 https://github.com/bangbuilds/code-poem-filmWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bangbuilds/code-poem-film/code-poem-film)<a href="https://agentmods.dev/skills/bangbuilds/code-poem-film/code-poem-film"><img src="https://agentmods.dev/badge/skills/bangbuilds/code-poem-film/code-poem-film/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bangbuilds/code-poem-film/code-poem-film"><img src="https://agentmods.dev/badge/skills/bangbuilds/code-poem-film/code-poem-film.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00268 | $0.03914 |
| Opus 5.5 | $0.00107 | $0.01566 |
| Sonnet 5.5 | $0.00054 | $0.00783 |
| Haiku 4.5 | $0.00027 | $0.00391 |
Grade A, and why
code-poem-film scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 127 lines — stays where its author put it; the contents beside it link to each section on GitHub.
代码诗词动画(code-poem-film)
把一首诗做成一条片子(绝句 20–40 秒,一阕百字的词 60–80 秒):宣纸底、水墨淡彩,一个红点落在纸上、长出眼睛,把这首诗走一遍;每句诗在右上角的题签上随朗诵写出来;最后一句红点自己提笔写,念到哪个字写到哪个字,然后落成一枚红印章。画面每一帧都是代码画的,配乐和音效是 numpy 算的,没有图片素材、视频素材、曲库。
这套做法来自两条成片:《早发白帝城》(examples/qingzhou,七绝,25.5 秒)和《念奴娇·赤壁怀古》(examples/chibi,词,72 秒)。它们翻过的车——猿挂的树悬空、鼓把旋律盖住、多音字怕念错、开头是白纸导致缩略图是白纸、一帧出错后画面静默卡住、小舟画在了礁石「上面」、淡出的东西压住片尾小字——现在都由引擎、检查脚本和 references/qa.md 兜住。你的工作是把这首诗的画面想好、演好,而不是重新踩一遍。
它擅长什么、不擅长什么
擅长:绝句、律诗,百字以内的词,一句名句,几十字的短文。有景、有动作、有转折的最好做(行舟、登楼、望月、送别、怀古、江雪)。画法库里有:山(远峰、群山、峡谷绝壁、渐隐的远山、石峰)、岸、江水、长浪、开阔水面、巨浪和浪花、日、月、星、祥云、雾、雨、雪、飞鸟、松、柳、城楼、多层楼阁、残垒、带帆小舟、乌篷小舟、战船、火、烟、人物剪影(文士、武将、仕女)、猿、酒杯、手卷的装裱,以及溅水、浪头、落地的墨点。看 references/kit-1.jpg … kit-4.jpg 就知道库里有什么、长什么样。
不擅长:人物的戏(库里的人是没有脸的远景剪影,只能站、举手、转身;主角永远是红点);一百字以上的长文(按每秒不到 3 个字算,一百字就是 70 秒,再长要节选);竖版(版式是按 1920×1080 排的);抽象说理、没有画面的句子(要先和用户商量画什么)。库里没有的东西可以现画(见 references/scenes.md),但要多花时间,开工前说清楚:赤壁那条现画了 14 样东西,整条从提出到成片用了 63 分钟。
用户只说了一句话时
「做一条《静夜思》的动画」就够开工。默认这样走:
- 先定题材。用户没指定诗,就给三四个候选,每个一句话说清「红点在里面干什么」,推荐一个,让用户选。用户指定了诗,就直接进入下一步。
- 只问会改变做法的事:发在哪(现在只能横版)、要不要朗诵、男声还是女声。用上次的选择或默认值时说一声就行,不要一项项问。
- 用户确认题材后一路做到出片。中途只在两种情况停下来:要花钱(真配音按次计费:先
film.py voice --plan看会调用几次、多少字,告诉用户)、要画库里没有的大件东西。 - 朗诵你听不到。能做的是量:语速、停顿、轻重变化、人声比配乐高多少。选音色拿不准时出两版让用户听,不要替用户说「这个更有感情」。
流程
所有命令在工程目录里运行,tools/film.py 是唯一入口。渲染用 HyperFrames(通过 npx hyperframes 调用),工程也是一个 HyperFrames 工程,但这类片子不需要再走它的问答和分镜流程——这份文档就是完整流程。
# SK = 这份 SKILL.md 所在的目录
python3 $SK/scripts/new_project.py videos/<slug> # 新建工程:HyperFrames 初始化 + 引擎 + 起步片子 + 笔画数据
cd videos/<slug>
| 步骤 | 做什么 | 命令 / 文件 |
|---|---|---|
| 1 定稿 | 把诗填进 poem.json:标题、作者、每句、印文、多音字 |
references/poem-json.md |
| 2 空跑 | 不花钱:估每句时长,让起步片子先跑起来 | film.py voice --dry → film.py build → film.py qa |
| 3 分镜 | 每句诗画什么、红点做什么、哪个动作卡在哪个字上 | 写进 film/timing.js 的注释里;references/acting.md |
| 4 画场景 | 把起步片子里的「长卷」换成这首诗自己的画面 | film/timing.js、film/scenes.js;references/scenes.md |
| 5 看图 | 抓关键帧、看总览图,改到干净 | film.py qa;references/qa.md |
| 6 朗诵 | 真配音(缓存,同一段只花一次钱;长篇逐句合成);读得太快的句子本地放慢;末句对着频谱图标每个字的时间 | film.py voice --plan → film.py voice --spec;references/audio.md |
| 7 编曲 | 每个声音绑在时间表的一个时刻上 | film/score.py → film.py score |
| 8 出片 | 检查 → 渲染 → 核对 → 上传版(长片另出 720p 小版)、封面、总览图、数字 | film.py render |
| 9 交付 | 发上传版和封面;说清没验证的;按实测写帖子草稿 | references/delivery.md;film.py stats |
What ships with it
26 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/chibi/cover.jpg 169 KB
- examples/chibi/film/scenes.js 45 KB runs code
- examples/chibi/film/score.py 16 KB runs code
- examples/chibi/film/timing.js 4.3 KB runs code
- examples/chibi/poem.json 1.5 KB
- examples/chibi/README.md 4.6 KB
- examples/gallery/film/scenes.js 9.9 KB runs code
- examples/gallery/poem.json 619 B
- examples/gallery/README.md 712 B
- examples/qingzhou/cover.jpg 164 KB
- examples/qingzhou/film/scenes.js 29 KB runs code
- examples/qingzhou/film/score.py 10 KB runs code
- examples/qingzhou/film/timing.js 1.7 KB runs code
- examples/qingzhou/poem.json 646 B
- examples/qingzhou/README.md 2.8 KB
- references/acting.md 4.5 KB
- references/audio.md 12 KB
- references/delivery.md 5.0 KB
- references/kit-1.jpg 262 KB
- references/kit-2.jpg 269 KB
- references/kit-3.jpg 250 KB
- references/kit-4.jpg 245 KB
- references/poem-json.md 7.5 KB
- references/qa.md 6.3 KB
- references/scenes.md 14 KB
- scripts/new_project.py 4.3 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 127 lines · 268 tokens per session scan A a493671b9512
code-poem-film is a skill published in the GitHub repository bangbuilds/code-poem-film (58 stars, last pushed 23d ago), licensed MIT. It adds 268 tokens to every session and 3,914 once invoked, about $0.0011 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-14.
Other skills, from other repositories
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
next-cache-components-optimizer
Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route and entry point at a time; the shipped test then guards…