sarif-parsing
Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners.
Skill by CraftOS-dev
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/craftos-dev-sarif-parsing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
sarif-parsing- Description
- Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners. Triggers on "parse sarif", "read scan results", "aggregate findings", "deduplicate alerts", or "process sarif output". Handles filtering, deduplication, format conversion, and CI/CD integration of SARIF data. Does NOT run scans — use the Semgrep or CodeQL skills for that.
- License
- MIT
- Allowed tools
- Bash, Read, Glob, Grep
- Instructions
- 484 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves any shell command
- Instructions call the network
Files (3)
- SKILL.md
- jq-queries.md · resources/
- sarif_helpers.py · resources/
SKILL.md (first lines)
# SARIF Parsing Best Practices
You are a SARIF parsing expert. Your role is to help users effectively read, analyze, and process SARIF files from static analysis tools.
## When to Use
Use this skill when:
- Reading or interpreting static analysis scan results in SARIF format
- Aggregating findings from multiple security tools
- Deduplicating or filtering security alerts
- Extracting specific vulnerabilities from SARIF files
- Integrating SARIF data into CI/CD pipelines
- Converting SARIF output to other formats
## When NOT to Use
Do NOT use this skill for:
- Running static analysis scans (use CodeQL or Semgrep skills instead)
- Writing CodeQL or Semgrep rules (use their respective skills)
- Analyzing source code directly (SARIF is for processing existing scan results)
- Triaging findings without SARIF input (use variant-analysis or audit skills)
## SARIF Structure Overview
SARIF 2.1.0 is the current OASIS standard. Every SARIF file has this hierarchical structure:
```
sarifLog
├── version: "2.1.0"
├── $schema: (optional, enables IDE validation)
└── runs[] (array of analysis runs)
├── tool
│ ├── driver
│ │ ├── name (required)
│ │ ├── version
│ │ └── rules[] (rule definitions)
│ └── extensions[] (plugins)
├── results[] (findings)
│ ├── ruleId
│ ├── level (error/warning/note)
│ ├── message.text
│ ├── locations[]
│ │ └── physicalLocation
│ │ ├── artifactLocation.uri
│ │ └── region (startLine, startColumn, etc.)
│ ├── fingerprints{}
│ └── partialFingerprints{}
└── artifacts[] (scanned files metadata)
```
### Why Fingerprinting Matters
Without stable fingerprints, you can't track findings across runs:
- **Baseline comparison**: "Is this a new finding or did we see it before?"
- **Regression detection**: "Did this PR introduce new vulnerabilities?"
- **Suppression**: "Ignore this known false positive in future runs"
Tools report different paths (`/path/to/project/` vs `/github/workspace/`), so path-based matching fails. Fingerprints hash the *content* (code snippet, rule ID, relative location) to create stable identifiers regardless of environment.
## Tool Selection Guide
| Use Case | Tool | Installation |
|----------|------|--------------|
| Quick CLI queries | jq | `brew install jq` / `apt install jq` |
| Python scripting (simple) | pysarif | `pip install pysarif` |
| Python scripting (advanced) | sarif-tools | `pip install sarif-tools` |
| .NET applications | SARIF SDK | NuGet package |
| JavaScript/Node.js | sarif-js | npm package |
| Go applications | garif | `go get github.com/chavacava/garif` |
| Validation | SARIF Validator | sarifweb.azurewebsites.net |
## Strategy 1: Quick Analysis with jq
For rapid exploration and one-off queries:
```bash
# Pretty print the file
jq '.' results.sarif
# Count total findings
jq '[.runs[].results[]] | length' results.sarif
# List all rule IDs triggered
jq '[.runs[].results[].ruleId] | unique' results.sarif
# Extract errors only
jq '.runs[].results[] | select(.level == "error")' results.sarif
# Get findings with file locations
jq '.runs[].results[] | {
rule: .ruleId,
message: .message.text,
file: .locations[0].physicalLocation.artifactLocation.uri,
line: .locations[0].physicalLocation.region.startLine
}' results.sarif
# Filter by severity and get count per rule
jq '[.runs[].results[] | select(.level == "error")] | group_by(.ruleId) | map({rule: .[0].ruleId, count: length})' results.sarif
# Extract findings for a specific file
jq --arg file "src/auth.py" '.runs[].results[] | select(.locations[].physicalLocation.artifactLocation.uri | contains($file))' results.sarif
```
## Strategy 2: Python with pysarif
For programmatic access with full object model:
```python
from pysarif import load_from_file, save_to_file
# Load SARIF file
sarif = load_from_file("results.sarif")
# Iterate through runs and results
for run in sarif.runs:
tool_name = run.tool.driver.name
print(f"Tool: {tool_name}")From CraftOS-dev/CraftBot, MIT.
More from CraftOS-dev/CraftBot
- 0.809score
fal-upscale
fal-ai
Upscale and enhance image resolution using AI.
SkillAFreshness: A★ 400Claude Code +9 - 0.806score
vitess
planetscale
Vitess best practices, query optimization, and connection troubleshooting for PlanetScale Vitess databases.
SkillAFreshness: A★ 400Claude Code +9 - 0.806score
postgres
planetscale
PostgreSQL best practices, query optimization, connection troubleshooting, and performance improvement.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
gmail
maton
Gmail API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-sheets
maton
Google Sheets API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-meet
maton
Google Meet API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
xero
maton
Xero API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
typeform
maton
Typeform API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-play
maton
Google Play Developer API (Android Publisher) integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
outlook-api
maton
Microsoft Outlook API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.748score
salesforce
maton
Salesforce CRM API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.742score
google-drive
maton
Google Drive API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9
Signals
- Stars
- 400
- Forks
- 49
- Open issues
- 12
- Last commit (this folder)
- Aug 7, 2026 (2 months ago)
- Last release
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/CraftOS-dev/CraftBot
- Website
- craftbot.live/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.721score
sarif-parsing
trailofbits
Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners.
SkillBFreshness: B★ 7.8KClaude Code +9 - 0.290score
sarif-parsing
idchain-world
Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners.
SkillDFreshness: D★ 18Claude Code +9 - 0.290score
sarif-parsing
Njones17
Parses and processes SARIF files from static analysis tools like CodeQL, Semgrep, or other scanners.
SkillDFreshness: D★ 24Claude Code +9
More from CraftOS-dev
- 0.679score
mysql
CraftOS-dev
Plan and review MySQL/InnoDB schema, indexing, query tuning, transactions, and operations.
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
jira
CraftOS-dev
Use when the user mentions Jira issues (e.g., "PROJ-123"), asks about tickets, wants to create/view/update issues, check sprint status, or manage their Jira…
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
codeql
CraftOS-dev
Scans a codebase for security vulnerabilities using CodeQL's interprocedural data flow and taint tracking analysis.
SkillAFreshness: A★ 400Claude Code - 0.679score
airweave
CraftOS-dev
Context retrieval layer for AI agents across users' applications.
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
google-sheet
CraftOS-dev
Read, write, append, and manage Google Sheets via the Google Sheets API (Node.js SDK).
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
ontology
CraftOS-dev
Typed knowledge graph for structured agent memory and composable skills.
SkillAFreshness: A★ 400Claude Code +9
Cite this page
sarif-parsing skill. Agent Mart. https://agentmart.dev/skills/craftos-dev-sarif-parsing (last updated 2026-10-24)