{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "caption-animation",
  "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": "Local script or command execution: `npx @remotion/install-whisper-cpp`: One-time installation of whisper.cpp and model files into the project directory (offline transcription path)"
    },
    {
      "file": "网络端点",
      "summary": "External network access declaration: (Optional, non-default) When selecting AssemblyAI / Deepgram / OpenAI Whisper API, user audio assets leave the local machine to third-party transcription services; re"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact generation: Remotion projects (src/, Root/Composition, zod schema) constructed by the agent under this skill, along with out/capti"
    }
  ],
  "verification": {
    "method": "第二遍独立重读（换角度抓第一遍的错），全部结论取自 pin commit 2a775336b5a638cbf8a61dbd785f9a1b649be016 的只读源码：① 文件清单核对——`find skills/caption-animation -type f` 只返回 3 个 .md（SKILL.md、references/word-timed-captions.md、README.md 1426B），确认目录内无脚本、无模板、无资产；② 关键词全域扫描——skills/ 下 `https?://`（排除 iart.ai）、`process.env`、`api[_-]?key`、`token`、`cookie`、`keychain`、`secret` 全部 0 命中；③ 脚本回读——仓库根 scripts/{contact-sheet.sh,probe-mp4.sh,seek-shot.sh} 逐行读过，分别只调 ffmpeg hstack、ffprobe、`npx -y playwright screenshot`（file:// 本地页面），无 curl/wget/外发；三仓库这三支脚本逐字节相同（md5 见 second_pass）；④ 声明-实现对照——SKILL.md 声明的库 API（createTikTokStyleCaptions、Caption 类型、@remotion/install-whisper-cpp 的 transcribe/toCaptions）与 reference §2/§4/§5 的示例导入名一致，没有互相矛盾的函数名；⑤ 逐条打开 SKILL.md 的「Packaged helper」行确认它点名的两支脚本确实存在于仓库根且行为与描述相符（probe-mp4.sh 在断言失败时 exit 1）。",
    "second_pass": [
      {
        "item": "skill 目录内是否真的没有可执行代码（档位判定的关键证据）",
        "status": "ok",
        "detail": "`find iart-tiktok-video-skills/skills/caption-animation -type f` 只列出 SKILL.md / references/word-timed-captions.md / README.md；目录内没有 .mjs/.sh/.ts 等可执行文件。SKILL.md 引用的 scripts/*.sh 实际位于**仓库根**（三仓库各一份），并非 skill 目录内资产——本报告按「SKILL.md 明列的使用路径」把它们计入 scripts_executed，但档位判定仍以 skill 目录内行为为主，两者结论一致（蓝）。"
      },
      {
        "item": "全部外链是否只是文档链接而非运行时端点",
        "status": "ok",
        "detail": "对 skills/ 全域 grep `https?://`（排除 iart.ai）零命中；唯二命中是 reference 与 README 末尾的 `https://iart.ai/?utm_source=github&utm_medium=…` 营销/引流链接，以及 skill 内代码里的 `file://`? 无。因此不存在「执行期外发」。"
      },
      {
        "item": "云转写替代路径是否构成现实风险（要不要升橙）",
        "status": "ok",
        "detail": "reference §2 原文只有一行：`- Cloud alternatives (AssemblyAI, Deepgram, OpenAI Whisper API) also return word timing — map their words[] into Token the same way.`，SKILL.md 管线表也只在工具列把 AssemblyAI 与 Whisper 并列。源码未规定任何 endpoint、key 读取方式或上传动作；默认路径是本地 whisper.cpp。按批4 细则2（可选的替代方案不判级）维持蓝档，但已在 risks 写明触发条件。"
      },
      {
        "item": "验收断言的措辞是否与 reference 的实现一致（防第一遍想当然）",
        "status": "ok",
        "detail": "SKILL.md 要求「第 90 帧高亮的词必须是覆盖 90/fps 的 token」；reference §5 的窗口组件正是 `active={now >= t.startMs && now < t.endMs}`（now = frame/fps×1000 系）；两侧同一判据，无漂移空间。"
      },
      {
        "item": "性能声明「Whisper medium.en ≈ 2x faster than large」是否有据可查",
        "status": "unlocatable",
        "detail": "仓库内无基准脚本、无数据文件、无引用来源；本次为只读侦查且不得运行转写，故不验证该倍数，仅作为文档声明记录，不作为结论。"
      },
      {
        "item": "light tier（seek-shot.sh + `?t=N` harness）对本 skill 是否可用",
        "status": "discrepancy",
        "detail": "scripts/README.md 把 seek-shot.sh 标为 Light tier（驱动页面的 `?t=N` seek harness），但 caption-animation 的 Web/CSS 路径（reference §6 的 renderTrack）只做 track 渲染，**没有提供 seek harness**；本 skill 的「Packaged helper」行也只点名 contact-sheet.sh 与 probe-mp4.sh（Heavy tier），未提 seek-shot.sh。结论：该脚本对本 skill 属仓库级通用件而非本 skill 承诺的能力，读者不应假定 light tier 可用——这是对 pin commit 有效的真实出入（非错误声明，因 SKILL.md 从未承诺）。"
      },
      {
        "item": "三仓库共享脚本是否同内容（跨包一致性）",
        "status": "ok",
        "detail": "三仓库 scripts/ 逐字节相同：contact-sheet.sh b7dcc28034c9bf8fda5d48683e54d8b5、probe-mp4.sh 167b7977c50f492014e1a6fef8c9ed12、seek-shot.sh 24a4130cd1e64874154429b0b4af12da"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016",
    "sha256": "1b958f9e09758504deef07cd291b301c88e238337f9db17dbb49d6c28b47a883",
    "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-28/caption-animation.tar.gz",
    "sha256": "1b958f9e09758504deef07cd291b301c88e238337f9db17dbb49d6c28b47a883",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  },
  "original": {
    "github": "https://github.com/iart-ai/tiktok-video-skills/tree/main/skills/caption-animation",
    "path": "skills/caption-animation",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  }
}