{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "short-form-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": "Local script or command execution: (Verification loop explicitly specified in SKILL.md) `npx remotion still Short out/f-{hook,mid,end}.png --fram"
    },
    {
      "file": "网络端点",
      "summary": "Declared external network access: `npx remotion …`: Fetches packages and CLI from official npm channels (registry.npmjs.org, domain determined by npm, not hardcoded in source) on first run"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Remotion projects generated by agent per skill guidelines, writing out/short.mp4 and out/demo.gif"
    }
  ],
  "verification": {
    "method": "第二遍独立重读（只读 pin commit 2a775336b5a638cbf8a61dbd785f9a1b649be016）：① 目录清单 `find skills/short-form-video -type f` 只返回 3 个 .md；② 打开 references/retention-pacing.md 逐行核对 SKILL.md 的每条主张是否真在代码/表里落地——uneven cuts 调度器、PunchIn、SafeZone 叠加（900×1400 与 120/320/120 三条禁区）、hook 模板库、留存曲线排障表、模板×主题批产脚本，逐项可定位；③ 把 SKILL.md 的安全区数值与 reference 的 SafeZone 组件逐值比对；④ 对全目录 grep `process.env|api[_-]?key|token|cookie|https?://` 确认 0 命中；⑤ 回读仓库根 scripts/{contact-sheet.sh,probe-mp4.sh} 确认只调 ffmpeg/ffprobe；⑥ 对第一遍漏掉的措辞一致性问题做专项比对（hook 帧号），发现 frame 1 与 frame 10 的口径差异。",
    "second_pass": [
      {
        "item": "「hook 必须在第 1 帧上屏」与验证示例取 frame=10 是否矛盾（第一遍未察觉）",
        "status": "discrepancy",
        "detail": "SKILL.md 的硬规则写 \"the hook line is **on-screen as text by frame 1**\"，收尾清单第 2 条也写 \"on-screen text + strongest visual up front\"；但验证示例给的是 `npx remotion still Short out/f-hook.png --frame=10  --props=…`，并注释「~first 3s reads instantly」。10 帧 @30fps ≈ 0.33s，若 hook 文案在 frame 0 才起动画、到 frame 10 才稳定，则两者可并存（示例取的是「稳定可读帧」而非「首帧」）；但文档未说明这一区别，读者可能据此把 hook 动画起始推到第 10 帧，直接违反 frame 1 规则。属对 pin commit 有效的表述出入，非虚假声明。"
      },
      {
        "item": "留存统计数字是否有出处（87% / 70% / 平台阈值 / 58% vs 41%）",
        "status": "unlocatable",
        "detail": "SKILL.md 写 \"~87% decide to stay or swipe inside 3 seconds\"、\"the threshold for distribution sits near **70%+ average view-through** (Shorts ~73%, TikTok ~78%, Reels ~65%)\"、\"videos with an interrupt roughly every 4s hold ~58% vs ~41% for a static talking head\"。仓库内无引用来源、无数据集、无计算脚本；本次为只读侦查且不运行分析，故不验证这些数值，仅记为文档声明（reference 另有 \"Target ≥70% average view-through.\" 同源）。结论中不把它们当作已核事实。"
      },
      {
        "item": "安全区数值在 SKILL.md 与 reference 实现里是否一致",
        "status": "ok",
        "detail": "SKILL.md 表：center 900×1400、top ~120px、bottom ~320px、right ~120px；reference §2 SafeZone 组件逐值对应（`left: 90, top: 260, width: 900, height: 1400` 的框，加高 120 的顶部红带、高 320 的底部红带、宽 120 的右栏），§5 表首行也是「Universal (use this) | ~120px | ~320px | ~120px | center 900×1400 holds on all」。两侧完全自洽。"
      },
      {
        "item": "「不留平坦中段」是否有可执行机制，而非只靠审美",
        "status": "ok",
        "detail": "reference §1 给出帧驱动的 `useShot(cuts)` 调度器与刻意参差的 cuts 数组（`cuts = [0, 1.2, 3.0, 5.4, 8.0, 11.2, 14.0]; // seconds — uneven on purpose`），并配 PunchIn（在切点 snap 到 1.1–1.12 倍）；§4 排障表把「中段持平后骤降」映射到「add interrupts; tighten cut spacing to 2–4s」。机制存在且与主张对应。"
      },
      {
        "item": "跨 skill 委派是否指向真实存在的 skill（防悬空指引）",
        "status": "ok",
        "detail": "SKILL.md 指名 `caption-animation`；该 skill 确实位于同一仓库（skills/caption-animation/SKILL.md，本批次同批侦查）。委派目标存在，且其描述覆盖 word-by-word timing 与 active-word highlight，与本 skill 的说法一致。"
      },
      {
        "item": "跨包共享脚本与 Packaged helper 引用是否真实（防悬空引用）",
        "status": "ok",
        "detail": "SKILL.md 只点名 scripts/contact-sheet.sh 与 scripts/probe-mp4.sh，两者在仓库根存在且可执行，三仓库逐字节相同（md5 b7dcc28034c9bf8fda5d48683e54d8b5 / 167b7977c50f492014e1a6fef8c9ed12）。seek-shot.sh 未被本 skill 点名。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016",
    "sha256": "976ced5900c4ae4fde6e3d950935abc0ee664aedfc544876f1b185e0041bb646",
    "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/short-form-video.tar.gz",
    "sha256": "976ced5900c4ae4fde6e3d950935abc0ee664aedfc544876f1b185e0041bb646",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  },
  "original": {
    "github": "https://github.com/iart-ai/tiktok-video-skills/tree/main/skills/short-form-video",
    "path": "skills/short-form-video",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  }
}