{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "sprite-animation",
  "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: fonts.googleapis.com (<link> in example.html, loaded by the browser during preview)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① glob 该模板目录全量文件（含隐藏文件）核对资产面；② 在 SKILL.md / example.* 上做 token 扫描（URL / curl / wget / fetch / exec / spawn / process.env / API_KEY / token / secret / \\.env / write / save / append / delete），逐个记录命中位置，用于判定「无脚本、无凭证、无写盘、无运行时外发」；③ 回到仓库源码核对运行时链路（loader.ts 读 frontmatter → shared.ts assemblePrompt → app/api/convert/route.ts spawn CLI → [id]/preview/route.ts 吐 example.html），确认模板不参与执行；④ git HEAD 与 GitHub API 核对 commit / license / stars / pushed_at；⑤ 用 README 与 loader.ts 的字段表交叉核对 frontmatter 语义，并逐个比对 example.html 与正文规格是否一致（本模板的差异项见 second_pass）。",
    "second_pass": [
      {
        "item": "skill 目录的脚本 / 网络 / 凭证 / 写盘面",
        "status": "ok",
        "detail": "目录仅 SKILL.md / example.html 2 个文件，无 scripts/references/数据目录；token 扫描（curl / wget / fetch / exec / spawn / process.env / API_KEY / token / secret / write / save / delete）在该目录的 SKILL.md 中零命中；无自带可执行脚本。"
      },
      {
        "item": "运行时链路复核",
        "status": "ok",
        "detail": "重读 loader.ts / shared.ts / app/api/convert/route.ts / app/api/templates/[id]/preview/route.ts：模板正文只作为 prompt body 被 assemblePrompt 拼装，宿主 spawn 本地 CLI 并捕获 stdout；模板不参与任何执行。"
      },
      {
        "item": "commit 与元数据",
        "status": "ok",
        "detail": "工作副本 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699（＝任务表 pin 的 full 40 位）；GitHub API nexu-io/html-anything：stars 8827、license spdx Apache-2.0、pushed_at 2026-09-15T03:36:24Z（与本地 HEAD 提交时间 2026-09-15 11:36:24 +0800 一致）。"
      },
      {
        "item": "README 与源码的 frontmatter schema 漂移（仓库级）",
        "status": "discrepancy",
        "detail": "README 第 213 / 217 / 468 行称模板 frontmatter 必须含 mode · scenario · surface · preview · design_system；但在 next/src/lib/templates/skills/ 下 '^mode:'、'^surface:'、'^design_system:' 全部零命中，实际字段是 category / scenario / aspect_hint / featured / recommended + example_*（loader.ts 的 SkillFrontmatter）。文档滞后于代码，不影响本模板运行，但照 README 新写模板会踩空。"
      },
      {
        "item": "frontmatter 元数据映射",
        "status": "ok",
        "detail": "loader.ts fmToMeta 逐字段映射 zhName / enName / emoji / description / category / scenario / aspectHint / tags + featured / recommended + example 卡；本模板取自 SKILL.md 的实际取值与之相符。"
      },
      {
        "item": "「不依赖 JS」自证",
        "status": "ok",
        "detail": "example.html 内 <script> 零命中；动效由 5 处 @keyframes（blink/glitch/bob/kana-in 等）与 .ribbon 轨道动画实现，与正文 \"- 动画用 @keyframes, 不依赖 JS\" 一致。"
      },
      {
        "item": "端点扫描（目录内）",
        "status": "ok",
        "detail": "仅 1 个网络端点：fonts.googleapis.com（example.html 第 9 行）；另出现 http://www.w3.org/2000/svg 仅为 SVG 命名空间字符串，不是可请求端点。"
      },
      {
        "item": "example.html 与 SKILL.md 的一致性",
        "status": "ok",
        "detail": "正文五条布局要素均可在示例定位：cream 舞台（--paper 变量）、大字（DM Serif Display 标题）、像素 mascot（内联 SVG 花札 sprite + Press Start 2P）、kinetic 字（kana-in 动画）、ribbon 走马灯。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699",
    "sha256": "64e3233e393eadf6444012b272e01ea623c8306731af698e6ef3b9df92e9e432",
    "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/sprite-animation.tar.gz",
    "sha256": "64e3233e393eadf6444012b272e01ea623c8306731af698e6ef3b9df92e9e432",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  },
  "original": {
    "github": "https://github.com/nexu-io/html-anything/tree/main/next/src/lib/templates/skills/sprite-animation",
    "path": "next/src/lib/templates/skills/sprite-animation",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  }
}