{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "page-transition-animation",
  "built": "2026-10-26",
  "control_level": 3,
  "control_level_label": "L3 联网",
  "capabilities": [
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "declare_domain_and_key_scope"
    ],
    "admin": [
      "least_privilege_keys",
      "keep_request_logs"
    ]
  },
  "evidence": [
    {
      "file": "网络端点",
      "summary": "External network access declaration: Zero outbound requests during runtime execution; delivery page imports motion and React from CDN (artifact-phase reference; domains not specified in the body)"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Zero disk writes within this skill directory; agent writes template.tsx, page-transition.tsx, and frozen-router.tsx into user's Next project"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 文件清单核对（本 skill 目录 3 个文件，无隐藏文件或二进制）；② token 扫描零命中（fetch(/XMLHttpRequest/curl/wget/child_process/process.env/API_KEY|TOKEN|SECRET/.env/eval(）；③ URL 扫描：仅 references 尾部 iart.ai utm 推广链；④ 声明与实现对照：description 的 general SPA routing 与正文覆盖面比对，记 discrepancy；⑤ 脆弱点复核：LayoutRouterContext 的版本敏感提示在正文、notes、gotchas 与 references 四处出现，确认非隐瞒；⑥ 档位复核：无脚本、无凭证、无写盘、执行期零外发 → green；⑦ meta 直采同批。",
    "second_pass": [
      {
        "item": "description 声称的覆盖范围（Next.js App Router 与 general SPA routing）与正文实际覆盖面是否相符",
        "status": "discrepancy",
        "detail": "frontmatter 写 ... for Next.js App Router and general SPA routing.，但正文主体（根因分析、方案 A 的三个文件、7 条排查清单）全部是 App Router 专属；general SPA 只在 View Transitions API 与交付用 stub HTML 两处被顺带覆盖，既无 React Router/Remix 等通用 SPA 路由的接线，也无对应排查清单。属描述略宽于实现（非虚假，但按 description 期望通用方案会落空）。"
      },
      {
        "item": "FrozenRouter 依赖的 Next 内部 import 路径真实性",
        "status": "ok",
        "detail": "SKILL.md 给出 import { LayoutRouterContext } from 'next/dist/shared/lib/app-router-context.shared-runtime'; 并在正文、notes、gotchas、references 四处重复提示 internal、跨版本可能变，references 还专列 FrozenRouter import note across versions 一节；即文档自己对该脆弱性做了标注，非隐瞒。"
      },
      {
        "item": "View Transitions 验收的可行性（快照是瞬态）",
        "status": "ok",
        "detail": "正文承认 snapshots are transient，并给出替代（截结束态或用 emulate slow animations），验收步骤不依赖捕捉瞬态帧；startViewTransition 的能力守卫在正文与完成前清单第 1 条都要求。"
      },
      {
        "item": "Packaged helper 的路径基准与语义",
        "status": "discrepancy",
        "detail": "SKILL.md 的 verify 段仍贴 scripts/seek-shot.sh anim.html 0 1.5 3（时间冻结、仓库根路径），但本 skill 的冻结参数是 ?view= 与 ?phase=（状态与相位），helper 不匹配；scripts/ 也在仓库根而非本 skill 目录。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6",
    "sha256": "083d4f27aaf44464fcb1f85918d82505eceb23d063e1a24540b6ce6feef75e4b",
    "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/page-transition-animation.tar.gz",
    "sha256": "083d4f27aaf44464fcb1f85918d82505eceb23d063e1a24540b6ce6feef75e4b",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6"
  },
  "original": {
    "github": "https://github.com/iart-ai/web-animation-skills/tree/main/skills/page-transition-animation",
    "path": "skills/page-transition-animation",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6"
  }
}