{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "general-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 scripts or commands: node scripts/frame-packets.mjs --project … --storyboard … (local Node script; via hype"
    },
    {
      "file": "网络端点",
      "summary": "Declare external network access: npx hyperframes skills update general-video (command semantics imply fetching skill sets from remote; this skill's own scripts"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: .hyperframes/frame-packets/* (per-scene packet) and _role.md (via frame from hyperframes-core"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 全量文件清单（含隐藏）核对：只有 4 个文件——SKILL.md、scripts/frame-packets.mjs、scripts/frame-packets.test.mjs、sub-agents/frame-worker.md；与 skills-manifest.json 的 files=4 一致，无隐藏文件。② 对 4 个文件做 token 扫描（URL / fetch / curl / process.env / child_process / writeFile / API_KEY|TOKEN|SECRET|.env）：URL 0 命中，fetch 0 命中，process.env 0 命中，凭证 0 命中；唯一命中的 child_process/writeFile 全部在 .test.mjs（测试用临时目录）。③ 逆向核对唯一脚本的真实行为：读 frame-packets.mjs 全文，确认它是薄壳（export buildRolePayload / buildFramePackets + core.runCli），再打开 hyperframes-core/scripts/lib/frame-packets-core.mjs 核对写盘点（第 132-134 行 mkdirSync+writeFileSync(role)、第 170-171 行 mkdirSync + 逐 packet writeFileSync），坐实「写 .hyperframes/frame-packets/」而非臆测。④ 功能声明 vs 实际能力：description 宣称的用途（无专门流程、companion、多场景、品牌/sizzle、蒙太奇、静态循环、标题卡、素材混剪、freeform）与 SKILL.md 的状态机、companion 段、剪辑段、Done 清单逐条对应；未发现超出文本能力的承诺（本 skill 不宣称自己能渲染色调/配音等，一律转 /media-use）。⑤ 组内一致性：与同仓其它 7 个 skill 对比 `skills update` 前置段与 packet 构建方式，general-video 是唯一显式写出『内联 9 分钟 vs 组包 21 分钟』成本对照的 workflow（差异点复核为真）。",
    "second_pass": [
      {
        "item": "唯一脚本是否真的『薄』（有无隐藏功能/网络）",
        "status": "ok",
        "detail": "frame-packets.mjs 全文 37 行，仅 import existsSync/path/url 与 core；导出两个函数并透传 CONFIG；无 fs 写操作、无 fetch、无 env 读取。写盘与模板拼装在 core 中，符合注释自述。"
      },
      {
        "item": "网络 / 凭证 / 注入面",
        "status": "ok",
        "detail": "skill 内 0 处 URL、0 处 fetch、0 处 process.env、0 处凭证关键词；grep 'heygen' 命中的两行是 Figma 段把 figma.com 当输入 URL 的说明与派发成本段，不是 API 调用。第二遍未发现漏掉的网络或凭证路径。"
      },
      {
        "item": "『外部资源』条目逐条回查调用点",
        "status": "ok",
        "detail": "npx hyperframes init/lint/check/snapshot/preview/render/skills update 均在 SKILL.md 正文出现；prefs.mjs/recipe.mjs 路径在 §2 明确定义 <MEDIA_DIR> 为已安装的 /media-use skill 目录；frame-packets-core.mjs import 在脚本原文可验。"
      },
      {
        "item": "frame-worker 输出契约与编排者所有权是否自相矛盾",
        "status": "ok",
        "detail": "frame-worker.md 要求 worker 写两个文件（html + motion.json）并禁止写 <audio>、禁止碰邻居场景文件；SKILL.md §5 第 5 步要求编排者收集 motion.json 并在装配时把时长/进出场向量带入缝合。两侧互补、无冲突。"
      },
      {
        "item": "组内一致性（packet 构建路径与自刷新提示）",
        "status": "ok",
        "detail": "与 product-launch-video / faceless-explainer 对比：三者都调 `node <SKILL_DIR>/scripts/frame-packets.mjs`，但 general-video 的 worker 拿到的是『2–3 场景』而另两者是『一帧一 worker』——这是有意的差异（本 skill 面向长片），已在 traits 注明而非记为出入。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9",
    "sha256": "4d140e0c0bd3b0ae71924d36fc59dfe2b440384f29aa81f2e2ea52cbc7b64efa",
    "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/general-video.tar.gz",
    "sha256": "4d140e0c0bd3b0ae71924d36fc59dfe2b440384f29aa81f2e2ea52cbc7b64efa",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9"
  },
  "original": {
    "github": "https://github.com/heygen-com/hyperframes/tree/main/skills/general-video",
    "path": "skills/general-video",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9"
  }
}