{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "ascii-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": "Execute local script or command: node skills/ascii-animation/scripts/img-to-ascii.mjs <image> [--cols N] [--"
    },
    {
      "file": "网络端点",
      "summary": "Declare external network access: The script itself makes zero outbound calls; npm i sharp (fetching from the npm registry during installation) and optional three CDN loading in delivery pages occur at host or artifact runtime and are not factored into the rating."
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: The built-in script writes no files (stdout only)."
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 文件清单核对（本 skill 目录 4 个文件，无隐藏文件或二进制）；② 自带脚本 64 行全文逐行读，做行为判定（只读加 stdout）；③ token 扫描：skill 目录内 URL 零命中，fetch/child_process/eval/process.env 零命中；④ 坡道一致性核对：SKILL.md 的「truncated — see table below」与 references 的实际坡道表对照，发现指向错位（记为 discrepancy）；⑤ 单元宽高比公式三处互证（正文、references 采样段、脚本常量 CELL_ASPECT）；⑥ 档位复核：因自带可执行 CLI 加 npm 依赖 sharp → blue（行为仍是只读本地）；⑦ meta 直采同批（stars=28，installs 无 per-skill 值故 null）。",
    "second_pass": [
      {
        "item": "自带脚本是否真的没有网络、凭证与写盘面",
        "status": "ok",
        "detail": "img-to-ascii.mjs 全文 64 行逐行读过：import 只有 sharp；用 process.argv 解析参数；sharp(file).metadata() 与 .resize().removeAlpha().raw().toBuffer() 读像素；结果只经 process.stdout.write 输出。无 fetch、无 http 模块、无 fs 写、无 process.env，也无 shell 调用。"
      },
      {
        "item": "坡道「16 级中等坡道被截断」的指引是否自洽",
        "status": "discrepancy",
        "detail": "SKILL.md 的 Common ramps 段在 Medium (16) 之后写 truncated — see table below，但该段下方最近的表是 Quick reference（无坡道表）；完整 16 级坡道实际在 references/rendering.md 的 ### 16-level extended (balance)。指向错位，照抄 SKILL.md 拿不到完整坡道。"
      },
      {
        "item": "Packaged helper 的路径基准与适用性",
        "status": "discrepancy",
        "detail": "SKILL.md 写 scripts/seek-shot.sh anim.html 0 1.5 3，scripts/ 实际在仓库根；且本 skill 的终端形态本就不适用 ?t=N 冻结（SKILL.md 自己注明终端件需另法验收），该 helper 只覆盖浏览器形态。"
      },
      {
        "item": "willReadFrequently 与 AsciiEffect 的取舍是否与参考文件一致",
        "status": "ok",
        "detail": "SKILL.md 的 <pre> 与 canvas 取舍、willReadFrequently 用法、AsciiEffect 必须 effect.render 的注意事项，在 references/rendering.md 的 #### <pre> vs canvas 与 Three.js AsciiEffect 两节均可定位，前后无矛盾。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6",
    "sha256": "b1d5e8b21e57db265b113600a927e921554effb22d4dd198a7124edd4f48feb8",
    "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/ascii-animation.tar.gz",
    "sha256": "b1d5e8b21e57db265b113600a927e921554effb22d4dd198a7124edd4f48feb8",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6"
  },
  "original": {
    "github": "https://github.com/iart-ai/web-animation-skills/tree/main/skills/ascii-animation",
    "path": "skills/ascii-animation",
    "commit": "b6dba3eb759726845a44163ff0bad70dd9e7fbb6"
  }
}