{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "lower-thirds",
  "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": "Executes local scripts or commands: (Verification loop explicitly listed in SKILL.md) `npx remotion still LowerThird out/f-{enter,dwell,exit}.p`"
    },
    {
      "file": "网络端点",
      "summary": "Declares external network access: `npx remotion …`: initial run fetches packages and CLI via official npm channels (registry.npmjs.org, domain governed by npm, not hardcoded in source)"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Remotion projects and out/lower-third.mp4, out/demo.gif generated by the agent following this skill"
    }
  ],
  "verification": {
    "method": "第二遍独立重读（只读 pin commit 2a775336b5a638cbf8a61dbd785f9a1b649be016）：① 目录清单 `find skills/lower-thirds -type f` 只返回 3 个 .md，确认无脚本/资产；② 打开 references/lower-third-component.md 逐行读组件，核对 SKILL.md 的三条规则是否真在实现里成立——错峰顺序（bar→name→role）、从片段末尾反推的更快出场、Theme/BRAND 品牌锁定对象、Series 多实例、jq 批量脚本、CSS 版与 wipe-bar 变体，逐项可定位；③ 对全目录 grep `process.env|api[_-]?key|token|cookie|https?://` 确认 0 命中（唯一外链是 README 的 iart.ai UTM）；④ 回读仓库根 scripts/{contact-sheet.sh,probe-mp4.sh,seek-shot.sh} 确认只调 ffmpeg/ffprobe/本地 playwright 截图，无外发；⑤ 对 reference 的批量脚本逐行审读，发现文件名派生未净化（见 second_pass discrepancy 条）。",
    "second_pass": [
      {
        "item": "SKILL.md 的三条「防廉价规则」是否真在 reference 组件里被实现（防第一遍只读散文）",
        "status": "ok",
        "detail": "reference §1 明写 \"Enter staggers the bar, name, then role; exit is computed from the end of the clip so the title leaves faster than it arrived.\"，组件导入 `Sequence, interpolate, spring, useCurrentFrame, useVideoConfig`，Theme 类型与 BRAND 对象齐备（font/bar/name/role/radius/marginPct）。规则 → 代码可逐条对应，非空头承诺。"
      },
      {
        "item": "reference 批量脚本的文件名派生是否会越出输出目录（第一遍遗漏的面）",
        "status": "discrepancy",
        "detail": "原文：`slug=$(echo \"$row\" | jq -r '.name' | tr '[:upper:] ' '[:lower:]-')` 紧接 `npx remotion render LowerThird \"out/${slug}.mp4\" --props=\"$row\"`。tr 只做大小写与空格到连字符的映射，不剥离 `/`、`..`、前导 `-` 等字符；若 roster 的 name 含路径分隔符，输出路径可越出 out/。这是数据→文件名的注入面，仅影响本地写入位置，不构成权限提升；SKILL.md 正文未把它写成安全事项。属对 pin commit 有效的真实出入（脚本可改进，非虚假声明）。"
      },
      {
        "item": "「9:16 抬高档位」是否在代码里有对应实现（不只是表格建议）",
        "status": "ok",
        "detail": "reference 的 Quick reference 表给出「9:16 placement | `baseline 0.80→0.70` / the media query」，说明竖屏不是靠新组件，而是同一组件换基线/媒体查询；与 SKILL.md「lift the band up」一致。"
      },
      {
        "item": "「3–5s 停留」「≥1.6× 字号对比」这类经验值是否有出处",
        "status": "unlocatable",
        "detail": "SKILL.md 写 \"Roughly 3–5s on screen (read it aloud twice).\" 与 \"**Size contrast** ≥ 1.6×\"，仓库内无测量脚本、无引用来源、无 A/B 数据；属经验判据，不作为已核事实，仅记为文档建议。"
      },
      {
        "item": "跨包共享脚本与「Packaged helper」引用是否真实存在（防悬空引用）",
        "status": "ok",
        "detail": "SKILL.md 只点名 scripts/contact-sheet.sh 与 scripts/probe-mp4.sh；两者在仓库根真实存在且可执行（-rwxr-xr-x），三仓库逐字节相同（contact-sheet.sh md5 b7dcc28034c9bf8fda5d48683e54d8b5、probe-mp4.sh 167b7977c50f492014e1a6fef8c9ed12）。seek-shot.sh 未被本 skill 点名，不构成悬空引用。"
      },
      {
        "item": "透明叠加输出建议是否是真实可用的编码路径",
        "status": "ok",
        "detail": "reference 给的是 Remotion CLI 自身的参数（`--codec=prores --prores-profile=4444` 或 `--image-format=png`），属该工具既有能力，非虚构 flag；能否落地取决于用户环境的 prores 支持，但命令形式正确。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016",
    "sha256": "5b146268b6b14b5c5aa14b5dd12d6a72de476e5234baa0bccdeccdc9b8e68770",
    "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/lower-thirds.tar.gz",
    "sha256": "5b146268b6b14b5c5aa14b5dd12d6a72de476e5234baa0bccdeccdc9b8e68770",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  },
  "original": {
    "github": "https://github.com/iart-ai/tiktok-video-skills/tree/main/skills/lower-thirds",
    "path": "skills/lower-thirds",
    "commit": "2a775336b5a638cbf8a61dbd785f9a1b649be016"
  }
}