{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "remotion-video",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "sandbox_recommended",
      "graded_authorization"
    ],
    "admin": [
      "approval_process",
      "rollback_support",
      "full_audit"
    ]
  },
  "evidence": [
    {
      "file": "scripts/",
      "summary": "Execute local script or command: npx remotion … (studio / still / render / compositions): fetch and execute Remotion from npm on demand"
    },
    {
      "file": "网络端点",
      "summary": "Declare external network access: The shared scripts contain no business API calls; network activity stems from the toolchain: npx fetching remotion and related packages from npm (registry.npmjs.org)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: out/*.mp4, out/*.gif, out/*.webm (rendered videos)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 目录清单：skills/remotion-video 仅 SKILL.md（194 行）+ references/api-and-patterns.md + 0 字节 README.md；验证工具在仓库根 scripts/（probe-mp4.sh 实读全文、contact-sheet.sh、README.md）；② token 扫描（http(s)://、curl、wget、npx、npm、API_KEY、token、secret、env、eval、exec、subprocess）——命中项仅有 npx remotion 命令族与文档末的 iart.ai UTM 链接，无 http API、无凭证；③ 对每个 external_deps 回源确认行号（SKILL.md:125/130/157、api-and-patterns.md:153/157/187/214/220、probe-mp4.sh:14），包名逐个在文本中确认存在（remotion、@remotion/renderer、@remotion/bundler、@remotion/zod-types、@remotion/three、@remotion/google-fonts、zod、three、web-audio-beat-detector、aubio）；④ 反例搜索「隐藏网络/隐蔽下载」：全 skills/ 目录 grep cdn./unpkg/esm./https:// 无本 skill 命中，npx 只在 SKILL.md 与其 reference 中出现；⑤ 声明 vs 实现：description 声称的 6 项能力（make a video with Remotion / data-driven React / render MP4-GIF / useCurrentFrame·interpolate·spring / audio-beat sync / headless per-record render）在 SKILL.md 中逐项有对应段落与代码，无夸大；⑥ 交叉核对姊妹 skill 与仓库：logo-animation 反向指向本 skill 作为视频 sting 回路，两端一致；scripts/README.md 的 Heavy 档命令序列与 SKILL.md 的 verify loop 同构；⑦ 元数据：gh api repos/iart-ai/motion-design-skills → stars 29、pushed_at 2026-06-22T13:24:17Z、license MIT；本地 HEAD == origin/main == 3c129f769d90a1328c209c386492333c9ac62312。",
    "second_pass": [
      {
        "item": "「无 seek harness、可直接渲染精确帧」的前提是否成立",
        "status": "ok",
        "detail": "SKILL.md 与 reference 一以贯之地把确定性建立在「每帧是 useCurrentFrame 的纯函数」上，并用禁止清单（Math.random/Date.now/timers）+ random(seed) + delayRender/continueRender 兜住例外；因此 still --frame=N 能精确复现该帧。逻辑自洽，非空话。"
      },
      {
        "item": "verify loop 的命令是否可执行（含末帧取值）",
        "status": "ok",
        "detail": "命令为 `npx remotion still Promo out/f-start.png --frame=0` / --frame=75 / --frame=149，并注明「last frame = durationInFrames - 1」，另给 `npx remotion compositions` 用于反查 durationInFrames/fps。无未定义变量。"
      },
      {
        "item": "probe-mp4.sh 的断言语义（首遍称「读真实 spec 并断言」）",
        "status": "ok",
        "detail": "实读脚本：分辨率不等即 fail=1；fps 用 awk 容差 0.5 判定；codec 非 h264 只告警不 fail；末尾按 fail 决定 exit 0/1。首遍描述准确（未夸大「强制 h264」）。"
      },
      {
        "item": "scripts/ 路径语义（是否 skill 内自带）",
        "status": "discrepancy",
        "detail": "SKILL.md 写 'Packaged helper (`scripts/`)'，实际脚本在**仓库根** motion-design/scripts/，skills/remotion-video/ 目录内没有 scripts/（同仓库 after-effects 却自带 skills/after-effects/scripts/*.jsx）。按单 skill 粒度安装时，`scripts/contact-sheet.sh`、`scripts/probe-mp4.sh` 的相对路径可能解析不到；在仓库根工作则成立。属文档/打包口径问题，非功能缺陷。"
      },
      {
        "item": "外部依赖是否完整（含 reference 里的隐性依赖）",
        "status": "ok",
        "detail": "SKILL.md 显式提及 remotion、zod、@remotion/renderer、web-audio-beat-detector、aubio、staticFile；reference 补充 @remotion/bundler、@remotion/zod-types、@remotion/three、three、@remotion/google-fonts 与 --gl=angle/--scale/--concurrency 等旗标。已全部逐条登记；无未登记的第三方服务。"
      },
      {
        "item": "安全面：有无凭证/环境变量/隐蔽外发",
        "status": "ok",
        "detail": "全目录对 API_KEY/token/secret/env/curl/requests 零命中；脚本只做 ffprobe/ffmpeg 本地操作；网络面仅来自 npx 拉包与（reference 建议的）Google Fonts 预载。第一遍 orange 判定的依据（远程包依赖）成立，且未发现应升档的凭证/绕过行为。"
      },
      {
        "item": "数据驱动「先验一套代表 props」是否真的写进流程",
        "status": "ok",
        "detail": "'Data-driven / batch: verify ONE representative props set via stills before batch-rendering all rows' 位于 verify loop 小节内，且 Output contract 要求「渲染时用实际要发布的 props，而不是 defaultProps」（'render with the SAME props you'll ship'）。流程上有落点。"
      },
      {
        "item": "与 logo-animation 的 tier 路由一致性",
        "status": "ok",
        "detail": "本 skill 自述 'this is the heavy-tier counterpart to a web scene's ?t=N'；logo-animation 侧写 'For web/SVG/Lottie delivery use this standalone-HTML loop; for a video logo sting, render via the remotion-video verify loop instead.'。两端互指一致。"
      },
      {
        "item": "installs / stars 元数据",
        "status": "ok",
        "detail": "installs=3 取自 pool.json（skills.sh-hot 低值采样）；stars 29 / last_push 2026-06-22T13:24:17Z 由 gh api 实采；仓库自 2026-06-22 后无新推送（本地 HEAD 与 origin/main 相同）。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312",
    "sha256": "3d9caacebfc580bf008b661cfa8388c2c983433b1232191dfa760a37be8d39ef",
    "reviewed_by": null,
    "reviewed_at": null
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-15/remotion-video.tar.gz",
    "sha256": "3d9caacebfc580bf008b661cfa8388c2c983433b1232191dfa760a37be8d39ef",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312"
  },
  "original": {
    "github": "https://github.com/iart-ai/motion-design-skills/tree/main/skills/remotion-video",
    "path": "skills/remotion-video",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312"
  }
}