{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "gsap-frameworks",
  "built": "2026-10-26",
  "control_level": 1,
  "control_level_label": "L1 基础",
  "capabilities": [],
  "required_controls": {
    "agent": [
      "auto_load"
    ],
    "admin": [
      "register_source_and_version"
    ]
  },
  "evidence": [
    {
      "file": "SKILL.md",
      "summary": "Pure prompt instructions and rule text, with no script execution or external impact"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 全仓文件清单核对资产面：gsap-skills 仓库只有 README.md / AGENTS.md / LICENSE / skills/<8 个 SKILL.md> + llms.txt / .github 三条 Copilot 指令 / .claude-plugin 与 .cursor-plugin 清单 / assets/*.svg / examples/{vanilla,react,vue,nuxt}；没有任何 scripts/ 目录、没有 *.py *.sh *.js 的 skill 附属脚本（examples 下的 js 是参考 demo，skill 不调用）；② 对 skills/*.md 逐类 token 扫描：curl、wget、exec(、child_process、fetch(、XMLHttpRequest、process.env、API_KEY、secret、.env 全部零命中；『token』全仓命中 5 处、分布在 gsap-plugins/SKILL.md（2 处）与 skills/llms.txt（3 处），语境全部是「不要用 auth token / 私有 registry」的否定式告诫或索引关键词，无任何实际读取凭证的指令；③ URL 清单逐条落地核对：全部指向 gsap.com（官方文档/blog），无第三方域名、无短链、无统计/回传端点；唯一非 gsap.com 的网络引用在 examples/vanilla/main.js（cdn.jsdelivr.net 拉 gsap@3.15.0 ESM），属示例文件、非 skill 资产、也不会被 skill 执行；④ 反例搜索：确认无隐藏脚本、无混淆内容、无 base64 载荷、无环境变量读取；⑤ 功能声明 vs 实际内容：每条 claim 均能定位到 SKILL.md 原文（见 second_pass 逐条），无夸大；⑥ 元数据核对：本地 git HEAD == 任务 pin aed9cfd32777；仓库根 LICENSE 为 MIT；GitHub API 复核 stars/pushed_at。",
    "second_pass": [
      {
        "item": "目录资产面：仅 SKILL.md",
        "status": "ok",
        "detail": "skills/gsap-frameworks/ 下唯一文件 SKILL.md（10,621 B）；无 scripts/、references/；URL 扫描 0 条。"
      },
      {
        "item": "external_deps 逐条核实",
        "status": "ok",
        "detail": "import(\"gsap/CustomEase\") 等动态 import 映射在文件内逐字存在（pluginMap 共 24 项）；Nuxt/Vue/Svelte 依赖来自 examples/nuxt/package.json（\"nuxt\": \"^4.4.2\"）等示例工程，非 skill 自带。"
      },
      {
        "item": "Nuxt composable 代码是否与 examples 一致",
        "status": "ok",
        "detail": "examples/nuxt/app/composables/useGSAP.ts 与 SKILL.md 中的 useGSAP.ts 代码块结构一致（PLUGINS 常量、pluginMap、lazyLoadPlugin 泛型、registerPlugin(ScrollTrigger)），可运行验证。"
      },
      {
        "item": "Vue/Svelte 写法是否与官方生命周期语义相符",
        "status": "ok",
        "detail": "Vue 用 onMounted/onUnmounted、Svelte 用 onMount 返回值做清理，均为官方推荐的对应钩子；ctx?.revert() 的可选链也避免容器为空时报错。"
      },
      {
        "item": "安全反例搜索",
        "status": "ok",
        "detail": "token 扫描：curl/wget/fetch(/XMLHttpRequest/exec(/child_process/process.env/.env/API_KEY/secret 零命中；无 URL、无脚本文件。"
      },
      {
        "item": "与 gsap-react 的分工是否重复",
        "status": "ok",
        "detail": "本文件首段即声明 React 走 gsap-react，并在 Learn More 再次指向；gsap-react 亦声明 Vue/Svelte 走本 skill，互不重叠。"
      },
      {
        "item": "元数据与 pin",
        "status": "ok",
        "detail": "frontmatter license: MIT；HEAD = aed9cfd3277740755f6bfc1155c7aa645403b760；GitHub API stars 15326 / pushed_at 2026-07-29T17:36:08Z。"
      },
      {
        "item": "「lazyLoadPlugin 减少初始包体」是否属实",
        "status": "ok",
        "detail": "pluginMap 用 () => import() 动态导入，仅在调用时拉取并 registerPlugin，确为按需加载模式；原文亦给出用途限定「not widely used in your app」。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "aed9cfd3277740755f6bfc1155c7aa645403b760",
    "sha256": "8c31c95c46ec9b9fb5127ebf7e8b4a22d82a5a85ae3f4e0f4d4168a68dd9e2a5",
    "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/gsap-frameworks.tar.gz",
    "sha256": "8c31c95c46ec9b9fb5127ebf7e8b4a22d82a5a85ae3f4e0f4d4168a68dd9e2a5",
    "commit": "aed9cfd3277740755f6bfc1155c7aa645403b760"
  },
  "original": {
    "github": "https://github.com/greensock/gsap-skills/tree/main/skills/gsap-frameworks",
    "path": "skills/gsap-frameworks",
    "commit": "aed9cfd3277740755f6bfc1155c7aa645403b760"
  }
}