{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "slideshow",
  "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: No bundled scripts inside this skill directory (contains 2 files: SKILL.md + references/standalone-harness.md); ha"
    },
    {
      "file": "网络端点",
      "summary": "Declare external network access: Artifact runtime (unrated per conventions, logged only): harness Three.js sample imports three@0.160.0 from cdn.jsdelivr.net, fetched by the browser"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Project files (authored by agent): composition HTML (containing island and scene divs), wrapper/index.html, and composition/"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 全量文件清单核对（含隐藏）= skills/slideshow/SKILL.md（532 行）+ skills/slideshow/references/standalone-harness.md（1017 行）共 2 个，与 skills-manifest.json 的 files=2 一致；② token 扫描（http(s) URL / fetch( / process.env / child_process / writeFile / TOKEN|KEY|SECRET）逐条打开核对；③ 把「示例代码」与「可执行脚本」区分开（目录内无脚本，harness 内是参考实现）；④ 逐条回查 external_deps 的调用点是否真实存在；⑤ 找反例：是否存在未声明的网络调用或隐藏执行面。",
    "second_pass": [
      {
        "item": "网络面是否真如声明（蓝档判定的关键反例检查）",
        "status": "ok",
        "detail": "全目录仅 1 处 http(s) 命中：standalone-harness.md 第 895 行的 three@0.160.0 jsdelivr 导入（示例代码块内）；无 fetch(、无 process.env、无 child_process、无凭证关键词。SKILL.md 侧只有本地命令（present/lint/check/preview/snapshot）与浏览器 API（BroadcastChannel/localStorage/postMessage），均为本地或浏览器内行为。"
      },
      {
        "item": "「禁止 render」的声明是否与机理自洽（不是随口警告）",
        "status": "ok",
        "detail": "SKILL.md 给出原因：deck 由多个顶层 scene 合成（每页一个 data-composition-id）且**没有 master-root 合成**，所以 render 只解析第一个合成，产出静默截断的 MP4（举例 6s/40s）；并说明线性导出（仅主线、排除分支）目前是 deferred，故支持输出为 present 活 deck 与逐页 snapshot。声明与结构描述一致。"
      },
      {
        "item": "island 的「静态可读」要求与 present 行为是否一致",
        "status": "ok",
        "detail": "文档明确 present 静态解析合成 HTML、期望真实的 application/hyperframes-slideshow+json 已存在，并禁止用另一个 application/json 块 + 运行时代码生成 island。这与「JSON 岛是唯一真源、sceneId 必须匹配 data-composition-id」的 lint 契约自洽。"
      },
      {
        "item": "harness 内容是否被当成正统做法（避免误判为「本 skill 主张两套实现」）",
        "status": "ok",
        "detail": "harness 开头即写 interim framing（临时绕行）与「When that path ships, most of what follows collapses」，SKILL.md 亦写「Do not treat the patterns there as the blessed model」。两处口径一致，属过渡文档而非第二套正统。"
      },
      {
        "item": "是否存在夸大（把引擎/播放器能力算作本 skill 能力）",
        "status": "ok",
        "detail": "文档反复把导航、presenter mode、媒体清理、静音归给共享播放器组件（<hyperframes-slideshow> / SlideshowController / hyperframes-player.stopMedia），本 skill 只声明 island 数据契约与写作/移植纪律，未见据他人之功。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "d2f0bc7f34837da54ae22063772d75d75ce26477",
    "sha256": "034ea590dd179243341392eb59ec2733eb2afd15f87f5e1300cbc2c5dcffbf61",
    "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/slideshow.tar.gz",
    "sha256": "034ea590dd179243341392eb59ec2733eb2afd15f87f5e1300cbc2c5dcffbf61",
    "commit": "d2f0bc7f34837da54ae22063772d75d75ce26477"
  },
  "original": {
    "github": "https://github.com/heygen-com/hyperframes/tree/main/skills/slideshow",
    "path": "skills/slideshow",
    "commit": "d2f0bc7f34837da54ae22063772d75d75ce26477"
  }
}