{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "deck-open-slide-canvas",
  "built": "2026-10-26",
  "control_level": 3,
  "control_level_label": "L3 联网",
  "capabilities": [
    "network"
  ],
  "required_controls": {
    "agent": [
      "declare_domain_and_key_scope"
    ],
    "admin": [
      "least_privilege_keys",
      "keep_request_logs"
    ]
  },
  "evidence": [
    {
      "file": "网络端点",
      "summary": "Declared external network access: example.html contains a remote script tag <script src=\"https://cdn.tailwindcss.com\"> and a Goog"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 逐目录列文件并核对字节数，确认无脚本/可执行档；② 对 SKILL.md + example.md + example.html 逐类 token 扫描（http/CDN/script/fetch/XHR/@import/env/token/secret/write/save），把目录内实际命中的端点逐条列出，并区分「skill 正文要求」「产物示例引用」「元数据出处」；③ 交叉核对 CLI 关键词路由表、README 模板表与 frontmatter（三处对同一模板的描述是否一致）；④ 核对宿主壳链路（loader.ts 读 body → shared.ts assemblePrompt → agents/invoke.ts spawn；/api/templates/[id]/preview 原样返回 example.html；iframe sandbox 取值）并确认其不参与档位判定；⑤ 用 grep 统计每份 example.html 的 <section> / class 含 slide / data-slide-id / aside.notes 数量，核对样例是否真的符合 lib/deck.ts 的页容器约定；⑥ 功能声明 vs 正文的夸大检查：description 宣称的结构与铁律是否逐条存在。",
    "second_pass": [
      {
        "item": "文件清单（3 个文件，无脚本）",
        "status": "ok",
        "detail": "SKILL.md(2930B) / example.md(192B) / example.html(2317B)；无 .sh/.py/.js/.mjs/.ts，目录内无可执行代码。"
      },
      {
        "item": "目录内端点与档位依据",
        "status": "ok",
        "detail": "SKILL.md:53「单文件 HTML; Tailwind CDN; 不要外链图片。」= 正文唯一 CDN 字样（端点 URL 见 example.html）；example.html 另有 fonts.googleapis.com 字体 @import 与 frontmatter 的 github.com/1weiho/open-slide 出处置标——均属产物引用/元数据，不判级。"
      },
      {
        "item": "无凭证读取",
        "status": "ok",
        "detail": "目录内 key/secret/token/.env/keychain 全部零命中。"
      },
      {
        "item": "无写盘指令",
        "status": "ok",
        "detail": "目录内 write/save/append 零命中；共享指令反而明令禁止文件系统工具。"
      },
      {
        "item": "画布硬规格可复核",
        "status": "ok",
        "detail": "SKILL.md 逐字含 1920px/1080px、transform: scale、默认 scale(0.7)、禁止 overflow 四条。"
      },
      {
        "item": "10 级字号表与 4 套调色板可复核",
        "status": "ok",
        "detail": "字号表 2xs:18 … 5xl:220 与 Ash & Lime / Sea Indigo / Mate Mocha / Pearl Rose 四套 hex 均在正文逐字存在。"
      },
      {
        "item": "frontmatter 与 loader 读取面一致",
        "status": "ok",
        "detail": "featured/recommended/example_* 等字段都在 loader.ts 白名单 case 内，可被 fmToMeta 读成选择器元数据。"
      },
      {
        "item": "official_desc 逐字命中",
        "status": "ok",
        "detail": "meta.official_desc 取自 SKILL.md 第 6 行 description 引号内原文，未改写。"
      },
      {
        "item": "CLI 路由行存在",
        "status": "ok",
        "detail": "cli/src/skills-matcher.ts 第 72 行 open slide/canvas 行逐字命中。"
      },
      {
        "item": "宿主壳证据（不判级）",
        "status": "ok",
        "detail": "宿主壳证据：loader.ts 读出 body → shared.ts assemblePrompt 拼成 prompt → agents/invoke.ts spawn 本机 agent CLI 并取 stdout；预览由 /api/templates/[id]/preview 原样返回 example.html，iframe 带 sandbox=\"allow-scripts allow-same-origin\"（template-picker.tsx:544 / preview-pane.tsx:297）。按批4口径这些宿主行为不参与档位判定，仅作说明。"
      },
      {
        "item": "出处置标与 README 第三方来源表一致",
        "status": "ok",
        "detail": "README.md:「[`deck-open-slide-canvas`](next/src/lib/templates/skills/deck-open-slide-canvas/) | 1920×1080 agent-native canvas (from [1weiho/open-slide](https://github.com/1weiho/open-slide)) |」与 frontmatter example_source_url 同源。"
      },
      {
        "item": "样例产物未遵守本模板自己的页容器约定（discrepancy）",
        "status": "discrepancy",
        "detail": "SKILL.md:30 要求「每页有 `<section class=\"slide\" data-slide-id=\"<n>\">`」，但 example.html 内 <section> 计数为 0，slide 类挂在一个 <div class=\"slide-frame canvas grain relative\"> 上；应用侧 lib/deck.ts 的 SLIDE_RE 只匹配 <section … class 含 slide …>，因此该样例不会被识别为 deck（isDeck=false，逐页导出/备注面板不生效）。结论对本条目的档位无影响（属样例与规格不一致，且应用侧另有降级路径）。"
      },
      {
        "item": "产出质量无法在只读侦查中定位",
        "status": "unlocatable",
        "detail": "example.html 是仓库手工提交的静态样例；本轮无法在本机重跑生成链路（需真实 agent CLI + 模型额度），「模板在真实模型上的版面自由度兑现程度」只依据文本规格判断，未做产出复现。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699",
    "sha256": "993c6c72c87e99e39bc548cbe4f1b644ac887740dc3abf823b972dc0e7a45d0c",
    "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/deck-open-slide-canvas.tar.gz",
    "sha256": "993c6c72c87e99e39bc548cbe4f1b644ac887740dc3abf823b972dc0e7a45d0c",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  },
  "original": {
    "github": "https://github.com/nexu-io/html-anything/tree/main/next/src/lib/templates/skills/deck-open-slide-canvas",
    "path": "next/src/lib/templates/skills/deck-open-slide-canvas",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  }
}