{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "kinetic-typography",
  "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: (Per SKILL.md instruction) npx playwright screenshot --wait-for-timeout=500 \"file://$PWD/"
    },
    {
      "file": "网络端点",
      "summary": "Declared external network access: No network call code within the skill directory; execution-time network surface is limited to tool fetching by `npx playwright` (npm registry + Chromium binaries)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: Core deliverable: single type.html (created by the agent according to the output contract)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 全量文件清单核对（skills/kinetic-typography 下只有 SKILL.md、README.md(0 B)、references/reveal-recipes.md）；② token 扫描（URL / fetch / process.env / child_process / writeFile / API_KEY|TOKEN|SECRET / sandbox|bypass|no-verify）逐条回源，确认 URL 只出现在仓库根 README/showcase 与页脚营销链接，skill 目录内无端点；③ 反向验证能力声明：四种揭示法、三档切分工具、时间参数、变量字体轴、textPath、冻结 harness 是否都有可运行代码；④ 与同型 iart skill（webgl 三件套）交叉比对档位（同为 blue）；⑤ 针对任务提示的「安全区规则」做专项检索（safe-area / title safe / margin / overscan）。",
    "second_pass": [
      {
        "item": "「skill 目录内无脚本」是否成立（蓝档的关键前提）",
        "status": "ok",
        "detail": "文件清单实证：目录内只有 SKILL.md、README.md(0 B)、references/reveal-recipes.md。SKILL.md 引用的 scripts/seek-shot.sh 与 scripts/contact-sheet.sh 属仓库根资产，已在 reason/risks 记录为「单装 skill 目录会悬空」。"
      },
      {
        "item": "凭证/环境变量读取是否存在",
        "status": "ok",
        "detail": "本仓全仓 `process.env|API_KEY|TOKEN|SECRET|Authorization` 零命中；credential_reads 为空成立。"
      },
      {
        "item": "是否有更高的触发条件被漏掉（红档特征）",
        "status": "ok",
        "detail": "`sandbox|automationcontrolled|no-verify|stealth|bypass|ignoreHTTPSErrors|dangerously` 全仓零命中；产物是浏览器沙箱内的 CSS/SVG 动画，无任意代码执行面。"
      },
      {
        "item": "任务提示的「安全区（title safe）规则」是否能定位",
        "status": "unlocatable",
        "detail": "对 skill 目录与全仓检索 `safe[- ]area|title safe|overscan|margin` 均未发现「安全区/标题安全」类版式规则；文档里的版式规则只有：静态排版前置（行高/字距/对齐/字重）、切分后的 aria 补偿，以及「文字不压脸与关键物体」这类通用要求与「裁切字形/descender」验收项。故不把它写成 capability，仅记录为「任务提示与源码不符：本 skill 无安全区规则」；竖屏或平台裁切场景需使用者自行加边距。"
      },
      {
        "item": "无障碍声明是否有可执行形态（非口号）",
        "status": "ok",
        "detail": "SKILL.md 要求容器 aria-label + 碎片 aria-hidden，完成清单第 5 条写成验收项；reveal-recipes.md 第 1 节的 HTML 已按此写（<span class=\"line\"><span aria-hidden=\"true\">Built for</span></span>），并在开头声明 'Accessibility rule for every per-fragment split'。属可照抄实现。"
      },
      {
        "item": "时间参数与「单一动画驱动」是否自洽",
        "status": "ok",
        "detail": "SKILL.md 内联给出 easeOutExpo、400–600ms、行/词/字错位区间与约 800ms 上限；输出契约要求「CSS @keyframes 或单条 GSAP timeline，不能两者并存」，harness 也对两种驱动给分支写法（负延迟暂停 / tl.pause()+seek），无相互矛盾。"
      },
      {
        "item": "「字体就绪后再切分」是否真能解决冻结帧换行问题",
        "status": "ok",
        "detail": "SKILL.md 写 'Split AFTER `document.fonts.ready` so line breaks are correct in the frozen frame.'；冻结 harness 在 ?t=N 时把动画钉到负延迟 + paused 并置 window.__ready 供无头等待。先等字体、再切分、再冻结，三段配合成立。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "fccc94bd325d824235ee9e715e65abde57b6513a",
    "sha256": "7defb6b40cabee553578bf1721ea282a37dd11ab6789b785e32bf214d04cba13",
    "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/kinetic-typography.tar.gz",
    "sha256": "7defb6b40cabee553578bf1721ea282a37dd11ab6789b785e32bf214d04cba13",
    "commit": "fccc94bd325d824235ee9e715e65abde57b6513a"
  },
  "original": {
    "github": "https://github.com/iart-ai/kinetic-typography-skills/tree/main/skills/kinetic-typography",
    "path": "skills/kinetic-typography",
    "commit": "fccc94bd325d824235ee9e715e65abde57b6513a"
  }
}