{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "map-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": "Executes local scripts or commands: npx remotion still / render (SKILL.md Verify loop): fetches and runs Remotion CLI on demand from npm"
    },
    {
      "file": "网络端点",
      "summary": "Declares external network access: Google Earth Studio (earth.google.com/studio): Path A camera keyframing and user interaction in Google's web app"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: out/*.mp4, out/demo.gif, out/f-*.png (final renders and frame-by-frame stills), sheet.png (spritesheet/contact sheet)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（不沿用第一遍结论）：① 逐个复算 external_deps 的调用点是否真实存在（含两份 reference 的 import/URL 原文与仓库根 scripts/ 实现）；② 反查有无隐蔽外发/凭证读取（API_KEY、token、env、cookie、curl）——特别检查 Earth Studio 路径是否会由 agent 代做登录；③ 复核 12fps 量化实现与文字描述是否一致（含 AE 侧等价做法）；④ 复核「共享坐标空间」主张是否在各覆盖层代码中成立；⑤ 核对坐标序/antimeridian 等 gotchas 是否被明示；⑥ 核对跨引用可解析性；⑦ 对齐 description 宣称与文中兑现的能力。",
    "second_pass": [
      {
        "item": "外部依赖调用点复核（npx remotion / d3-geo / zod / Earth Studio / 底图数据）",
        "status": "ok",
        "detail": "SKILL.md 确有 `npx remotion still MapSeq out/f-start.png ...` 与 `npx remotion render MapSeq out/map.mp4`；SKILL.md 代码块确有 `import { geoMercator, geoPath } from \"d3-geo\";`；vector-maps 确有 `export const schema = z.object({` 与 Natural Earth/world-atlas 建议；earth-studio-to-ae 确有 earth.google.com/studio 与 3D Camera Export 告警。全部落地。"
      },
      {
        "item": "Earth Studio 路径是否引入 agent 侧凭证行为",
        "status": "ok",
        "detail": "文档措辞是「Keyframe in Earth Studio (browser)」「In After Effects: … Run Script File…」——由人操作；skill 未要求 agent 登录 Google、未涉及任何 cookie/token 读取。故不计入 credential_reads，只作为外部服务依赖记入 external_deps 并在 reason 中标注账号前提。"
      },
      {
        "item": "12fps 量化实现与描述一致性",
        "status": "ok",
        "detail": "SKILL.md 的代码块 `const STEP = Math.round(fps / 12); const f = Math.floor(frame / STEP) * STEP;` 与文字「at 24fps, hold each graphic-layer value for 2 frames (update on even frames only)」一致；vector-maps 用同一写法并额外给出 `Math.max(1, …)` 的 30fps 保护；AE 侧给了 posterizeTime(12) 与 12fps 嵌套 precomp 两种等价做法。三处口径一致。"
      },
      {
        "item": "「共享坐标空间」主张的成立性",
        "status": "ok",
        "detail": "矢量路径中底图用 `toPath(feat)`、pin/route/label 用 `px([lng,lat])`（同 projection），相机是对同一 group 的 transform；AE 路径则用 track null + `toComp([0,0,0])` 表达式。两条路都确实把「元素锁定」交给共享坐标系，而非逐元素手调关键帧。"
      },
      {
        "item": "坐标序与投影边界的风险是否明示",
        "status": "ok",
        "detail": "vector-maps 的 Gotchas 明示两点：GeoJSON 与 projection() 都是 [lng, lat] 而非 [lat, lng]（写反会把每个 pin 送错位置）；Mercator 在高纬/跨 ±180° 会截断或撕裂，建议世界视图改用 geoEqualEarth/geoNaturalEarth1 或旋转投影。均为操作级警告，非泛泛提醒。"
      },
      {
        "item": "跨目录 / 跨 skill 引用可解析性",
        "status": "discrepancy",
        "detail": "正文引用的 `scripts/contact-sheet.sh`、`scripts/probe-mp4.sh` 位于仓库根，单装本 skill 目录会悬空（需装整个 repo）；另外 SKILL.md 把矢量路径定位为「Remotion 或 D3」，但 D3 网页变体只给要点（?t 冻结），完整网页交付契约与同 pack 其他 skill 相比更薄——属能力边界，非错误。"
      },
      {
        "item": "功能声明 vs 实际能力",
        "status": "ok",
        "detail": "frontmatter 宣称覆盖 Earth Studio→AE 相机导入、GeoJSON/SVG 矢量地图动效、pin/route/highlight/label、12fps 顿帧与数据驱动 Remotion 渲染；正文两条路径与两份 reference 逐项兑现。未夸大——AE 侧的产出被明确定义为「AE 工程 + 渲染素材，由人工 scrubbing 验收」，而非声称 agent 能自动完成 AE 合成。"
      }
    ],
    "note": "结论仅对本 pin commit（390ca98bbcf2ea88a430a69c0dcbf423e43d075d）有效。",
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "390ca98bbcf2ea88a430a69c0dcbf423e43d075d",
    "sha256": "8f12ba8c5bbce5ebbf2b8d7bdfb59a872f6a9477586f39da6b1f9e0749d7724f",
    "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/map-animation.tar.gz",
    "sha256": "8f12ba8c5bbce5ebbf2b8d7bdfb59a872f6a9477586f39da6b1f9e0749d7724f",
    "commit": "390ca98bbcf2ea88a430a69c0dcbf423e43d075d"
  },
  "original": {
    "github": "https://github.com/iart-ai/map-animation-skills/tree/main/skills/map-animation",
    "path": "skills/map-animation",
    "commit": "390ca98bbcf2ea88a430a69c0dcbf423e43d075d"
  }
}