Heads up This site is currently under heavy development.
← all tools
◆ AI/LLM Security

SkillSpector

v2.11.0 open-source

Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, security risks, prompt injection, data exfiltration, and supply-chain risks in Claude Code, Codex, and MCP skills before you install them.

Summary

SkillSpector is an open-source, Apache-licensed command-line scanner that checks AI agent skills — the kind used by Claude Code, Codex CLI, and Gemini CLI — for vulnerabilities and malicious patterns before they're installed. It's built for teams building or vetting AI agent supply chains rather than for general application security work, running static analysis across 70 vulnerability patterns (prompt injection, data exfiltration, supply-chain issues, and more) with an optional LLM-based semantic pass, and outputting terminal, JSON, Markdown, or SARIF reports for gating installs in CI. It underpins NVIDIA's Verified Skills pipeline, which scans and signs skills before they reach NVIDIA's public skills catalog. First committed in 2026, it already has 44 contributors and 61 releases in the past year, including one this week, so development is active.

Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, security risks, prompt injection, data exfiltration, and supply-chain risks in Claude Code, Codex, and MCP skills before you install them.

What SkillSpector answers

What kinds of skills can it actually scan, and from where?

takes a local directory, a single file, a Git repository, a URL, or a zip, so the input doesn't need to already sit on disk in a particular layout

Does it need a live connection or credentials to work?

static analysis runs fully offline with a local fallback for vulnerability data, and the LLM-based semantic pass is optional, so a base scan doesn't depend on network access or an API key

Can I approve known findings so they stop blocking every run?

accepted findings are recorded in a baseline tied to the scanner version and the exact source content, so a change to the code or a scanner upgrade forces those findings to be reviewed again rather than staying silently suppressed

Is it safe to expose as a shared service rather than run locally per developer?

a remote server mode exists but refuses to scan local filesystem paths or local rule directories, restricting that ability to the trusted local transport

Can I feed it my own detection rules alongside its built-in checks?

custom pattern rules can be added without colliding with the built-in rule set, since built-in rules keep precedence and aren't overridden by a same-named custom rule

all 8 features, with the evidence for each →

Features

8 capabilities across 5 areas

Built from everything we hold on SkillSpector — every release we have summarised, its product documentation and how that documentation has changed, its README, its command-line surface and API, and runs we performed ourselves. Dates are when we first saw a capability, not when the vendor introduced it.

Capability area
Vulnerability and supply-chain detection 2 capabilities SkillSpector identifies security risks introduced through skill content, including hidden prompt-injection attempts and unsafe supply-chain artefacts. These detections form the core of what the cyber tool scans for.
Prompt-injection and obfuscation detection shipped Detects whitespace-padding tricks used to conceal prompt-injection instructions inside skill content. 1 release · first seen Aug 2026

release

  • Adds detection for whitespace-padding techniques used to hide prompt-injection instructions in skill content. v2.9.4 · Aug 2026 · source · release history
Python bytecode supply-chain detection shipped Flags skills that ship Python bytecode or cache directories as a high-severity supply-chain risk. 1 release · first seen Aug 2026

release

  • Adds a HIGH-severity SC8 finding when a skill ships Python bytecode or __pycache__ content, expanding supply-chain coverage. v2.9.4 · Aug 2026 · source · release history
Scan integrity and CI pipeline control 2 capabilities SkillSpector gives pipelines reliable signals about whether a scan completed fully and correctly, so builds can be blocked on failure rather than passing silently. Recursive scan failures and fatal errors are surfaced explicitly rather than swallowed.
Scan completeness reporting and CI blocking shipped Reports whether a scan completed successfully and exposes diagnostic detail so CI pipelines can block on incomplete or failed scans. 6 releases · 2 other sources · first seen Jul 2026

