{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "render-qa-and-surgical-changes",
  "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": "Execute local scripts or commands: (executed by host agent, located in repository root scripts/, not bundled in skill directory) scripts/probe_media.py — invokes ffprobe"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: probe text or console summary (QA output package)"
    }
  ],
  "verification": {
    "method": "第二遍：① 目录清单 skills/render-qa-and-surgical-changes = SKILL.md + references/failure-modes.md，无自带脚本——本 skill 的执行面全在仓库根 scripts/；② 逐个打开六个脚本核对：import 清单（argparse/csv/json/re/shutil/subprocess/pathlib）、有无网络模块（无 urllib/requests/http/socket）、调用点（ffprobe/ffmpeg 经 shutil.which + subprocess.run，captions 与 scan 与 plan 为纯文件 I/O）；③ 回查 SKILL.md 点名的六个脚本在 pin 内是否都存在；④ 核对「精确时间戳三帧」与 extract_proof_frames.py 的能力是否匹配（-ss 单时刻抽帧、可重复 --time、支持 --contact-sheet）；⑤ 检查 Stop Conditions 是否与 templates/change-request.md 的 Preserve 段互补。",
    "second_pass": [
      {
        "item": "本 skill 的执行面「无网络」是否成立（逐个脚本核对）",
        "status": "ok",
        "detail": "六个脚本的 import 只有 argparse/csv/json/re/shutil/subprocess/pathlib（scan_theme_colors 另用 re/pathlib），无 urllib/requests/socket/http；子进程调用仅 ffprobe/ffmpeg，参数为本地路径。故无素材外发、无端点查询，不构成黄档或橙档。"
      },
      {
        "item": "SKILL.md 点名的六个脚本是否都真实存在",
        "status": "ok",
        "detail": "pin 内 scripts/ 下有 build_ass_captions.py、extract_proof_frames.py、make_contact_sheet.py、probe_media.py、scan_theme_colors.py、timeline_manifest_to_ffmpeg.py——与 SKILL.md 的 Use repo scripts when available 清单逐项对应。"
      },
      {
        "item": "「抽该时刻 + 略前 + 略后」是否可用脚本实现",
        "status": "ok",
        "detail": "extract_proof_frames.py 接受可重复的 --time（label=timestamp 形式），每个时刻用 ffmpeg -ss 精确抽一帧并按序号与标签命名，可直接表达 0.05s 级的前后帧；--contact-sheet 可一次拼出对比表。"
      },
      {
        "item": "本 skill 是否点名了 ffmpeg/ffprobe 本身",
        "status": "discrepancy",
        "detail": "SKILL.md 全文只点名仓库脚本（含名字里带 ffmpeg 的 timeline_manifest_to_ffmpeg.py），未直接写 ffprobe/ffmpeg 命令；CLI 依赖由脚本内部承担（probe_media.py 的 shutil.which(\"ffprobe\")、extract_proof_frames.py 的 shutil.which(\"ffmpeg\") 缺失即报错退出）。使用者需知道脚本依赖 PATH 上的 ffmpeg/ffprobe。"
      },
      {
        "item": "「生成物不入库」与仓库实际忽略规则是否一致",
        "status": "ok",
        "detail": "SKILL.md 的 Generated QA files do not need to be committed unless they are public examples. 与仓库 .gitignore（忽略 renders/、snapshots/、assembly/、captions/*.ass、captions/*.json 与各类视频扩展名）一致。"
      },
      {
        "item": "QA 输出包的五个产物是否都有生成路径",
        "status": "ok",
        "detail": "probe 摘要来自 probe_media.py；proof-*.png 来自 extract_proof_frames.py；contact-sheet.jpg 来自 extract_proof_frames.py 的 --contact-sheet 或 make_contact_sheet.py；preview-*.mp4 由宿主用 ffmpeg 生成（文档未点名脚本，属流程项）；最终渲染路径由项目输出。除 preview 外均有随包工具。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4",
    "sha256": "47a9915a5d91b66531622039fb4d66f2e30f2ed5fc94a792e82352a35b002615",
    "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/render-qa-and-surgical-changes.tar.gz",
    "sha256": "47a9915a5d91b66531622039fb4d66f2e30f2ed5fc94a792e82352a35b002615",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4"
  },
  "original": {
    "github": "https://github.com/saranambiar/hyperframes-video-agent-skills/tree/main/skills/render-qa-and-surgical-changes",
    "path": "skills/render-qa-and-surgical-changes",
    "commit": "f6b043d9fd3b8a9820af143a47db8c74f1194fb4"
  }
}