SkillSpector 技能安全扫描器

在安装前扫描智能体技能的安全风险。

Star 数
★ 25k
最近更新
今天
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具MCP 服务器自托管服务
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
Python 3.12+Shell / 命令行网络访问本地文件系统MCP Server
典型场景
维护 Claude Code 技能库的团队,在将第三方 Git 仓库纳入内部目录前执行静态扫描,并以 JSON 报告决定是否允许安装。
不适合
  • 需要沙箱隔离或运行时拦截的团队:它只是安装前扫描,不阻止已安装的高风险技能
  • 需要开箱即用认证的远程部署:HTTP MCP 传输默认无认证,须自建反向代理

这个 Agent 能做什么,适合哪些场景?

SkillSpector 是用于审查 AI 智能体技能的安全扫描器,可扫描 Git 仓库、URL、ZIP 文件、本地目录和单个文件。它以静态分析为第一阶段,并可选用 LLM 进行语义评估;扫描对象不会被执行。工具覆盖 17 类、68 种漏洞或恶意行为模式,包括提示注入、凭据或上下文外传、危险代码、依赖风险、MCP 最小权限和 MCP 工具投毒。它可输出终端报告、JSON、Markdown 或 SARIF,并给出 0–100 风险分数、严重度、安装建议和具体发现。它既可作为 Python LangGraph 工作流调用,也可通过 skillspector mcp 作为 MCP 服务器,为 Claude Code、Codex CLI、Gemini CLI 等支持 MCP 的运行时提供安装前门禁。

运行 skillspector scan <target> 后,工具先摄取目标并对符合条件的文件执行正则静态检测、Python AST 行为分析、YARA 签名检查,以及 SC4 通过 OSV.dev 进行的依赖 CVE 查询。随后,如未使用 --no-llm,它会把符合分析条件的文件内容发送给所配置的 SKILLSPECTOR_PROVIDER,进行可选的 LLM 语义评估和误报过滤。最终报告包含 risk_assessment、组件清单、issues 和扫描元数据;JSON 结果可作为 CI 或 IDE 的稳定集成接口。skillspector baseline 可生成基线,后续扫描可通过 --baseline 仅报告新的发现。安装 MCP extra 后,scan_skill(target, use_llm=true, output_format="json") 会返回结构化的 risk_score、severity、recommendation、safe_to_install 和 findings。

  1. 维护 Claude Code 技能库的团队,在将第三方 Git 仓库纳入内部目录前执行静态扫描,并以 JSON 报告决定是否允许安装。
  2. 为 Codex CLI 配置 MCP 工具的开发者,在添加新技能或 MCP 相关内容前调用 scan_skill,按风险建议实施安装门禁。
  3. 在 CI 中维护技能包的安全工程师,使用 SARIF 输出将危险调用、未固定依赖和供应链发现导入现有代码扫描流程。
  4. 需要审计 ZIP 形式技能交付物的安全负责人,在不执行其中代码的前提下检查提示注入、数据外传和可疑 YARA 特征。
  5. 需要降低重复告警的技能维护者,提交 .skillspector-baseline.yaml,让后续复扫聚焦尚未处置的新发现。

如何安装或部署这个 Agent?

CLI 仅安装:

uv tool install git+https://github.com/NVIDIA/skillspector.git

若要运行 MCP 服务器:

uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'

从源码安装时,先创建并激活 Python 虚拟环境,然后运行 make install;开发依赖使用 make install-dev。无凭据的首次静态扫描可直接使用 --no-llm。启用 LLM 分析时,需要按所选提供商配置凭据;例如 OpenAI 路径需要 SKILLSPECTOR_PROVIDER=openai 和 OPENAI_API_KEY。

如何使用这个 Agent?

先进行本地静态扫描:

skillspector scan ./my-skill/ --no-llm

生成机器可读报告:

skillspector scan ./my-skill/ --no-llm --format json --output report.json

扫描 Git 仓库:

skillspector scan https://github.com/user/my-skill

使用 OpenAI 进行可选语义分析:

export SKILLSPECTOR_PROVIDER=openai

export OPENAI_API_KEY=sk-...

skillspector scan ./my-skill/

启动本地 MCP 服务:

skillspector mcp

向 Claude Code 注册该服务:

claude mcp add skillspector -- skillspector mcp