release

  • Adds canonical inspection-ledger accounting across static and LLM analysis stages, including per-component coverage and explicit out-of-scope records. v2.5.0 · Jul 2026 · source · release history
  • JSON integrations must treat invalid or missing output, a nonzero process exit, or execution_successful: false as a blocking validation error and surface analysis_completeness.ledger_exceptions for diagnosis. v2.5.0 · Jul 2026 · source · release history
  • CLI now exits with code 2 for fatal execution or accounting failures, even when a JSON report was produced. v2.5.0 · Jul 2026 · source · release history
  • New execution_successful top-level field and analysis_completeness.ledger_exceptions diagnostics in JSON output let automation block incomplete or failed scans. v2.5.0 · Jul 2026 · source · release history
  • Recursive scans now propagate child-scan failures to the combined report and return a failure when any child scan fails. v2.5.0 · Jul 2026 · source · release history
  • JSON and SARIF reports now include execution-completeness information and analyzer status so a zero-finding report can be distinguished from a partial or failed scan. v2.5.0 · Jul 2026 · source · release history

example

  • Surface ledger exceptions in CI to diagnose why an incomplete scan was blocked. skillspector scan ./my-skill/ --format json --output report.json; jq '.analysis_completeness.ledger_exceptions' report.json v2.5.0 · Jul 2026 · source
  • Check whether a scan completed reliably in CI — block the pipeline if execution_successful is false rather than silently accepting a zero-finding report. skillspector scan ./my-skill/ --format json --output report.json && jq '.execution_successful' report.json v2.5.0 · Jul 2026 · source
Baseline fingerprint versioning shipped Ties accepted-finding baselines to the scanner version and source content, and forces regeneration of outdated baseline files to prevent stale suppressions. 2 releases · 1 other source · first seen Jul 2026

release

  • Baseline fingerprints upgraded to version 2 format, binding accepted findings to the scanner version, source content, and full finding evidence. v2.5.0 · Jul 2026 · source · release history
  • Baseline files with version 1 fingerprints are no longer accepted; run skillspector baseline <path>, review the generated version 2 entries, and commit the replacement baseline (rules-only version 1 baselines remain supported with a warning). v2.5.0 · Jul 2026 · source · release history

example

  • Regenerate a v2 baseline after upgrading from v1 so fingerprint suppressions are accepted again. skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml v2.5.0 · Jul 2026 · source
Resource and ingest controls 2 capabilities SkillSpector enforces configurable limits on the size and volume of content it processes, whether downloaded, archived, or cloned. This prevents runaway resource use and ensures the cyber tool fails safely rather than silently accepting oversized input.
LLM analyzer concurrency control shipped Lets operators set a ceiling on how many LLM analyser requests run at once, avoiding bursts that breach provider rate limits. 1 release · 1 other source · first seen Jul 2026

release

  • Adds SKILLSPECTOR_MAX_LLM_CONCURRENCY environment variable to control the default concurrency of asynchronous LLM analyzer batches (default 10; values below 1 clamp to 1; blank or invalid values retain the default). v2.5.1 · Jul 2026 · source · release history

example

  • Serialize LLM analyzer requests to avoid bursting a rate-limited provider such as Anthropic. export SKILLSPECTOR_MAX_LLM_CONCURRENCY=1 export SKILLSPECTOR_PROVIDER=anthropic export ANTHROPIC_API_KEY=sk-ant-... skillspector scan ./my-skill/ v2.5.1 · Jul 2026 · source
Ingest size and resource limits shipped Caps the size and entry count of URLs, zip archives, and Git repositories the cyber tool will process, erroring out if any limit is exceeded. 1 release · first seen Aug 2026

release

  • Enforces INGEST_MAX_BYTES (100 MiB) cap on streamed URL downloads, total uncompressed zip size, and post-clone Git repo disk usage, and INGEST_MAX_ZIP_MEMBERS (10,000) cap on zip entries — failing closed with IngestLimitExceededError on breach. v2.5.2 · Aug 2026 · source · release history
Transport and access security 1 capability SkillSpector restricts what scan targets and rule sources are reachable depending on how the cyber tool is connected to. This limits the attack surface when the tool is exposed over a network transport.
MCP transport security boundary shipped Blocks HTTP MCP transport from reaching local file targets or local YARA-rule directories, while keeping full local access available over stdio. 2 releases · 1 other source · first seen Aug 2026

