{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "canghe-compress-image",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "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: scripts/main.ts (run via bun; spawns which / sips / cwebp / convert, dynamically imports sharp)"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Outputs images (same directory with new extension or path specified via -o), temporary file <output>.tmp, renames original image to {base}_original.{ext} when --keep is disabled"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 全量文件清单核对资产面（SKILL.md + scripts/main.ts 两个文件，无第二个脚本、无 package.json）；② 对 main.ts 逐项读：确认只有 fs 读写、child_process.spawn（which/sips/cwebp/convert）与动态 import sharp，无 fetch/http、无环境变量、无凭证；③ 目录级 URL/凭证扫描：无 http 端点命中，环境变量命中均为 ${SKILL_DIR} 路径占位与 $HOME 偏好探测；④ 重读 SKILL.md 的 Options/Examples 与 main.ts parseArgs 一一对照（--output/--format/--quality/--keep/--recursive/--json 全对得上）；⑤ 核对 detectCompressor 的分支顺序与 SKILL.md 自述 'sips → cwebp → ImageMagick → Sharp'；⑥ 功能声明 vs 实际：description 的 compress/convert/自动选工具均有对应代码，未见夸大。",
    "second_pass": [
      {
        "item": "自带脚本只有 scripts/main.ts，且仅本地行为",
        "status": "ok",
        "detail": "扫描“网络请求”0 命中；唯一执行面是 spawn which/sips/cwebp/convert 与动态 import sharp；无 fetch/http 调用。"
      },
      {
        "item": "原图改名副作用",
        "status": "ok",
        "detail": "processFile 中当 !keep 且 absInput !== output 时 renameSync 原图为 *_original.{ext}；已在 risks 提示，批量前建议试跑或 -o。"
      },
      {
        "item": "sharp 依赖来源（无自带 package.json）",
        "status": "ok",
        "detail": "skill 目录确无 package.json；sharp 靠运行环境解析，缺失时仅在前几条 CLI 路径都不命中才会失败。"
      },
      {
        "item": "选项表与脚本参数一致",
        "status": "ok",
        "detail": "SKILL.md 的 7 个 option 与 parseArgs 处理的分支完全对应，默认值 format=webp、quality=80、keep/recursive/json=false。"
      },
      {
        "item": "安全面与档位",
        "status": "ok",
        "detail": "零网络、零凭证、零配置解析；仅本地文件读写与系统 CLI 调用，判 blue 与前例一致。"
      },
      {
        "item": "meta 元数据",
        "status": "ok",
        "detail": "commit dd0bf355…、path skills/canghe-compress-image、license MIT 与 bundle §0 核定值一致。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "dd0bf355955b4c82b764740b4183c86a72ba0e0c",
    "sha256": "346c02cfdb2597bbdc764d8f434ae49445d20196064b318f38c911bda5ab18e4",
    "reviewed_by": null,
    "reviewed_at": null
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-10-10/canghe-compress-image.tar.gz",
    "sha256": "346c02cfdb2597bbdc764d8f434ae49445d20196064b318f38c911bda5ab18e4",
    "commit": "dd0bf355955b4c82b764740b4183c86a72ba0e0c"
  },
  "original": {
    "github": "https://github.com/freestylefly/canghe-skills/tree/main/skills/canghe-compress-image",
    "path": "skills/canghe-compress-image",
    "commit": "dd0bf355955b4c82b764740b4183c86a72ba0e0c"
  }
}