这个 Agent 有哪些优点和局限?

优点
  • 将正则检测、Python AST、YARA、OSV.dev 依赖漏洞查询和可选 LLM 语义评估组合为两阶段流程,而非只做关键词匹配。
  • 可扫描本地文件、目录、ZIP、URL 与 Git 仓库,并提供终端、JSON、Markdown、SARIF 四种报告输出。
  • 明确不执行被扫描技能;--no-llm 可避免将文件内容发送给 LLM 提供商。
  • 支持基线抑制与指纹或 glob 规则,便于在持续扫描中只处理新增风险。
  • 提供 MCP 服务和 Python graph.invoke 接口,可用于安装门禁、CI 和编辑器集成。
局限
  • 静态分析可能产生误报,LLM 语义评估虽可提高精度,但需要配置提供商、凭据或本地 CLI 运行时。
  • 启用 LLM 分析会将符合条件的文件内容发送给所配置的提供商;即使使用 --no-llm,SC4 仍会向 OSV.dev 发送依赖名称和版本。
  • 工具是安装前检测而不是沙箱;若仍安装高风险技能,它不会隔离或限制该技能对主机的影响。
  • 文档列出的限制包括可能遗漏非英语模式、无法分析图片中的文字或加密/编译代码,也不进行动态行为执行。
  • HTTP MCP 传输默认没有认证;若绑定到可路由接口,必须自行放置带认证的反向代理。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
SkillSpector 技能安全扫描器 当前 62 · 存在缺口 命令行工具免费 + 模型费 ★ 25k 今天 Python Codex · Claude Code · OpenAI API · Claude API
Repo Forensics:AI Agent 仓库离线安全审计器 44 · 缺口较多 命令行工具付费 ★ 205 今天 Python Codex · Claude Code
HOL Guard 79 · 表现良好 命令行工具免费版 + 付费版 ★ 1.1k 今天 Rust Codex · Claude Code
Skill Scanner — 智能体技能安全扫描器 62 · 存在缺口 命令行工具免费 + 模型费 ★ 2.7k 今天 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
62/ 100 五分制 3.1 / 5
本评测基于 2026年8月9日 的源码;此后该项目发布了 16 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 17/29
可靠稳定 9/14
适用触发 12/18
规范维护 11/18
有效结果 9/13
证据核验 4/8
查看各维度的扣分理由
信任安全17 / 29 · 2.9/5

证据显示:CI工作流使用最小权限(contents: read),发布工作流仅在合并时提升权限;HTTP传输默认无认证但文档明确警告并建议反向代理;扫描器本身不执行被扫描代码,仅静态分析;有输入大小限制防止zip炸弹;依赖有版本约束;有安全策略和漏洞报告渠道。扣分:用户确认机制仅在MCP工具中隐含(safe_to_install),CLI扫描无交互确认;回滚机制未明确,仅提及基线抑制;数据流透明度部分,LLM分析会发送数据到外部API,但文档未详细说明数据保留和隐私。

可靠稳定9 / 14 · 3.2/5

证据显示:README、pyproject.toml、CI配置和测试文件之间一致;依赖有版本范围,但未锁定精确版本(除uv.lock);有失败消息设计(如IngestLimitExceededError)。扣分:依赖可用性未完全保证,因为未提供锁文件内容;失败消息在文档中仅部分示例。

适用触发12 / 18 · 3.3/5

证据显示:明确面向Claude Code、Codex、Gemini CLI等用户;支持多种输入格式和输出格式;有MCP服务器集成;有批量扫描工具;支持多种LLM提供商。扣分:触发精度方面,MCP工具仅一个scan_skill,但文档未详细说明参数校验;环境适配方面,Docker和本地安装均有说明,但未提及Windows等平台。

规范维护11 / 18 · 3.1/5

证据显示:README结构清晰,有文档链接;安装说明详细(uv、pip、Docker);命名稳定(skillspector);有示例输出;有已知限制(如HTTP无认证、DeepSeek日落);Apache-2.0许可证;有版本号(pyproject.toml 2.8.2)和CI。扣分:无CHANGELOG文件,版本历史不明确;维护责任由NVIDIA承担,但未明确具体维护者。

有效结果9 / 13 · 3.5/5

