SkillScan:在 Agent 安装 Skill 前做安全门禁

前言

在 Cursor、Claude Code 等环境里,Skill 往往带脚本、网络请求和文件读写。社区里一条 skillhub install 或拖进一个 .zip,Agent 就可能按 SKILL.md 里的指令执行。手工翻每一份 SKILL.md 和 scripts/ 不现实,也难在「装完再用」和「先审再用」之间保持一致。

下面介绍 SkillScan:把它装进当前 Agent 的 skills 目录后,由 Agent 在安装、加载或评估 Skill 时触发扫描,对高危、严重风险给出拦截策略。

这是什么

SkillScan 是面向 Skill 包的安全防护 Skill。官方简介写明:自动检测已安装和新添加 Skill 中的安全风险,并在高危、严重风险对环境造成损害之前拦截。

在 SkillHub 上的坐标为 @user_0db42586/skillscan,当前页面版本为 v1.1.5-2,分类 it-ops-security,来源为 community,发布者为 user_0db42586。标签标明 requires_api_key=false,安装本 Skill 本身不依赖额外 API Key。Skill 实现写在 scripts/scanner.py,文档说明支持 Windows、macOS、Linux。

核心功能

依据 SkillHub 简介与 SKILL.md 说明,可核实的能力包括:

  1. 安装与加载时触发:在 Skill 被安装、加载、添加、评估,或用户询问「是否安全」时运行扫描;也覆盖从 hub、粘贴 SKILL.md、上传 .zip 等常见路径。
  2. 首次全量扫描:首次加载时若不存在 scripts/.first_run_done,会引导执行 first-run,对已有 Skill 做一遍扫描。
  3. 分级处置:扫描结果通过退出码区分——SAFE/UNKNOWN 可继续;LOW/MEDIUM 需警告并确认;HIGH/CRITICAL 应阻断并展示详情。
  4. 扫描顺序规则:.zip 在安装前扫描,失败则阻止安装;目录形式在文件落盘后扫描;通过 clawhub、skillhub、npx skills add 等远程安装后应立即扫描。
  5. 可选云端分析:扫描器会访问 https://skillscan.tokauth.com 上的接口(缓存查询、上传、轮询结果),用于完成检测流程;可通过环境变量 SKILL_SCANNER_UPDATE_URL 自定义更新源。
  6. 自动更新:文档写明每日自动检查更新,也可手动执行 scanner.py upgrade。

安装与启用

SkillHub 页面给出的安装方式是:让 Agent 按 SkillHub 安装文档 安装 @user_0db42586/skillscan。

若本机已有 skillhub CLI,安装时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 且可能不被识别。文档中的常用路径示例:

# 检查 CLI
command -v skillhub && skillhub --version

# 未安装时(完整安装,含默认 Skill)
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

# 安装 SkillScan 到 Cursor 示例目录
skillhub install user_0db42586/skillscan --dir ~/.cursor/skills/

Claude Code 可使用 ~/.claude/skills/;Codex 可使用 ~/.codex/skills/ 或项目下的 .agents/skills/。具体以你当前客户端文档为准。

首次加载时,SKILL.md 要求向工作区或用户级 SOUL.md 追加「Skill Security」规则,以便在未主动加载 SkillScan 时仍强调「安装前先扫描」。卸载 SkillScan 时,应删除该段落以保持配置干净。

典型用法

扫描逻辑由 scripts/scanner.py 提供。在 Skill 目录下执行(将 <skill_scanner_dir> 换成本机 SkillScan 安装路径):

# 首次安装后:扫描所有已装 Skill,并写入 .first_run_done
python <skill_scanner_dir>/scripts/scanner.py first-run

# 扫描单个包(目录或 .zip)
python <skill_scanner_dir>/scripts/scanner.py scan /path/to/skill-or.zip

# 扫描当前环境已安装的全部 Skill
python <skill_scanner_dir>/scripts/scanner.py scan-all

# 手动检查并升级 SkillScan 自身
python <skill_scanner_dir>/scripts/scanner.py upgrade

Agent 侧的行为应与退出码对齐:0 继续;1 提示用户确认;2 阻止使用并说明原因;3 扫描失败,可重试。文档要求不要在 Skill 目录内生成报告文件。

云端接口(供理解扫描依赖,非手工调用清单):

步骤 方法 路径
缓存查询 GET /oapi/v1/skill-scan/search?dir_sha256=<dir_sha256>
上传 POST /oapi/v1/skill-scan/upload
轮询结果 GET /oapi/v1/skill-scan/result?task_no=<task_no>(约每 20s,最长约 180s)

适用场景与注意

适合谁:经常从 SkillHub、GitHub 或压缩包引入第三方 Skill 的团队或个人;希望把「装前扫描」写进 Agent 工作流,而不是偶尔人工抽查。

使用前要接受的约束:

  • 扫描依赖外网与 skillscan.tokauth.com,离线或限网环境需自行评估是否可用。
  • 首次运行会修改 SOUL.md,若你不希望 Agent 持久化这类策略,需要在安装前知情,并在卸载时按文档清理。
  • 自动更新会静默拉取新版本;对更新源有合规要求时,应结合 SKILL_SCANNER_UPDATE_URL 与内网策略审查。
  • SkillHub 页面数据(截至资料抓取):评分 100000,下载 8606,安装 16;社区来源意味着维护节奏与审计结论需自行跟踪,不宜把「拦截 HIGH/CRITICAL」等同于「零风险」。

结尾

SkillScan 把 Skill 安装链路里的安全动作收敛成可重复的扫描与退出码策略,并与 SkillHub 上的 @user_0db42586/skillscan 分发对齐。若你要在现有 Agent 里加一道门禁,可从官方页与安装文档入手,装好后再用 first-run 扫一遍存量 Skill。

官方地址:https://api.skillhub.cn/user_0db42586/skillscan
SkillHub 页面:https://www.skillhub.cn/skills/user_0db42586/skillscan

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