{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "web-asset-generator",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "install_deps",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "sandbox_recommended",
      "graded_authorization"
    ],
    "admin": [
      "approval_process",
      "rollback_support",
      "full_audit"
    ]
  },
  "evidence": [
    {
      "file": "scripts/",
      "summary": "Executes local scripts or commands: python scripts/generate_favicons.py <source_image> <output_dir> [favicon|ap"
    },
    {
      "file": "scripts/ 或 SKILL.md",
      "summary": "Declares dynamic installation of external language package dependencies"
    },
    {
      "file": "本地工作目录",
      "summary": "Performs file read/write operations and artifact generation: generates PNG/ICO files in output directories: favicon-16x16/32x32/96x96.png, favicon.ico, apple-touch-icon."
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 针对『是否真无网络』做了独立反查：对 skills/web-asset-generator 全目录（含 lib/）做 URL 正则与 requests|urllib|socket|subprocess|os.system|eval 关键词双扫，URL 仅出现在 SKILL.md/references 的文档语境，代码零命中；② 逐项核对常量与实现是否相符（ICON_SIZES/APP_ICON_SIZES/OG_SIZES/PLATFORM_REQUIREMENTS/calculate_font_size 分档值 144/120/102/84 与 SKILL.md 表格逐字一致）；③ 校验『有校验功能』非空承诺：validators.py 内 validate_file_size/validate_dimensions/validate_format/calculate_contrast_ratio/validate_contrast 与 ValidationResult 均实际存在；④ 复核代码写入路径的护栏：SKILL.md 明确 'Show diff of proposed changes' 与 'Insert tags if user confirms'，属宿主 Edit 动作而非脚本行为，已在 file_writes 中区分标注；⑤ 元数据核对 gh api（494★ / MIT / pushed_at 2026-01-28T09:11:01Z）与本地 HEAD c6d56dc 一致。",
    "second_pass": [
      {
        "item": "『无网络外发』结论",
        "status": "ok",
        "detail": "5 个脚本逐文件扫描：import 仅 PIL/pilmoji/emoji/colorsys/textwrap/argparse/pathlib/io/sys/os/re；无 requests/urllib/socket/http.client/subprocess/os.system/eval/exec；全目录 URL 仅出现在 SKILL.md 与 references/specifications.md 的文档说明中。"
      },
      {
        "item": "『无凭证读取』结论",
        "status": "ok",
        "detail": "无 os.environ/getenv；check_dependencies.py 只做 try-import 探测并打印 pip 安装建议；仓库无 .env 示例、无 key 常量。"
      },
      {
        "item": "尺寸与字号常量与文档一致",
        "status": "ok",
        "detail": "generate_favicons.py ICON_SIZES(16/32/96)+APP_ICON_SIZES(180/192/512)、generate_og_images.py OG_SIZES(1200x630/1200x675/1200x1200)、calculate_font_size 的 1.2/1.0/0.85 倍率（144/120/102/84）与 SKILL.md Best Practices 的文本长度表逐字吻合。"
      },
      {
        "item": "校验能力真实落地（非仅文档）",
        "status": "ok",
        "detail": "validators.py 定义 PLATFORM_REQUIREMENTS（facebook 8MB/1200x630/1.91、twitter 5MB/1200x675/16:9 等）与 ValidationResult；SKILL.md 给出 --validate 用法与 ✓/⚠/❌ 输出示例，两侧一致。"
      },
      {
        "item": "emoji 依赖的版本约束",
        "status": "ok",
        "detail": "check_dependencies.py 对 emoji 主版本 <2 判定兼容，否则提示 \"Install compatible version: pip install 'emoji<2.0.0'\"；CLAUDE.md 重复该约束（'must use version <2.0.0 for pilmoji compatibility'）。属真实存在的第三方兼容性坑，非文档臆造。"
      },
      {
        "item": "『会修改用户代码库』的定性与护栏",
        "status": "discrepancy",
        "detail": "第一遍只按『本地生成图片』记录，第二遍确认 SKILL.md Question Pattern 7 与交付流程明确要求 agent 探测框架（next.config.js/astro.config.mjs/…）并在用户确认后用 Edit 插入标签——这是对用户源码的写入能力。已据此把 file_writes 拆成『脚本产物』与『经确认的宿主编辑』两类，并在 injection_surface/risks 单列；档位维持 blue（写入仍属本地、且有 diff+确认门）。"
      },
      {
        "item": "字体路径依赖（跨平台可用性）",
        "status": "ok",
        "detail": "CLAUDE.md 记录字体 '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'（回退默认字体）；generate_og_images.py 用 ImageFont 加载，属 Linux 假设，已作为可用性注记写入 verdict.fits/not_for 之外的分析（traits 未夸大跨平台能力）。"
      },
      {
        "item": "外部依赖清单完整性",
        "status": "ok",
        "detail": "依赖仅 Pillow（必需）与 pilmoji/emoji（可选 emoji 路线），全部为 PyPI 官方包；无 CLI 依赖、无镜像源、无远程服务（对比同类 skill 常见的 ffmpeg/imagemagick 依赖，本 skill 无外部二进制）。"
      },
      {
        "item": "license/stars/commit 元数据",
        "status": "ok",
        "detail": "gh api repos/alonw0/web-asset-generator：MIT、494★、pushed_at=2026-01-28T09:11:01Z、archived=false；.claude-plugin/plugin.json 亦声明 license MIT；本地 HEAD=c6d56dc54ab86eae4eeb1393d9c8cdc71ae8d1a8，与任务书 pin 一致。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "c6d56dc54ab86eae4eeb1393d9c8cdc71ae8d1a8",
    "sha256": "a6da82bc927a95b8a7932de722a5ee57441ecd2b0e6359ed186459cf99bd6275",
    "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/web-asset-generator.tar.gz",
    "sha256": "a6da82bc927a95b8a7932de722a5ee57441ecd2b0e6359ed186459cf99bd6275",
    "commit": "c6d56dc54ab86eae4eeb1393d9c8cdc71ae8d1a8"
  },
  "original": {
    "github": "https://github.com/alonw0/web-asset-generator/tree/main/skills/web-asset-generator",
    "path": "skills/web-asset-generator",
    "commit": "c6d56dc54ab86eae4eeb1393d9c8cdc71ae8d1a8"
  }
}