{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "captions-and-music-bed",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "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: (Executed by host agent) ffmpeg: caption burn-in and audio mixing chains (aresample/aformat/asplit/sidechaincompress/)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write & artifact generation: ASS caption files under captions/"
    }
  ],
  "verification": {
    "method": "第二遍：① 目录清单 skills/captions-and-music-bed = SKILL.md + 2 个 references，无脚本；② 正则扫描本目录（https?:// / api / token / cookie / .env / curl / wget / npx）零端点零凭证；③ 把 references 里的 FFmpeg 片段按 filtergraph 语法逐条检查连通性（asplit 两路、sidechaincompress 的 main/sidechain 顺序、amix=dropout_transition 与 alimiter）；④ 回查本 skill 是否点名了 ASS 生成脚本，以及模板结构与脚本期望是否一致（脚本以 Dialogue: 之前的部分当 header）；⑤ 核对 Arial 字体依赖与 ASS 样式字段。",
    "second_pass": [
      {
        "item": "「无外部依赖、素材不出网」是否成立",
        "status": "ok",
        "detail": "本目录正则扫描零命中 URL/fetch/token；音乐源与脚本均声明为用户提供（Music source rules 只讲 offset/duck/tail）。无上传、无生成服务、无账号额度消耗，不构成橙档。"
      },
      {
        "item": "ducking 片段是否是可执行 filter_complex",
        "status": "ok",
        "detail": "music-ducking.md 给的是四行完整链（asplit 出 narr/side 经 sidechaincompress 得 ducked 再 amix inputs=2 duration=first 后 alimiter=limit=0.95），参数（threshold=0.028:ratio=4:attack=18:release=260）具体非占位，可原样拼接。"
      },
      {
        "item": "ASS 模板能否被仓库脚本直接复用",
        "status": "ok",
        "detail": "templates/caption-style.ass 结构与 scripts/build_ass_captions.py 的 header_from_template 期望一致：脚本取 Dialogue: 之前的部分当 header；模板 [Events] Format 行的字段数（Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text）与脚本输出的 Dialogue 行匹配。"
      },
      {
        "item": "「本 skill 负责生成 ASS」是否被 SKILL.md 声明",
        "status": "discrepancy",
        "detail": "SKILL.md 只给样式起点与规则，未点名 scripts/build_ass_captions.py；把字幕文件从哪来写进脚本清单的是 render-qa-and-surgical-changes 与仓库 README。若只加载本件，agent 需自行决定生成方式（手写 ASS 或调仓库脚本）。"
      },
      {
        "item": "字体依赖是否被声明",
        "status": "discrepancy",
        "detail": "ASS 样式行写死 Fontname=Arial，但 SKILL.md 与 references 均未提示字体缺失风险；Linux 渲染机常无 Arial，libass 会回退替换字体，字号与行宽观感与预览不同。该风险真实存在但文档未覆盖。"
      },
      {
        "item": "QA 判据是否可自动验证",
        "status": "ok",
        "detail": "SKILL.md 把听觉/视觉可读列为主判据（Check music is present and audible, not merely technically in the stream.），并给 probe 音频流作为辅助——即承认脚本只能验一半，另一半需人耳/人眼预览。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4",
    "sha256": "07c0b567449820c1f6c21ef942f82fb34548c6b18951beb7c2823ee88cb1541f",
    "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/captions-and-music-bed.tar.gz",
    "sha256": "07c0b567449820c1f6c21ef942f82fb34548c6b18951beb7c2823ee88cb1541f",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4"
  },
  "original": {
    "github": "https://github.com/saranambiar/hyperframes-video-agent-skills/tree/main/skills/captions-and-music-bed",
    "path": "skills/captions-and-music-bed",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4"
  }
}