{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "video-storytelling",
  "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": "Local script or command execution: (No executable CLI entry point inside the skill directory; the two .py files are geometric math modules meant to be imported by the user's project generators)"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Writes project-level compositions/<id>.html (generated via scripts/build_<id>.py; strictly mandates modifying generators rather than editing generated artifacts directly)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 目录清单核对——本 skill 自身共 5 个文件（SKILL.md + reference/design-system.md + reference/patterns/wall-of-slots/{README.md,geom.py,wall.py}）；② SKILL.md 指名的项目级脚本（scripts/qa-*、scripts/build_<id>.py、scripts/integrate.mjs）不在本 skill 目录内，属使用者项目内生成物，故 internal_assets 未列为本 skill 资产（避免虚报），仅在 external_deps 标注其归属；③ token 扫描（http / requests / urllib / os.environ / subprocess / eval / exec）在 *.py 与 *.md 内零命中；④ 逐句抽查门禁段与构建契约段的命令是否自洽（qa-* 均带用途注释，条带命令附缺陷指纹说明）；⑤ 双镜像核对：.claude/skills 与 .agents/skills 下本 skill 的 SKILL.md 字节一致。",
    "second_pass": [
      {
        "item": "两个随包 .py 是否真的无网络/无 env/无子进程（蓝档关键）",
        "status": "ok",
        "detail": "wall.py 仅 import os, sys 用于路径常量与 DEFS 字符串（os 未用于 environ/exec）；geom.py 仅 import math。全目录 grep 无 requests/urllib/socket/http/os.environ/subprocess/eval。结论：几何模块，无执行面。"
      },
      {
        "item": "SKILL.md 的门禁脚本是否真属本 skill（避免把项目内产物算作 skill 资产）",
        "status": "discrepancy",
        "detail": "［判定：口径澄清，非缺陷］SKILL.md 的命令写作 node scripts/qa-tokens.mjs、node scripts/build_<id>.py、node scripts/integrate.mjs——这些是使用者项目里生成的脚本，pin 仓库的 skill 目录内不存在（该目录仅 5 个文件）。本报告因此在 internal_assets 只列随包文件，并在 external_deps 标注门禁脚本属项目内生成物。"
      },
      {
        "item": "参考实现的具体数字与事故能否在源码内定位",
        "status": "unlocatable",
        "detail": "SKILL.md 引用的大量参考构建细节（最亮像素 101/255、35 秒空屏、输入口 glitch、被听成 stutters 的 20-40ms 接缝、speaker 在屏约 40%）来自作者对一段私有参考构建的返工记录；pin 仓库内没有该构建的渲染/日志/qa 输出，故这些数字只作「文档声明」记录，不在结论中当已核事实。方法本身（规则名与门禁名）可在 SKILL.md 内逐条定位。"
      },
      {
        "item": "「门禁不能替代人眼」是否只是修辞（会不会把 qa 脚本当通过依据）",
        "status": "ok",
        "detail": "SKILL.md 明写 'Gates do not replace looking, and gates that have never failed are not gates.'，并要求每条门用已知会触发的 control 验证、在装配体而非 section 原型上验证、可读性必须看 960x540 降采样、运动必须读连续帧条带。规则自洽且可执行。"
      },
      {
        "item": "音频纪律是否与「剪辑不碰词」原则冲突",
        "status": "ok",
        "detail": "SKILL.md 要求在句界插入 4–8 帧房间音（words never touched）、用 40ms 等功率交叉淡入接进尾音衰减、且插入式改动对转写是确定性位移（无需重转写）——与语速/词不被裁切的原则一致，属对反例（硬接造成 cliff）的显式修正。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "0d30152a82b9ceb93cfdd9bdbf46f0d5ab3cde86",
    "sha256": "af02bf58b5fef932a52c2a31a4ebb2403895faa0bb6cb8465abd8781559ff2a8",
    "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/video-storytelling.tar.gz",
    "sha256": "af02bf58b5fef932a52c2a31a4ebb2403895faa0bb6cb8465abd8781559ff2a8",
    "commit": "0d30152a82b9ceb93cfdd9bdbf46f0d5ab3cde86"
  },
  "original": {
    "github": "https://github.com/nateherkai/hyperframes-student-kit/tree/main/.claude/skills/video-storytelling",
    "path": ".claude/skills/video-storytelling",
    "commit": "0d30152a82b9ceb93cfdd9bdbf46f0d5ab3cde86"
  }
}