{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "isometric-animation",
  "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": "Local script or command execution: npx playwright screenshot --wait-for-timeout=500 … (inline command in SKILL.md Verify loop)"
    },
    {
      "file": "网络端点",
      "summary": "External network access declaration: The skill itself makes no runtime business API calls; network access originates from the toolchain—npx fetches playwright packages from registry.npmjs.org and downloads Chromium binaries"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact outputs: frame-mid.png (inline screenshot example output in SKILL.md), frame-<t>.png (seek-shot.sh output)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（不沿用第一遍结论）：① 逐个复算 external_deps 的调用点是否真实存在（含仓库根 scripts/ 与 reference 里的 CDN import 原文）；② 对 SKILL.md、reference、仓库根 scripts/*.sh 做凭证/网络 token 扫描（API_KEY / token / env / curl / cookie），反查有无漏网外发；③ 清点 skill 目录资产面，确认「无脚本」结论；④ 把投影主张与代码对账（rotateX(60)/rotateZ(45) 是否真能落到 ±30°、Three.js 是否真用正交相机）；⑤ 核对跨引用可解析性；⑥ 对齐 description 宣称与文中实际兑现的技术面。",
    "second_pass": [
      {
        "item": "外部依赖调用点复核（npx playwright / ffmpeg / three.js / gsap）",
        "status": "ok",
        "detail": "SKILL.md Verify loop 内确有 `npx playwright screenshot --wait-for-timeout=500 \"file://$PWD/iso.html?t=1.2\" frame-mid.png`；仓库根 scripts/seek-shot.sh 与 contact-sheet.sh 分别为 npx playwright 与 ffmpeg；reference 第 7 节确有 `import * as THREE from \"https://cdn.jsdelivr.net/npm/three@0.160/build/three.module.js\";` 与 `import gsap from \"https://cdn.jsdelivr.net/npm/gsap/+esm\";`。四条均落地。"
      },
      {
        "item": "投影主张与代码对账",
        "status": "ok",
        "detail": "`rotateX(60deg) rotateZ(45deg)` 与 reference 给出的 matrix3d 预乘常量（0.707 / 0.409 / 0.816）自洽：cos30≈0.866…、sin30=0.5 与 0.707/0.409 的推导一致，能把地面轴压到屏幕 ±30°；Three.js 用的确为 OrthographicCamera 且 position 三分量相等（10,10,10）→ 经典 iso 视角。未见「用 PerspectiveCamera 冒充 iso」的自相矛盾。"
      },
      {
        "item": "无凭证 / 无 env / 无业务 API 反查",
        "status": "ok",
        "detail": "两个文档与三个仓库脚本中无 API_KEY/token/secret/.env 读取、无 curl/wget、无 fetch 到业务端点；唯一远程动作是包管理器与 CDN 静态资源。判 orange 的依据是「远程包/镜像」，不含凭据读取。"
      },
      {
        "item": "目录资产面清点",
        "status": "ok",
        "detail": "skills/isometric-animation/ 下仅 SKILL.md（178 行）、references/ 一份 253 行 cookbook、0 字节 README.md；无 scripts/、无模板、无数据文件——「纯指令 + 内联代码片段」结论成立。"
      },
      {
        "item": "CDN 依赖的版本纪律差异",
        "status": "discrepancy",
        "detail": "同一份 reference 内两种取法并存：three.js 钉到 0.160（可复现），gsap 走 `+esm` 浮动入口（上游发新版本即变）。这不是错误，但使「同一份 HTML 长期行为一致」的保证只覆盖 three.js 一侧；已在 verdict.risks 中标注。"
      },
      {
        "item": "跨引用可解析性",
        "status": "discrepancy",
        "detail": "SKILL.md 引用的 `scripts/seek-shot.sh`、`scripts/contact-sheet.sh` 位于仓库根，单装本 skill 目录会悬空（需装整个 repo）；正文把「成为视频的一部分」的路径交回同 repo 的 Remotion 路线（remotion still 验证），该技法的归属 skill（remotion-video）不在本 repo 的 5 个 skill 中。"
      },
      {
        "item": "功能声明 vs 实际能力",
        "status": "ok",
        "detail": "frontmatter 宣称覆盖 CSS 3D transforms / SVG iso planes / Three.js OrthographicCamera 且强调 no build step；正文 Build-tool choice 与 reference 第 1–7 节逐条兑现，交付确为单文件 HTML（CDN 方式），无夸大。"
      }
    ],
    "note": "结论仅对本 pin commit（3e2d411b725d9a72939cf8e5eb81579e751373e7）有效。",
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "3e2d411b725d9a72939cf8e5eb81579e751373e7",
    "sha256": "0e7ea0aa5a9ac077dc97886c3c37e53a3359bf48a160e657a8f229fecdcfe847",
    "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/isometric-animation.tar.gz",
    "sha256": "0e7ea0aa5a9ac077dc97886c3c37e53a3359bf48a160e657a8f229fecdcfe847",
    "commit": "3e2d411b725d9a72939cf8e5eb81579e751373e7"
  },
  "original": {
    "github": "https://github.com/iart-ai/explainer-video-skills/tree/main/skills/isometric-animation",
    "path": "skills/isometric-animation",
    "commit": "3e2d411b725d9a72939cf8e5eb81579e751373e7"
  }
}