release

  • HTTP MCP clients can no longer scan local filesystem paths or provide local YARA-rule directories; switch to a remote repository or URL for HTTP requests, or use stdio transport for local scans. v2.9.4 · Aug 2026 · source · release history
  • HTTP MCP transport (skillspector mcp with http transport) now rejects local filesystem scan targets and local YARA-rule directories, enforcing a security boundary between remote callers and scanner-host paths; stdio transport retains full local-scan capability. v2.9.4 · Aug 2026 · source · release history

example

  • Run SkillSpector's MCP server over stdio (trusted local transport) to retain the ability to scan local filesystem paths after the HTTP restriction. skillspector mcp --transport stdio v2.9.4 · Aug 2026 · source
Remediation and least-privilege guidance 1 capability SkillSpector links findings to actionable remediation advice, including least-privilege permission guidance. This helps users understand not just what was found but how to address it.
Least-privilege permission guidance shipped Incorporates least-privilege tool-permission guidance into finding remediations so developers know how to scope skill permissions correctly. 1 release · first seen Aug 2026

release

  • Recognises allowed-tools as valid least-privilege permission guidance in remediations and documentation. v2.9.4 · Aug 2026 · source · release history
Capability
Evidence

Lines in monospace are the tool's own words — help text parsed from its source, or an endpoint from its API document. Everything else is our summary of a dated release or documentation change, linked back to the source it came from.

