{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "presentation-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: No built-in scripts inside the skill directory; SKILL.md/reference instructs agent to execute `npm i remotion @remotion/tra"
    },
    {
      "file": "网络端点",
      "summary": "Declared external network access: No operational API calls during runtime; narration audio consists of local files measured locally by Remotion."
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Writes `out/f-title.png`/`out/f-mid.png`/`out/f-end.png`, `out/deck.mp4`, `o` inside the user project."
    }
  ],
  "verification": {
    "method": "第一遍读全目录（SKILL.md + sequencing.md + slide-components.md + 仓库根 scripts/），逐条摘录逐字引用；第二遍独立重读并找茬：① 交叉核对 SKILL.md 与两份 reference 的常量（HANDLE 0.4、theme 数值）与规则（转场记账、音频挂载点）；② 追查依赖是否在 SKILL.md 层被声明（发现 @remotion/google-fonts 只在 pitfalls 出现，且是一处真实出网路径）；③ 对「旁白生成方式」做定位尝试，确认源码未指定任何 TTS 端点，记 unlocatable；④ token 扫描凭证面；⑤ 拼装脚本内置与 tools/verify_analysis.py 同口径的 quote 回源校验。仓库元数据 stars/last_push 取自 GitHub API 快照 2026-09-28。",
    "second_pass": [
      {
        "item": "音频量测与 HANDLE 数值是否两处一致",
        "status": "ok",
        "detail": "SKILL.md 代码块 `const HANDLE = 0.4; // breathing room after the voice ends` 与 sequencing.md 的 `const HANDLE = 0.4; // seconds of breathing room after each voice line` 同值。"
      },
      {
        "item": "theme 数值是否与 reference 一致",
        "status": "ok",
        "detail": "SKILL.md 示例 theme（bg #0B0B12 / fg #F5F5F7 / accent #6C5CE7 / titlePx 72 / bodyPx 30 / maxWidthPct 90）与 slide-components.md 的 theme.ts 逐项相同。"
      },
      {
        "item": "转场帧预算的声明与实现",
        "status": "ok",
        "detail": "SKILL.md「A transition borrows frames from both neighbors, so add its length back into the slide budget」与 sequencing.md 的记账规则（slide.durationInFrames += TRANSITION）同口径。"
      },
      {
        "item": "@remotion/google-fonts 的声明层级",
        "status": "discrepancy",
        "detail": "@remotion/google-fonts 只出现在 sequencing.md 的 pitfalls（作为可选建议），SKILL.md 既未列入依赖面、也未提示渲染期可能访问 Google Fonts；照抄该建议会产生未声明的出网行为。"
      },
      {
        "item": "SKILL.md 内联组件与 reference 组件是否冲突",
        "status": "ok",
        "detail": "SKILL.md 的 Bullet 用 spring(...durationInFrames: 12) + interpolate(p,[0,1],[18,0])，reference 用 useEnter() 封装同一动效；属精简版与封装版的关系，非矛盾。"
      },
      {
        "item": "旁白生成方式是否被声明",
        "status": "unlocatable",
        "detail": "SKILL.md workflow 第 2 步写「Generate/record narration per slide.（One audio file per slide (TTS or recorded).）」但未指名任何 TTS 服务或端点——属用户自备素材；「无 TTS 端点」这一结论无法在源码内定位到明确声明，故记 unlocatable（非档位依据）。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "8ce2709c3992490251e8a991535b1945f01c6865",
    "sha256": "c9a450ffb476b92fadd23df7b838303df540e8c5514a609eb3f4c4e7209e95f5",
    "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/presentation-video.tar.gz",
    "sha256": "c9a450ffb476b92fadd23df7b838303df540e8c5514a609eb3f4c4e7209e95f5",
    "commit": "8ce2709c3992490251e8a991535b1945f01c6865"
  },
  "original": {
    "github": "https://github.com/iart-ai/data-animation-skills/tree/main/skills/presentation-video",
    "path": "skills/presentation-video",
    "commit": "8ce2709c3992490251e8a991535b1945f01c6865"
  }
}