{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "slack-gif-creator",
  "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": "Execute local scripts or commands: The host-side skill usage is \"agent generates Python code on the fly based on SKILL.md and executes it\" (SKILL.md is full of API examples, no __m"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: GIFBuilder.save() writes GIF files according to the output_path parameter (path is provided by agent-generated code and can be any path)"
    }
  ],
  "verification": {
    "method": "第二遍独立核对：重扫全目录 grep 网络/凭据/子进程/动态执行（requests|urllib|http|socket|subprocess|os.system|eval(|exec(|environ|token|curl|wget|webbrowser|Popen|compile|pickle|base64）→ 仅命中 save()/Image.open() 等文件操作；逐项核对 4 个 requirements 依赖在代码中的 import 位置；核对 git 历史确认 41bbe19 为引入提交且此后无改动；核对无隐藏文件、无可执行入口、无 __main__/argparse。",
    "second_pass": [
      {
        "item": "外部依赖 pillow",
        "status": "ok",
        "detail": "requirements 声明 pillow>=10.0.0；gif_builder.py/frame_composer.py/validators.py 均真实 `import`/`from PIL import`，调用点充分"
      },
      {
        "item": "外部依赖 imageio（GIF 编码）",
        "status": "ok",
        "detail": "requirements 声明 imageio>=2.31.0；gif_builder.py:12 `import imageio.v3 as imageio`，save() 中 imageio.imwrite 真实调用"
      },
      {
        "item": "外部依赖 imageio-ffmpeg",
        "status": "discrepancy",
        "detail": "requirements.txt:3 声明 imageio-ffmpeg>=0.4.9，但 4 个核心 py 文件均无直接 import；imageio 写 GIF 走自有/ Pillow 后端，不必然需要 ffmpeg。属冗余或为 imageio 其他格式兜底，仅作防御性声明。影响：安装清单略夸大"
      },
      {
        "item": "外部依赖 numpy",
        "status": "ok",
        "detail": "gif_builder.py/frame_composer.py 真实 import numpy；帧去重(np.abs/mean)、调色板采样(np.vstack)确有调用"
      },
      {
        "item": "无网络调用/凭据读取/隐藏执行",
        "status": "ok",
        "detail": "第二遍全目录正则复查零命中；无隐藏文件、无子模块、无 __main__/argparse；easing.py 仅 import math"
      },
      {
        "item": "『Slack Requirements』与 validators 门槛一致性",
        "status": "discrepancy",
        "detail": "SKILL.md 头部写 Emoji 128x128 / Message 480x480、FPS 10-30、Colors 48-128；validators.py 实际门槛为 emoji 64-128 方形通过、message 仅查宽高比≤2 且短边 320-640——与『480x480』宣称不符；且均未给出 Slack 官方文档出处，属启发式规格。另 builder.save() 默认 num_colors=128 超出文档推荐的 48-128 上限（128 是上限本身，相符）；emoji 优化强制 48 色却把帧数砍到 ~12（fps 名义不变，时长被压缩），与头部『FPS 10-30』经验值存在偏差"
      },
      {
        "item": "SKILL.md 功能声明 vs 代码能力相符性",
        "status": "ok",
        "detail": "声明的 GIFBuilder/validators/easing/frame_composer 四模块全部真实存在且 API 签名与文档一致；create_gradient_background、draw_star 等均实现；draw_text 用 load_default() 位图字体与『不用 emoji 字体』哲学一致；『remove_duplicates=True』去重阈值 0.9995 与 docstring 相符"
      },
      {
        "item": "帧/尺寸写入行为",
        "status": "ok",
        "detail": "add_frame 会把非目标尺寸帧 LANCZOS 重采样到 builder 尺寸；save 返回 size_kb/size_mb/dimensions/frame_count/fps/duration_seconds/colors 信息字典并打印 ✓ 摘要——与文档一致"
      },
      {
        "item": "commit pin 归属",
        "status": "ok",
        "detail": "41bbe19 为 slack-gif-creator 唯一提交（7 文件 1275 行一次性引入，2026-09-03，作者 william qian）；git log 无后续提交，本分析只对该 commit 状态有效"
      },
      {
        "item": "repo stars/last_push/installs",
        "status": "unlocatable",
        "detail": "本地 clone 无网络；41bbe19 是仓库 HEAD（2026-09-03），仓库级 stars/安装量未核实，置 null"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "41bbe19d1a1a7eaab5e7bb9050a417e5c6cffc8f",
    "sha256": "9d54ca459d0b781f515570a700a44c67205a1d4066d55f54837cbe9eab13fbc4",
    "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-06/slack-gif-creator.tar.gz",
    "sha256": "9d54ca459d0b781f515570a700a44c67205a1d4066d55f54837cbe9eab13fbc4",
    "commit": "41bbe19d1a1a7eaab5e7bb9050a417e5c6cffc8f"
  },
  "original": {
    "github": "https://github.com/anthropics/skills/tree/main/skills/slack-gif-creator",
    "path": "skills/slack-gif-creator",
    "commit": "41bbe19d1a1a7eaab5e7bb9050a417e5c6cffc8f"
  }
}