Release history

  1. v2.11.0 Aug 28, 2026 · issue 009

    SkillSpector v2.11.0 adds npm lockfile scanning, bundled hook findings (BH1–BH3), and LLM sampling controls via SKILLSPECTOR_TEMPERATURE and SKILLSPECTOR_SEED.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.11.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.11.0
    └──▷ TRY IT
    Pin LLM sampling for reproducible semantic analysis results when scanning a skill against an OpenAI-compatible endpoint.
    $ SKILLSPECTOR_PROVIDER=openai OPENAI_API_KEY="$OPENAI_API_KEY" SKILLSPECTOR_TEMPERATURE=0 SKILLSPECTOR_SEED=42 skillspector scan ./my-skill/
    • Adds SKILLSPECTOR_TEMPERATURE (values 01) and SKILLSPECTOR_SEED (integer) environment variables for optional LLM sampling control; forwarded to OpenAI-compatible and Azure OpenAI endpoints, and left unset to preserve provider defaults.
    • Introduces BH1, BH2, and BH3 findings for bundled lifecycle hook execution (hooks/hooks.json), directly proven remote transfer of sensitive event or file content, and broad or ignored project permission surfaces (.claude/settings.json, .claude/settings.local.json).
    • Expands skillspector scan --help to list all supported hosted, local, compatible, and CLI-backed LLM providers together with their authentication paths.
    • Supports safe traversal of intermediate path components via O_PATH on Linux, allowing scans in restricted sandboxes where ancestor directories lack read permission, while preserving final-file and no-symlink protections.
    └──▷ BREAKING ON UPGRADE
    • !Existing scans may now surface new BH1, BH2, or BH3 findings for supported bundled hook and settings files (hooks/hooks.json, .claude/settings.json, .claude/settings.local.json); review those findings before accepting them into a baseline.
  2. v2.11.0 Aug 28, 2026 · issue 002

    SkillSpector v2.11.0 adds npm lockfile scanning, bundled hook findings (BH1–BH3), and LLM sampling controls via SKILLSPECTOR_TEMPERATURE and SKILLSPECTOR_SEED.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.11.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.11.0
    └──▷ TRY IT
    Pin LLM sampling for reproducible semantic analysis results when scanning a skill against an OpenAI-compatible endpoint.
    $ SKILLSPECTOR_PROVIDER=openai OPENAI_API_KEY="$OPENAI_API_KEY" SKILLSPECTOR_TEMPERATURE=0 SKILLSPECTOR_SEED=42 skillspector scan ./my-skill/
    • Adds SKILLSPECTOR_TEMPERATURE (values 01) and SKILLSPECTOR_SEED (integer) environment variables for optional LLM sampling control; forwarded to OpenAI-compatible and Azure OpenAI endpoints, and left unset to preserve provider defaults.
    • Introduces BH1, BH2, and BH3 findings for bundled lifecycle hook execution (hooks/hooks.json), directly proven remote transfer of sensitive event or file content, and broad or ignored project permission surfaces (.claude/settings.json, .claude/settings.local.json).
    • Expands skillspector scan --help to list all supported hosted, local, compatible, and CLI-backed LLM providers together with their authentication paths.
    • Supports safe traversal of intermediate path components via O_PATH on Linux, allowing scans in restricted sandboxes where ancestor directories lack read permission, while preserving final-file and no-symlink protections.
    └──▷ BREAKING ON UPGRADE
    • !Existing scans may now surface new BH1, BH2, or BH3 findings for supported bundled hook and settings files (hooks/hooks.json, .claude/settings.json, .claude/settings.local.json); review those findings before accepting them into a baseline.
  3. v2.10.0 Aug 26, 2026 · issue 009

    SkillSpector v2.10.0 adds transitive scanning, hidden/nested artifact inspection, EA5 detection, AISOP/AISP bundle support, and two new output controls.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.10.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.10.0
    └──▷ TRY IT
    Scan a skill and all skills it references transitively, limiting depth and restricting allowed sources, to catch supply-chain risks in referenced dependencies.
    $ skillspector scan ./my-skill/ --transitive --transitive-depth 2 --transitive-allow-prefix https://github.com/trusted-org/
    Run a scan with finding text localized to French, then check the max severity field in the JSON report to gate a CI pipeline.
    $ SKILLSPECTOR_OUTPUT_LANGUAGE=French skillspector scan ./my-skill/ --format json --output report.json && jq '.risk_assessment.max_issue_severity' report.json
    • Adds --transitive flag to opt into transitive scanning of referenced skills, with --transitive-depth, --transitive-allow-prefix, and --transitive-deny-prefix controls for bounded traversal and source filtering.
    • Adds SKILLSPECTOR_OUTPUT_LANGUAGE environment variable to set the language of human-readable LLM-generated finding text across discovery analyzers, the meta-analyzer, and MCP tool-poisoning analysis.
    • Adds risk_assessment.max_issue_severity field to JSON/SARIF output (value NONE when no active issue is reported) for downstream policy gates.
    • Adds bounded local inspection of hidden files and ZIP-compatible nested artifacts (ZIP, DOCX, XLSX, PPTX) without extracting or executing members, raising HIGH SC9 findings for concealed executables.
    • Adds EA5 static findings for external model or provider selection, covering silent coding-CLI account switches and top-level model pins.
    +2 moreshow less
    • Adds structured skill summaries for valid AISOP/AISP bundles across terminal, Markdown, JSON, and SARIF output formats.
    • Adds dynamic analyzer discovery and validates risk-score inputs against the registered analyzer set.
    └──▷ BREAKING ON UPGRADE
    • !langgraph-cli[inmem] is no longer included in the base installation; LangGraph Studio users who install only the base package must now install skillspector[langgraph-dev] explicitly.
  4. v2.10.0 Aug 26, 2026 · issue 002

    SkillSpector v2.10.0 adds transitive scanning, hidden/nested artifact inspection, EA5 detection, AISOP/AISP bundle support, and two new output controls.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.10.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.10.0
    └──▷ TRY IT
    Scan a skill and all skills it references transitively, limiting depth and restricting allowed sources, to catch supply-chain risks in referenced dependencies.
    $ skillspector scan ./my-skill/ --transitive --transitive-depth 2 --transitive-allow-prefix https://github.com/trusted-org/
    Run a scan with finding text localized to French, then check the max severity field in the JSON report to gate a CI pipeline.
    $ SKILLSPECTOR_OUTPUT_LANGUAGE=French skillspector scan ./my-skill/ --format json --output report.json && jq '.risk_assessment.max_issue_severity' report.json
    • Adds --transitive flag to opt into transitive scanning of referenced skills, with --transitive-depth, --transitive-allow-prefix, and --transitive-deny-prefix controls for bounded traversal and source filtering.
    • Adds SKILLSPECTOR_OUTPUT_LANGUAGE environment variable to set the language of human-readable LLM-generated finding text across discovery analyzers, the meta-analyzer, and MCP tool-poisoning analysis.
    • Adds risk_assessment.max_issue_severity field to JSON/SARIF output (value NONE when no active issue is reported) for downstream policy gates.
    • Adds bounded local inspection of hidden files and ZIP-compatible nested artifacts (ZIP, DOCX, XLSX, PPTX) without extracting or executing members, raising HIGH SC9 findings for concealed executables.
    • Adds EA5 static findings for external model or provider selection, covering silent coding-CLI account switches and top-level model pins.
    +2 moreshow less
    • Adds structured skill summaries for valid AISOP/AISP bundles across terminal, Markdown, JSON, and SARIF output formats.
    • Adds dynamic analyzer discovery and validates risk-score inputs against the registered analyzer set.
    └──▷ BREAKING ON UPGRADE
    • !langgraph-cli[inmem] is no longer included in the base installation; LangGraph Studio users who install only the base package must now install skillspector[langgraph-dev] explicitly.
  5. v2.9.5 Aug 15, 2026 · issue 005

    SkillSpector v2.9.5 adds Ollama, Azure OpenAI, and OpenAI-compatible providers, opt-in .skillspector-baseline.yaml discovery, and deserialization detection.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.9.5 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.9.5
    └──▷ TRY IT
    Let SkillSpector auto-discover the committed baseline so CI suppresses known findings without an explicit flag.
    $ skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
    # commit .skillspector-baseline.yaml to the repo root, then in CI:
    skillspector scan ./my-skill/
    • Adds opt-in automatic discovery of a top-level .skillspector-baseline.yaml file; explicitly supplied baselines via --baseline remain authoritative.
    • Adds Ollama support for local OpenAI-compatible inference, Azure OpenAI deployment routing, and a configurable provider for other OpenAI-compatible endpoints via SKILLSPECTOR_PROVIDER.
    • Adds static analysis coverage for insecure deserialization patterns surfaced as AST10, TT6, and DS1–DS4 findings.
    • Uses byte offsets when mapping YARA matches back to source lines so non-ASCII content in scanned files is reported at accurate locations.
    • Scopes the destructive-autonomy YARA post-filter to SkillSpector's built-in rule namespace, preventing custom YARA rules that reuse a built-in rule name from being incorrectly post-filtered.
  6. v2.9.5 Aug 15, 2026 · issue 002

    SkillSpector v2.9.5 adds Ollama, Azure OpenAI, and OpenAI-compatible providers, opt-in .skillspector-baseline.yaml discovery, and deserialization detection.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.9.5 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.9.5
    └──▷ TRY IT
    Let SkillSpector auto-discover the committed baseline so CI suppresses known findings without an explicit flag.
    $ skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
    # commit .skillspector-baseline.yaml to the repo root, then in CI:
    skillspector scan ./my-skill/
    • Adds opt-in automatic discovery of a top-level .skillspector-baseline.yaml file; explicitly supplied baselines via --baseline remain authoritative.
    • Adds Ollama support for local OpenAI-compatible inference, Azure OpenAI deployment routing, and a configurable provider for other OpenAI-compatible endpoints via SKILLSPECTOR_PROVIDER.
    • Adds static analysis coverage for insecure deserialization patterns surfaced as AST10, TT6, and DS1–DS4 findings.
    • Uses byte offsets when mapping YARA matches back to source lines so non-ASCII content in scanned files is reported at accurate locations.
    • Scopes the destructive-autonomy YARA post-filter to SkillSpector's built-in rule namespace, preventing custom YARA rules that reuse a built-in rule name from being incorrectly post-filtered.
  7. v2.9.4 Aug 13, 2026 · issue 005

    SkillSpector v2.9.4 adds whitespace-padding prompt-injection detection and Python bytecode supply-chain findings (SC8).

    └──▷ GET THIS VERSION
    $ git clone --branch v2.9.4 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.9.4
    • Adds detection for whitespace-padding techniques used to conceal prompt-injection instructions inside skill content.
    • Adds a HIGH-severity SC8 finding when a skill ships Python bytecode or __pycache__ content, expanding supply-chain coverage.
    • Recognises allowed-tools as valid least-privilege permission guidance in remediations and documentation.
    • Ships a Skill Inspector companion skill guide.
    └──▷ BREAKING ON UPGRADE
    • !HTTP MCP clients can no longer scan local filesystem paths or supply local YARA-rule directories; use a remote repository or URL for HTTP requests, or use stdio transport for local scans.
  8. v2.9.4 Aug 13, 2026 · issue 002

    SkillSpector v2.9.4 adds whitespace-padding prompt-injection detection and Python bytecode supply-chain findings (SC8).

    └──▷ GET THIS VERSION
    $ git clone --branch v2.9.4 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.9.4
    • Adds detection for whitespace-padding techniques used to conceal prompt-injection instructions inside skill content.
    • Adds a HIGH-severity SC8 finding when a skill ships Python bytecode or __pycache__ content, expanding supply-chain coverage.
    • Recognises allowed-tools as valid least-privilege permission guidance in remediations and documentation.
    • Ships a Skill Inspector companion skill guide.
    └──▷ BREAKING ON UPGRADE
    • !HTTP MCP clients can no longer scan local filesystem paths or supply local YARA-rule directories; use a remote repository or URL for HTTP requests, or use stdio transport for local scans.
  9. v2.5.2 Aug 4, 2026 · issue 005

    SkillSpector v2.5.2 adds MCP registry posture scanning and enforces bounded ingest limits for URLs, archives, and Git repos.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.2 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.2
    • Adds MCP registry posture scanning via skillspector mcp (install with the mcp extra: skillspector[mcp]).
    • Enforces INGEST_MAX_BYTES (100 MiB per-ingest cap) and INGEST_MAX_ZIP_MEMBERS (10,000 entries) for streamed URL downloads, zip archives, and Git repository clones, failing closed with IngestLimitExceededError on breach.
  10. v2.5.2 Aug 4, 2026 · issue 002

    SkillSpector v2.5.2 adds MCP registry posture scanning and enforces bounded ingest limits for URLs, archives, and Git repos.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.2 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.2
    • Adds MCP registry posture scanning via skillspector mcp (install with the mcp extra: skillspector[mcp]).
    • Enforces INGEST_MAX_BYTES (100 MiB per-ingest cap) and INGEST_MAX_ZIP_MEMBERS (10,000 entries) for streamed URL downloads, zip archives, and Git repository clones, failing closed with IngestLimitExceededError on breach.
  11. v2.5.1 Jul 31, 2026 · issue 005

    SkillSpector v2.5.1 adds SKILLSPECTOR_MAX_LLM_CONCURRENCY to throttle async LLM batch requests for rate-limited providers.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.1 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.1
    └──▷ TRY IT
    Serialize LLM analyzer requests to avoid bursting a rate-limited provider such as one with a strict requests-per-minute cap.
    $ SKILLSPECTOR_MAX_LLM_CONCURRENCY=1 skillspector scan ./my-skill/
    Persist a reduced concurrency limit for all scans run in a Docker-based workflow by adding it to your .env file.
    $ SKILLSPECTOR_PROVIDER=anthropic
    ANTHROPIC_API_KEY=sk-ant-...
    SKILLSPECTOR_MAX_LLM_CONCURRENCY=3
    • Adds SKILLSPECTOR_MAX_LLM_CONCURRENCY environment variable to configure the default async LLM batch concurrency; blank or invalid values retain the default of 10, and values below 1 clamp to 1.
  12. v2.5.1 Jul 31, 2026 · issue 002

    SkillSpector v2.5.1 adds SKILLSPECTOR_MAX_LLM_CONCURRENCY to throttle async LLM batch requests for rate-limited providers.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.1 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.1
    └──▷ TRY IT
    Serialize LLM analyzer requests to avoid bursting a rate-limited provider such as one with a strict requests-per-minute cap.
    $ SKILLSPECTOR_MAX_LLM_CONCURRENCY=1 skillspector scan ./my-skill/
    Persist a reduced concurrency limit for all scans run in a Docker-based workflow by adding it to your .env file.
    $ SKILLSPECTOR_PROVIDER=anthropic
    ANTHROPIC_API_KEY=sk-ant-...
    SKILLSPECTOR_MAX_LLM_CONCURRENCY=3
    • Adds SKILLSPECTOR_MAX_LLM_CONCURRENCY environment variable to configure the default async LLM batch concurrency; blank or invalid values retain the default of 10, and values below 1 clamp to 1.
  13. v2.5.0 Jul 27, 2026 · issue 005

    SkillSpector v2.5.0 adds inspection-ledger accounting with execution_successful and analysis_completeness.ledger_exceptions fields in JSON/SARIF output, plus exit code 2 for fatal failures.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.0
    └──▷ TRY IT
    Gate CI on scan completeness — block pipelines where the scan itself failed, not just where findings were found.
    $ skillspector scan ./my-skill/ --format json --output report.json; python3 -c "import json,sys; r=json.load(open('report.json')); sys.exit(1 if not r.get('execution_successful') else 0)"
    After upgrading, regenerate a version 2 baseline so fingerprints bind to the new scanner version before committing.
    $ skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
    • Adds execution_successful top-level status field and analysis_completeness.ledger_exceptions diagnostics to JSON output, letting automation distinguish a complete scan from a partial or failed one.
    • CLI now exits with code 2 for a fatal execution or accounting failure, even when a JSON report was produced — enabling fail-closed CI gates.
    • Adds canonical inspection-ledger accounting across static and LLM analysis stages, with per-component coverage and explicit out-of-scope records in JSON and SARIF output.
    • Regenerate baselines using skillspector baseline <path> to produce version 2 fingerprints, which bind accepted findings to the scanner version, source content, and full finding evidence.
    • Recursive scans now propagate child scan failures into the combined report and return a non-zero exit when any child fails.
    └──▷ BREAKING ON UPGRADE
    • !Baseline files containing version 1 fingerprints are rejected on upgrade. Run skillspector baseline <path>, review the generated version 2 entries, and commit the replacement; rules-only version 1 baselines remain supported with a warning.
    • !JSON integrations must now treat invalid or missing output, a nonzero process exit, or execution_successful: false as a blocking validation error and surface analysis_completeness.ledger_exceptions for diagnosis.
  14. v2.5.0 Jul 27, 2026 · issue 002

    SkillSpector v2.5.0 adds inspection-ledger accounting with execution_successful and analysis_completeness.ledger_exceptions fields in JSON/SARIF output, plus exit code 2 for fatal failures.

    └──▷ GET THIS VERSION
    $ git clone --branch v2.5.0 https://github.com/NVIDIA/SkillSpector.git
    # already have the repo? check out this version:
    $ git checkout v2.5.0
    └──▷ TRY IT
    Gate CI on scan completeness — block pipelines where the scan itself failed, not just where findings were found.
    $ skillspector scan ./my-skill/ --format json --output report.json; python3 -c "import json,sys; r=json.load(open('report.json')); sys.exit(1 if not r.get('execution_successful') else 0)"
    After upgrading, regenerate a version 2 baseline so fingerprints bind to the new scanner version before committing.
    $ skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
    • Adds execution_successful top-level status field and analysis_completeness.ledger_exceptions diagnostics to JSON output, letting automation distinguish a complete scan from a partial or failed one.
    • CLI now exits with code 2 for a fatal execution or accounting failure, even when a JSON report was produced — enabling fail-closed CI gates.
    • Adds canonical inspection-ledger accounting across static and LLM analysis stages, with per-component coverage and explicit out-of-scope records in JSON and SARIF output.
    • Regenerate baselines using skillspector baseline <path> to produce version 2 fingerprints, which bind accepted findings to the scanner version, source content, and full finding evidence.
    • Recursive scans now propagate child scan failures into the combined report and return a non-zero exit when any child fails.
    └──▷ BREAKING ON UPGRADE
    • !Baseline files containing version 1 fingerprints are rejected on upgrade. Run skillspector baseline <path>, review the generated version 2 entries, and commit the replacement; rules-only version 1 baselines remain supported with a warning.
    • !JSON integrations must now treat invalid or missing output, a nonzero process exit, or execution_successful: false as a blocking validation error and surface analysis_completeness.ledger_exceptions for diagnosis.
my-toolchain — 0 tools
paste an install list to detect your tools

A brew list, a Brewfile, requirements.txt, a Dockerfile — or just the product names, free-form. Nothing leaves your browser.

    browse all tools →