Use when the user wants Snyk findings collected or exported as structured records with their supporting evidence, for example "export Snyk findings for this repo as JSON", "collect Snyk SCA and Code results with evidence for our security tooling", or "give me a machine-readable Snyk findings bundle". Runs only the Snyk scans the user puts in scope through the local Snyk MCP server, keeps each native record, and writes one JSON bundle plus a short coverage summary. Read-only. Not for fixing issues (use snyk-fix) or choosing packages (use secure-dependency-health-check).
77
97%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Produce a JSON evidence bundle of Snyk findings for one workspace snapshot. Each finding keeps the scanner's native record next to normalized identity, asset, assessment, observation, and provenance fields. Every field that applies but is not available is labeled, never guessed.
snyk-fix.Snyk MCP server: snyk_version, snyk_sca_scan, snyk_code_scan, snyk_iac_scan, snyk_secret_scan, snyk_container_scan, snyk_sbom_scan.snyk_auth and snyk_trust change local state. Call them only after the user agrees. Never call snyk_logout or snyk_send_feedback.report: true to snyk_iac_scan, and never run snyk monitor. Both upload results to Snyk and create or update projects.[REDACTED]. Strip user:password@ from repository URLs.Ask only for what is missing:
snyk-findings.json at the target root. Tell the user the file is untracked, and do not add it to git.Timestamps. Every timestamp in the bundle is UTC ISO-8601 to the second, for example
2026-10-01T12:00:00Z. Take one with date -u +%Y-%m-%dT%H:%M:%SZ (macOS, Linux) or
[DateTime]::UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'") (PowerShell). Never use another date
format or file modification times.
Snapshot context. Use read-only shell commands.
collection.startedAt.git -C <path> rev-parse HEAD gives the revision. git -C <path> status --porcelain tells you whether the working tree is dirty; record the changed paths. git -C <path> remote get-url origin gives the repository, with credentials stripped. If any command fails, set that field to unknown with the error as the reason.Scanner version. Call snyk_version and store the result in collection.scanner.version.
Scans. Run each in-scope scan in this order: SCA, Code, IaC, secrets, container, SBOM.
Take a timestamp before and after each tool call. These are the scan's startedAt and finishedAt.
Arguments:
| Scan | Tool | Arguments |
|---|---|---|
| SCA | snyk_sca_scan | {path, all_projects: true, include_ignores: true} |
| Code | snyk_code_scan | {path, include_ignores: true} |
| IaC | snyk_iac_scan | {path} |
| Secrets | snyk_secret_scan | {path, include_ignores: true} |
| Container | snyk_container_scan | {image} |
| SBOM | snyk_sbom_scan | {file} |
Do not add severity_threshold: export everything, and let the consumer filter.
Authentication error: stop and ask the user to authenticate, offering snyk_auth.
Untrusted folder: ask the user before calling snyk_trust.
Tool not offered by the server: older Snyk CLI versions do not expose snyk_secret_scan. Record outcome: "unavailable" with that reason. Do not substitute another tool.
Any other failure: retry once. If it fails again, record outcome: "failed" with the error text, and continue with the next scan.
Build records. Create one finding per issue the tool returns.
nativeRecord.Write and check. Take a timestamp for collection.finishedAt. Write UTF-8 JSON with 2-space indentation. Confirm it parses: python3 -m json.tool <output> > /dev/null (macOS, Linux) or Get-Content <output> -Raw | ConvertFrom-Json | Out-Null (PowerShell).
Report to the user:
collection.limitationsNever call the target "clean" when a scan failed or was not requested. Say "no findings from the scans that ran".
bundle-format.md. Never write a bare null and never invent a value.fixedIn means a fixed version exists. isIgnored means suppressed by policy, not fixed.finishedAt. Never use file modification times.id is the rule, and one SCA vulnerability can appear on several dependency paths. Use the identity rules in evidence-profiles.md.snyk/studio-recipes
3752dd0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.