证据显示:输出格式多样(terminal、JSON、Markdown、SARIF),便于集成;提供风险评分和严重性标签;有基线抑制功能减少误报;价值明确(检测恶意技能)。扣分:成本效益未量化,LLM分析可能产生API费用,但文档未讨论成本优化。

证据核验4 / 8 · 2.5/5

证据显示:README中的功能列表与pyproject.toml描述一致;有测试文件(如test_monkeypatch_fragility.py)验证特定行为;有CI配置。扣分:跨来源验证有限,仅依赖仓库内部证据;事实与推断分离方面,README声称检测68种模式,但未提供验证数据。

风险与缓解建议
  • HTTP传输默认无认证,若绑定到可路由接口需自行配置反向代理和认证。
  • LLM分析会将技能内容发送到外部API,使用前需评估数据隐私和合规性。
  • 依赖未锁定精确版本,建议使用uv.lock或类似机制确保可复现性。
  • 无CHANGELOG文件,版本升级历史不透明。
证据充分度:低 评估于 2026年8月9日 审查版本 2bc641fd0639 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v2.13.4 SkillSpector v2.13.4
    发布说明摘录
    SkillSpector 2.13.4 This maintenance release includes the v2.13.3 fixes and selected improvements to provider compatibility, source inspection, and recovery of malformed AI responses. Fixes - [#806](https://github.com/NVIDIA/SkillSpector/pull/806): provider compatibility and structured responses for GPT-6.1 Sol and Claude Opus 5.5 across supported routes. - [#947](https://github.com/NVIDIA/SkillSpector/pull/947), [#950](https://github.com/NVIDIA/SkillSpector/pull/950), and [#973](https://github.com/NVIDIA/SkillSpector/pull/973): bounded parsing of shell, …
    在 GitHub 查看 ↗
  2. v2.13.3 SkillSpector v2.13.3
    发布说明摘录
    SkillSpector 2.13.3 This patch release builds on the published v2.13.2 maintenance release, preserving its fixes and supported Python versions while adding selected merged P0 security and scan-integrity fixes, including four dependency security updates. Fixes - [#945](https://github.com/NVIDIA/SkillSpector/pull/945): Make the tool-description comparison batch limit configurable with SKILLSPECTOR_TP4_MAX_BATCHES, default 256, and raise the default workflow deadline to 1,080 seconds (18 minutes), …
    在 GitHub 查看 ↗
  3. v2.13.2 SkillSpector v2.13.2
    发布说明摘录
    SkillSpector 2.13.2 This patch release builds on the published v2.13.1 maintenance release and backports three fixes for false incomplete-analysis reports. It preserves the existing maintenance fixes, third-party dependency lock, and provider defaults. Fixes - [#779](https://github.com/NVIDIA/SkillSpector/pull/779): Recognize command wrappers with no wrapped command at a proven clause boundary. Markdown table cells and ordinary source references to timeout, sudo, nice, and xargs no longer cause false parser-limit reports. Redirections, unfinished fragments, and …
    在 GitHub 查看 ↗

常见问题

静态扫描需要 API 密钥吗?
不需要。使用 skillspector scan ./my-skill/ --no-llm 可跳过 LLM 分析。SC4 会尝试访问 OSV.dev 查询依赖漏洞;OSV.dev 不需要 API 密钥,无法访问时会使用内置回退列表。
LLM 分析会发送什么数据?
启用后,符合分析条件的文件内容会发送到 SKILLSPECTOR_PROVIDER 对应的端点。被识别为有效根级 OpenSSF Model Signing 签名的 skill.oms.sig 会保留在组件清单中,但不参与静态或 LLM 内容分析。
扫描是否会执行不受信任的技能代码?
不会。工具说明其分析由正则、Python AST、YARA 和可选的文件内容 LLM 评估组成,被扫描技能代码不会运行。
如何在自动化流程中阻止高风险安装?
读取 JSON 输出中的 recommendation:SAFE 可允许,CAUTION 可提示或警告,DO_NOT_INSTALL 可阻止。命令退出码仅将风险分数大于 50 的结果标为 1。
MCP HTTP 服务能直接暴露到公网吗?
不应直接暴露。HTTP 传输没有认证;文档建议在对外绑定前部署带认证的反向代理,例如 nginx 加 mTLS。HTTP 模式还会自动拒绝本地路径和 file:// URL。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents