{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "logo-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": "Executing local scripts or commands: npx -y playwright screenshot … (seek-shot.sh / inline commands in SKILL.md): pulls from npm on first run"
    },
    {
      "file": "网络端点",
      "summary": "Declaring external network access: The skill scripts themselves do not call business APIs; network surface comes from toolchains: npx pulling Playwright/npm packages and Chromium binaries (registry)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: frame-<t>.png (seek-shot.sh outputs screenshots in current directory)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 目录清单：skills/logo-animation 只有 SKILL.md（148 行）+ references/logo-patterns.md + 0 字节 README.md，无自带脚本，故验证工具在仓库根 scripts/（seek-shot.sh / contact-sheet.sh / probe-mp4.sh / README.md），已实读四个文件；② token 扫描（http(s)://、curl、wget、npx、npm、playwright、ffmpeg、API_KEY、token、secret、env、eval、exec）逐条归类——网络面只有 npx/Playwright 与 jsdelivr 一处，其余为本地 ffmpeg；③ 对每个 external_deps 回源确认调用点行号（seek-shot.sh:18、contact-sheet.sh:15、logo-patterns.md:121/161、SKILL.md:136）；④ 反例搜索「是否还有别的 CDN 或隐藏下载」：全 skills/ 目录 grep cdn./unpkg/esm.sh 仅命中 jsdelivr 一处（logo-patterns.md:161），npx 命令仅在 seek-shot.sh 与 SKILL.md 的示例行；⑤ 核对 SKILL.md 的自我声明与 reference 是否一致：六技法表 ↔ logo-patterns 的六节（1..7 含 reduced-motion 收尾）逐项对得上；⑥ 交叉核对姊妹 skill：color-motion / motion-background 引用同一对脚本，说明 scripts/ 是仓库级共享工具而非本 skill 私产（路径语义见 risks）；⑦ 元数据：gh api repos/iart-ai/motion-design-skills → stars 29、pushed_at 2026-06-22T13:24:17Z、license MIT；本地 HEAD == origin/main == 3c129f769d90a1328c209c386492333c9ac62312。",
    "second_pass": [
      {
        "item": "「单一技法 + 0.8–2.5s + clearspace」是否只是口号",
        "status": "ok",
        "detail": "Core principle 段给出五条硬约束，且末尾 checklist 第 5 条把「Reveal ≤2.5s；if audio present, the settle lands on the sound-logo peak」列为完成条件；logo-patterns 亦含 timing tables 与 clearspace 规则。约束有落地位置。"
      },
      {
        "item": "冻结 harness（?t=N）在四种技法下是否都有写法",
        "status": "ok",
        "detail": "SKILL.md 的 harness 代码块内按技法给分支注释：CSS（animationDelay/playState）、GSAP（tl.pause(); tl.seek(T)）、SMIL（pauseAnimations/setCurrentTime）、Lottie（setFrame(round(T*fps))），并统一设 window.__ready = true。与 references 的技法清单一致。"
      },
      {
        "item": "scripts/ 位置语义（首遍称为 Packaged helper）",
        "status": "discrepancy",
        "detail": "SKILL.md 写 'Packaged helper (`scripts/`)'，但该 scripts/ 是**仓库根**目录（motion-design/scripts/），并非 skill 目录内（skills/logo-animation/ 下无 scripts/）。同仓库 after-effects 反而自带 skills/after-effects/scripts/*.jsx。因此若按单 skill 粒度安装（如 skills add 只取某 skill 目录），`scripts/seek-shot.sh` 的相对路径可能解析不到；用户在仓库根工作时路径成立。此非安全项，但会影响「照抄命令能否跑通」。"
      },
      {
        "item": "「one CDN GSAP <script>」与实际示例是否一致",
        "status": "discrepancy",
        "detail": "SKILL.md 第 102 行写交付可用 inline SVG + reveal（CSS 或 one CDN GSAP `<script>`），但 references/logo-patterns.md 中 GSAP 相关示例全部是 ES import（`import gsap from \"gsap\"`），全文没有任何 GSAP 的 CDN URL；文件里唯一的 CDN 地址是 dotlottie 的 jsdelivr ESM。属文档措辞与示例不齐（不影响功能，照 import 写法走需要打包器或在浏览器用 importmap）。"
      },
      {
        "item": "外部依赖是否有遗漏（隐藏网络调用）",
        "status": "ok",
        "detail": "对所有 skills/ 目录 grep cdn./unpkg/esm./http(s):// 仅命中 logo-patterns.md:161 的 jsdelivr 与两处 iart.ai UTM 链接；npx 命令仅出现在 scripts/seek-shot.sh 与 SKILL.md 的 playwright 示例行。无其他端点。"
      },
      {
        "item": "安全面：凭证/环境变量/任意代码执行",
        "status": "ok",
        "detail": "脚本仅有 set -euo pipefail、路径拼接与两个外部命令（npx/ffmpeg），无 env/API_KEY/secret 读取，无 eval/exec，无 shell 表达式求值用户输入；SKILL.md 无任何凭证指令。第一遍判定的「无凭证读取」成立。"
      },
      {
        "item": "reduced-motion 是否真的三条路都有落地",
        "status": "ok",
        "detail": "SKILL.md：CSS 示例含 @media (prefers-reduced-motion: reduce) 关动画并给终态；Lottie 示例 reduce 时 setFrame(totalFrames-1)；logo-patterns 第 7 节列出 CSS/SVG、Lottie、Video（poster 图）、JS gate（matchMedia 分支）四类回退。checklist 第 4 条亦要求「static end-frame fallback shipped」。"
      },
      {
        "item": "与 remotion-video 的路由声明",
        "status": "ok",
        "detail": "SKILL.md 第 100 行明确视频 logo sting 走 remotion-video 的 verify loop；remotion-video 侧的 SKILL.md 亦把自己定义为 heavy tier 的对应物（'this is the heavy-tier counterpart to a web scene's ?t=N'），两端互指一致。"
      },
      {
        "item": "installs 与 stars 的可用性",
        "status": "ok",
        "detail": "installs=3 取自 pool.json（source skills.sh-hot，明显低值采样）；stars 29 / last_push 2026-06-22T13:24:17Z 由 gh api 实采，pool 内 github_stars/license/last_push 均为 null。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312",
    "sha256": "bd1880e7aef3cfb7698393acb580ed82536eb6b3d05760ce26863d85c361cdef",
    "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/logo-animation.tar.gz",
    "sha256": "bd1880e7aef3cfb7698393acb580ed82536eb6b3d05760ce26863d85c361cdef",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312"
  },
  "original": {
    "github": "https://github.com/iart-ai/motion-design-skills/tree/main/skills/logo-animation",
    "path": "skills/logo-animation",
    "commit": "3c129f769d90a1328c209c386492333c9ac62312"
  }
}