Communitygithub.com

code-film

根据代码生成的动态影像,每帧均经过验证。

code-film 是什么?

`code-film` 是一个 AI Agent 技能,它能够将代码编写为一种“运动影像”,其中每一帧都是时间戳的纯函数。该技能通过 `window.__seek(t)` 接口控制页面状态,并使用 `ui:render --profile film` 命令逐帧捕捉画面,验证序列的确定性,检查是否满足光敏安全底线和声明的格式要求,最后通过 ffmpeg 编码为 MP4 文件。它适用于生成产品宣传片、展示卷轴、动态排版、动画图表、流程演示或循环品牌动画等短小精悍的运动影像。该技能在 Anthropic 的 Claude Code、Cursor 或 Codex 等支持文件系统执行命令的 AI Agent 平台上运行,不需要任何付费视频服务或实时播放能力。其工作原理依赖于一个严格的“见证”词汇表:每个帧都通过 `t` 参数驱动,使用种子化随机数而非 `Math.random`,并通过对比帧哈希值确保确定性渲染。输出包含编码后的视频文件路径、SHA-256 校验值、检查结果表(包括“已运行”或“已跳过”及原因)、联系表图像路径,以及(对于解释性视频)每个声明的来源列表。该技能强调可靠性、安全性和可审计性,不能用于生成式 AI 视频提示、UI 动画或现有素材的剪辑。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/event4u-app/agent-config/tree/HEAD/src/skills/code-film

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

code-film 是做什么的?

一种运动影像,其每一帧都是时间戳的纯函数:页面暴露 window.__seek(t),ui:render --profile film 将其逐帧定位、捕获、证明序列确定性、检查是否满足光敏底线和声明的格式,并使用 ffmpeg 编码。无需付费视频服务,无需实时播放。影像运动的值存储在 references/film-motion.md 中;页面契约在 film-page 中定义。

何时使用

  • 用户要求基于自己的素材制作一段简短的动态影像——产品宣传片、展示卷轴、动态排版、动画图表、流程演示、循环品牌动画等。
  • 影像需要每次渲染结果一致、节奏与声明的节拍或速度相符,或输出为指定大小的 MP4 文件。

何时不使用

  • 针对生成式视频服务(Veo、Kling、Sora)的提示 → 使用 motion-choreographer。
  • UI 内部的动画——悬停、滚动揭示、页面过渡 → 参考 fe-design § 动态。
  • 剪辑或添加字幕的现有视频素材 → 使用 /video 集群。
  • 单一静态或循环 SVG 素材 → 使用 svg-authoring。

操作流程

  1. 输入。 只询问配方中列为可变的项:用途、格式和像素尺寸、十六进制调色板、一种字体、音频(无、提供的文件或声明的节奏)、结束画面。如果用户说“直接做”,则说明你使用的默认值。

  2. 方向。 从语料库中选择一个配方,并说明每个镜头服务的一个概念:

    node <skills-root>/corpus-grounding/scripts/ground.mjs search \
      --manifest <skills-root>/code-film/data/manifest.json "<brief>"
    
  3. 禁止项。 提取针对该 brief 的 tells(--domain tell),并将每个禁止项及其替代方案写入计划。

  4. 网格。 节奏和节拍来自提供的音轨(如果安装了 allin1.sh;否则使用声明的节奏,并注明是声明的),然后是一个带时间的有序镜头列表。每个文本保留其阅读时间(每秒 3 个单词)。

  5. 仅限说明性视频——声明。 列出屏幕上出现的每个数字、名称和日期及其来源,或标记为用户自己的。不得编造。

  6. 构建。 编写符合 seek 契约的页面:window.__seek(t)、window.__videoMeta,不使用墙钟时间,使用种子化随机数,使用本地字体。从 --domain renderer 中选择渲染器;普通 HTML 是默认选项,只有在其许可问题得到回答后才建议使用许可渲染器。

  7. 联系表。 渲染一次,读取 contact.png,修复杂乱、重叠和节奏不准的问题。最多三次通过。

  8. 渲染。

    agent-config ui:render film/index.html --profile film --out film/out.mp4 [--audio track.wav]
    

    退出 0 表示干净,2 表示有发现(确定性、闪屏、死区时间、格式、网络),1 表示未评估,3 表示没有浏览器驱动程序。

  9. 报告。 引用清单文件:seek 形式、每个检查为 ran 或 skipped: <reason>、发现项和 verification。只有在清单中声明并且其文件摘要与你交付的文件摘要一致时,才说 verified。

状态——每个词的含义

  • verified (已验证) — 每一个适用的检查都已在此机器上运行,且编码后的文件摘要与记录的摘要一致。这并不说明影片的质量好坏。
  • static-only (仅静态) — 帧已被捕获并哈希,但需要 ffmpeg 的检查(闪屏底线、编码、格式)未运行。请指明缺失的工具。
  • unassessed (未评估) — 未检查任何内容:没有浏览器驱动程序、没有 seek 形式,或没有声明的长度。请指明缺少的安装或声明。

输出格式

  1. 影片路径及其清单中的 SHA-256 摘要。
  2. 检查表(ran / skipped: …)及每个发现项。
  3. 联系表路径。
  4. 对于说明性视频,带来源的声明列表。

注意事项

  • 使用 Math.random 或 Date.now 的页面在逆向传递中渲染结果不同;清单会指出第一个分叉的帧。通过 t 进行种子化。
  • 闪屏底线是一条安全底线:频闪会导致失败,没有标志可以降低它。
  • 影像配置文件的运行会关闭网络。从 CDN 加载的字体或图像不会加载——请将其与页面放在一起。
  • 确定性是针对每台机器的;不同机器之间的字体和 GPU 存在差异。
  • 基于时间轴框架构建的页面通过 window.__timelines(暂停、可 seek 条目)查看;内嵌素材保持在 t - data-start。内嵌素材编码时使用全帧内(-g 1),否则 seek 会在关键帧之间着陆。

禁止事项

  • 禁止将来自外部画廊的提示文本粘贴到计划或配方中——请从语料库中重新编写。
  • 禁止在未经询问的情况下捆绑或安装渲染器;应检测并路由。
  • 禁止仅凭代码就宣布影片完成——帧决定一切。
  • 禁止声称影片质量好、符合品牌调性或“AI 味少”;报告测量结果。

参见

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能