PAGES
← all tools
◆ SAST / SCA / Code Security

skill-scanner

2.3.1 open-source

Security Scanner for Agent Skills

Summary

skill-scanner is an open-source command-line scanner that checks AI agent skills — OpenAI Codex Skills, Cursor Agent Skills, and related formats — for prompt injectionprompt injectionAn attack where text the model reads, such as a web page, file or tool result, carries instructions that override the user's. It is the main security risk for agents with tools., data exfiltrationdata exfiltrationMoving data out of a system or organization without authorization. It can happen through network transfers, removable media or other channels., hardcoded secrets, and malicious code before they run, and it is free to use under an Apache 2.0 licence. It combines pattern-based YARA/YAML rules, an LLMLLMA large language model, a neural network trained on large amounts of text to recognize patterns and generate language. Applications use it for tasks such as answering, summarizing and writing code.-as-a-judge analyzer, and behavioral dataflow tracking through bash and pipeline commands, installed via pip and pointed at a skill directory, with findings emitted as JSON, SARIFSARIFStatic Analysis Results Interchange Format, a standard for sharing code-analysis findings, including locations and rule details. It lets scanners report results to a common review interface., or HTML for CI pipelines. It is aimed at teams building or securing AI agents rather than general application security staff, and its documentation frames it as a companion to Cisco's AI Defense framework rather than a general-purpose SASTSASTStatic application security testing, analyzing source code or compiled code for vulnerabilities without running the application. It helps developers find problems before deployment. tool. First committed in 2026, it already has 35 contributors, 13 releases, and a release only 18 days old, suggesting active, fast-moving development.

Security Scanner for Agent Skills

How skill-scanner helps

Which skills in my agent's directory contain hidden instructions that could hijack its behavior?

scans SKILL.md and asset files (HTML, CSS, SVG, XML) for prompt-injection patterns using YARA/YAML rules and an LLM-as-a-judge pass, flagging each hit with severity and file location

Is any skill I'm about to install trying to send data somewhere it shouldn't?

traces taint through bash and pipeline commands from sources like env vars, file reads, and network calls to sinks such as network sends, surfacing multi-step exfiltration chains a single pattern match would miss

Did someone commit a live API key or token into a skill's source?

runs secret-detection checks including documented Anthropic and OpenAI key-prefix patterns across the codebase and reports each exposed credential with its file and line

Does a skill's compiled code actually match the source it ships with?

compares bytecode files against their corresponding source, flagging bytecode with no matching source or an AST that diverges from it as likely hidden or tampered code

Which shell commands in a skill are actually dangerous once you account for pipes and arguments?

evaluates each command in full context — arguments, redirects, chained commands — against a four-tier safety model, rather than judging commands in isolation

all 44 features, with the evidence for each →

Languages

Not documented

Features

44 capabilities across 2 capability groups · 5 backed by code, an API document or a real run

Built from skill-scanner's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • skill-scanner covers 2 of the 8 vulnerability assessment methods capabilities we track.

What skill-scanner offers you

  • Command-line interface5
  • Scripting language support4
  • CI/CD pipeline integration3
  • JavaScript scripting support3
  • JSON data export3
  • ML-based detection2
  • Python scripting support1
  • User-defined detection rules1
  • REST API
Static application security testing 12 features Vulnerability assessment methods since 2026
Static analysis for prompt injection and jailbreak patterns shipped Detects prompt injection, jailbreak patterns, and Unicode-based smuggling techniques through a YARA-based static analysis engine. 10 releases · 2 other sources · first seen Jun 2026

Shared capability: Static application security testing

release 10 total

  • Taxonomy codes follow taxonomy 2.0.0: jailbreak rules move from AITech-2.1 to AITech-1.1 / AISubtech-1.1.5, and hardcoded secrets from AISubtech-8.2.2 to AISubtech-14.1.1. Any filters on 1.x codes must be updated. 2.3.0 · Oct 2026 · source · release history
  • The AITech-99.9 / AISubtech-99.9.9 placeholder codes are no longer emitted. 2.3.0 · Oct 2026 · source · release history
  • A shell prompt marker by itself no longer captures a command on the next line; prompt and command must share a line. 2.2.2 · Oct 2026 · source · release history
  • Adds new SUPPLY_CHAIN_REGISTRY_REDIRECT (HIGH) and UNDECLARED_NETWORK_DESTINATION (LOW) static detection rules. 2.2.0 · Oct 2026 · source · release history
  • Extends frontmatter scanning to cover description and when_to_use fields across core rules, YARA, and active-directive rules. 2.2.0 · Oct 2026 · source · release history
  • Add --use-osv flag to enable OSV.dev dependency vulnerability analysis during scans. 2.0.13 · Aug 2026 · source · release history

docs

  • Scans AI Agent Skills for prompt injection, data exfiltration, and malicious code using static analysis, dataflow, LLM, and cloud-based detection.

example

  • Scan a skill for ASCII smuggling and jailbreak patterns — both new detections fire automatically via the static engine, no extra flags needed. skill-scanner scan /path/to/skill --format sarif --output results.sarif 2.0.12 · Jun 2026 · source
ATR rule pack shipped Applies a large library of ATR-authored detection rules during static analysis to broaden threat coverage. 8 releases · 2 other sources · first seen Feb 2026

Shared capability: Static application security testing

Also counts toward: Command-line interface, User-defined detection rules, JavaScript scripting support, Python scripting support, Scripting language support

release 8 total

  • Adds DATA_EXFIL_ENV_DUMP detection rule for whole process-environment value dumps in Python, JavaScript/TypeScript, and shell code, with targeted reads, keys-only enumeration, literal examples, and comments kept below the HIGH rule boundary. 2.2.2 · Oct 2026 · source · release history
  • Expands the ATR rule pack from 314 to 712 supported rules (pack version 3.5.6). 2.0.13 · Aug 2026 · source · release history
  • Expands the ATR detection pack from 34 to 314 rules, restructured by category. 2.0.10 · Apr 2026 · source · release history
  • New --rule-packs CLI flag enables loading multiple signature rule packs in a single scan invocation. 2.0.8 · Apr 2026 · source · release history
  • Adds ATR community rule pack with 34 rules covering MCP tool poisoning, multi-agent attacks, and advanced prompt injection. 2.0.8 · Apr 2026 · source · release history
  • Supports using --output-<fmt> flags to control the primary output format, not just secondary formats. 2.0.5 · Mar 2026 · source · release history

example

  • Load the new ATR community rule pack alongside your existing packs to catch MCP tool-poisoning and multi-agent attack patterns in one pass. skill-scanner scan --rule-packs atr,default <target> 2.0.8 · Apr 2026 · source
  • Bring your own detection rules for proprietary threat patterns by pointing the scanner at a custom rule pack directory. skill-scanner scan ./my-skill --custom-rules ./packs/my-org-rules/ --format markdown --output-markdown report.md 2.0.0 · Feb 2026 · source
GitHub repository scanning shipped Clones and scans all skills in a public GitHub repository, preserving repository context for traceability in multi-repo pipelines. 2 releases · 2 other sources · first seen Jun 2026

Shared capability: Static application security testing

Also counts toward: CI/CD pipeline integration

release

  • Adds scanner_version, llm_provider, llm_base_url, and aws_region inputs to the reusable GitHub Actions workflow. 2.2.0 · Oct 2026 · source · release history
  • Extends scanner to pass repository name through scan context, improving traceability in multi-repo pipelines. 2.0.12 · Jun 2026 · source · release history

example

  • Scan a GitHub repo and surface jailbreak/ASCII-smuggling findings in CI, with the repo name now correctly propagated in scan metadata. skill-scanner scan-repo owner/repo --use-llm --fail-on-severity high --format sarif --output results.sarif 2.0.12 · Jun 2026 · source
  • Recursively scan with cross-skill overlap detection skill-scanner scan-all /path/to/skills --recursive --check-overlap
Unpinned dependency detection shipped Flags dependencies that are not pinned to a specific version, surfacing supply-chain risk in skill packages. 2 releases · first seen Aug 2026

Shared capability: Static application security testing

release

  • Unpinned dependencies are now reported at LOW severity instead of MEDIUM. 2.2.0 · Oct 2026 · source · release history
  • Flags unpinned dependencies across manifest formats via the static analyzer, surfacing supply-chain risk in skill packages. 2.0.13 · Aug 2026 · source · release history
Advanced shell and subprocess taint tracking shipped Detects hidden command construction via aliases, class scopes, and XOR encoding to surface complex supply-chain and execution risks. 2 releases · first seen Sep 2026

Shared capability: Static application security testing

release

  • Adds pipeline detection for recovered runtime commands. 2.1.0 · Sep 2026 · source · release history
  • Expands static detection to identify shell-enabled subprocess calls through aliases and class scopes, constructed sensitive-file reads, import aliases, and commands hidden by supported repeating-XOR encoding. 2.1.0 · Sep 2026 · source · release history
Multimodal asset analysis shipped Scans HTML, CSS, SVG, XML, and XSD assets for prompt injection and structural vulnerabilities. 1 release · 1 other source · first seen Feb 2026

Shared capability: Static application security testing

Also counts toward: JavaScript scripting support, ML-based detection, Scripting language support

release

  • Adds first-class JavaScript and TypeScript scanning: eval, child_process, Function constructor, fetch, fs access, secrets, obfuscation patterns, and asset-level prompt-injection scanning for .html, .css, .svg, .xml, .xsd. 2.0.0 · Feb 2026 · source · release history

docs

  • Scans AI Agent Skills for prompt injection, data exfiltration, and malicious code using static analysis, dataflow, LLM, and cloud-based detection.
Suspicious URL classification shipped Identifies and classifies suspicious URLs found inside skill configuration files. 1 release · first seen Aug 2026

Shared capability: Static application security testing

release

  • Classifies suspicious URLs found in configuration files via the static analyzer. 2.0.13 · Aug 2026 · source · release history
Bash taint tracking shipped Performs lightweight dataflow analysis for bash scripts, tracking taint from command substitution and env vars to dangerous sinks. 1 release · first seen Feb 2026

Shared capability: Static application security testing

Also counts toward: Scripting language support

release

  • New Bash Taint Tracker performs lightweight dataflow analysis for bash scripts, tracking taint from command substitution, env vars, sensitive file reads, and network sources through variable propagation to dangerous sinks. 2.0.0 · Feb 2026 · source · release history
Bytecode analysis shipped Detects hidden code in .pyc files and identifies mismatches between compiled bytecode and source AST to flag supply-chain tampering. 1 release · first seen Feb 2026

Shared capability: Static application security testing

release

  • New Bytecode Analyzer detects .pyc files without matching .py source and bytecode whose AST doesn't match its source file, flagging hidden code and supply-chain tampering. 2.0.0 · Feb 2026 · source · release history
JavaScript and TypeScript analysis shipped Scans JavaScript and TypeScript source code for dangerous patterns including eval, child_process, fetch, fs access, secrets, and obfuscation. 1 release · first seen Feb 2026

Shared capability: Static application security testing

Also counts toward: JavaScript scripting support, Scripting language support

release

  • Adds first-class JavaScript and TypeScript scanning: eval, child_process, Function constructor, fetch, fs access, secrets, obfuscation patterns, and asset-level prompt-injection scanning for .html, .css, .svg, .xml, .xsd. 2.0.0 · Feb 2026 · source · release history
PDF analysis shipped Performs structural analysis on PDF files as part of the static analysis pass. 1 release · first seen Feb 2026

Shared capability: Static application security testing

release

  • Expands static analysis to a 13-pass architecture covering manifest validation, prompt injection in SKILL.md, Python and Bash code checks, PDF structural analysis, Office macro detection, homoglyph attacks, YARA binary patterns, and asset-level prompt injection. 2.0.0 · Feb 2026 · source · release history
Pipeline attack detection shipped Models taint flow through shell pipelines using a source-transform-sink model to detect multi-step attack chains like data exfiltration and fetch-execute. 1 release · first seen Feb 2026

Shared capability: Static application security testing

release

  • New Pipeline Analyzer models taint flow through shell pipelines using a source → transform → sink model to detect multi-step attack chains (data exfiltration, fetch-execute, find-exec, variable laundering). 2.0.0 · Feb 2026 · source · release history
Vulnerability database matching 1 feature Vulnerability assessment methods since 2026
OSV.dev dependency vulnerability scanning verified Checks pinned dependencies against the OSV.dev advisory database to surface known vulnerabilities. 3 releases · 5 other sources · first seen Aug 2026

Shared capability: Vulnerability database matching

release

  • Queries OSV.dev for vulnerable exactly-pinned Python and JavaScript dependencies. api-docs-049d522bbb91 · Oct 2026 · source · release history
  • Extends OSV dependency scanning to read package.json (npm) in addition to previously supported manifests. 2.2.0 · Oct 2026 · source · release history
  • Adds --use-osv flag to enable the new OSV.dev dependency vulnerability analyzer, checking dependencies against the open OSV advisory database. 2.0.13 · Aug 2026 · source · release history

docs

  • Enable the LLM judge (recommended). If the judge cannot be built, for example without a key, the request fails with HTTP 400 Query OSV.dev for vulnerable exactly pinned Python and JavaScript dependencies Enable meta-analyzer (not recommended; see Recommended Settings) Preset ( balanced low-noise quiet strict… docs update · Oct 2026 · source
  • Second-pass LLM validation/filtering (off by default; not recommended) OSV.dev advisories for exactly pinned Python and JavaScript dependencies Five built-in presets: (default), , and two review-capacity packs, low-noise and quiet docs update · Oct 2026 · source

command line

  • --use-osv — Enable OSV.dev dependency vulnerability scanning (no API key; requires network) 2.0.13 · Aug 2026 · command-line history

example

  • Scan a skill's dependencies against the OSV advisory database to catch known vulnerabilities in pinned or unpinned packages. skill-scanner scan /path/to/skill --use-osv 2.0.13 · Aug 2026 · source
  • Run a scan that checks dependencies against OSV.dev while respecting trusted domains in your LLM policy. skill-scan --use-osv 2.0.13 · Aug 2026 · source
Other / not yet classified 31 features Features we have not matched to a capability yet. A suggested match is marked.
LLM-powered semantic analysis shipped Uses a configurable LLM to semantically analyse skills, with adjudication support to reduce false positives and controls over model behaviour and token spend. 19 releases · 8 other sources · first seen Feb 2026

release 19 total

  • Adds SKILL_SCANNER_ADJUDICATOR_LLM_REASONING_EFFORT environment variable to override the adjudicator's reasoning mode (disabled by default in this release). 2.2.2 · Oct 2026 · source · release history
  • The adjudicator's reasoning is now disabled by default; set SKILL_SCANNER_ADJUDICATOR_LLM_REASONING_EFFORT to restore the previous behaviour. 2.2.2 · Oct 2026 · source · release history
  • Adds SKILL_SCANNER_ADJUDICATOR_LLM_MAX_TOKENS environment variable to set a separate output-token limit for the adjudicator LLM.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 2.2.2 · Oct 2026 · source · release history
  • Enables an LLM judge for scan analysis; if the judge cannot be built (e.g. no API key), the request fails with HTTP 400. api-docs-049d522bbb91 · Oct 2026 · source · release history
  • Adds an LLM judge option (recommended) powered by a configurable model such as anthropic/claude-sonnet-5-5, set via the SKILL_SCANNER_LLM_MODEL environment variable; requests fail with HTTP 400 if the judge cannot be built (e.g.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ no API key). api-docs-049d522bbb91 · Oct 2026 · source · release history
  • Adds a meta-analyzer option (not recommended per Recommended Settings guidance). api-docs-049d522bbb91 · Oct 2026 · source · release history

docs

  • Run LLM analysis N times; keep majority-agreed findings (N times the cost; not measured on the evaluation splits) --llm-decompose Run the LLM analyzer once per focus and union the findings instead of one general pass; raises recall at roughly 3x the model calls --system-one-endpoint URL Optional System One screening… docs update · Oct 2026 · source
  • LLM Providers — Skill Scanner LLM Providers The LLM judge ( --use-llm ) reads a skill for intent. It is what lifts recall on held-out malicious skills from 8% to about 67% (see Recommended Settings ). This page shows how to point it at your provider. You configure the judge with environment variables. docs update · Oct 2026 · source
  • Decomposed LLM Analysis --llm-decompose One LLM pass per focus, findings unioned; higher recall at roughly 3x the model calls System One Screening --system-one-endpoint + --system-one-model Records a calibrated risk probability for triage. docs update · Oct 2026 · source

example

  • Set the LLM model and run a scan so the LLM judge can evaluate results — the scan fails fast with HTTP 400 if the key is missing. export SKILL_SCANNER_LLM_MODEL=anthropic/claude-sonnet-5-5 api-docs-049d522bbb91 · Oct 2026 · source
  • Enable the LLM judge using Claude Sonnet so skill-scanner can apply AI-based analysis to scan results. export SKILL_SCANNER_LLM_MODEL=anthropic/claude-sonnet-5-5 api-docs-049d522bbb91 · Oct 2026 · source
  • Enable the LLM judge in pre-commit so every commit to a skills repo is semantically analyzed before it lands. use_llm: true llm_model: claude-sonnet-5-5 llm_provider: anthropic 2.2.0 · Oct 2026 · source
  • Route LLM analysis through an internal OpenAI-compatible gateway instead of a first-party provider — useful in air-gapped or proxy environments. export SKILL_SCANNER_LLM_PROVIDER=openai-compatible export SKILL_SCANNER_LLM_API_KEY="your_gateway_key" skill-scanner ./my-skill --use-llm 2.2.0 · Oct 2026 · source
  • LLM consensus scan across multiple runs skill-scanner scan /path/to/skill --use-llm --llm-consensus-runs 3
Policy-driven scan configuration shipped suggested Governs file classification, analyzer behaviour, LLM budgets, and rule management through a single structured policy file. 5 releases · 6 other sources · first seen Feb 2026

Suggested capability: Static application security testing. This is our guess, not confirmed.

Also counts toward: Command-line interface

release

  • Adds named scan presets — balanced, low-noise, quiet, strict, permissive — accepted as a preset name or a YAML path. api-docs-049d522bbb91 · Oct 2026 · source · release history
  • Adds low-noise and quiet scan presets that demote high-false-positive rules and cap judge findings via low_confidence_max_severity and contextual_risk_max_severity.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 2.2.0 · Oct 2026 · source · release history
  • Adds scoped rule suppressions in policy YAML: target a specific skill with skills or a file path pattern with paths, so a single false positive no longer disables a rule scan-wide. 2.2.0 · Oct 2026 · source · release history
  • Exit code 2 now means a usage or configuration error (e.g. unknown policy); previously this condition returned exit code 1. Exit code 1 still means findings at or above --fail-on-severity. 2.2.0 · Oct 2026 · source · release history
  • Adds a YAML-based Scan Policy Engine with three built-in presets (strict, balanced, permissive) and 13 independently configurable sections, replacing all hardcoded thresholds and allowlists. 2.0.0 · Feb 2026 · source · release history

docs

  • model="anthropic/claude-sonnet-5-5", # Use a built-in preset: balanced, low-noise, quiet, strict or permissive policy = ScanPolicy.from_preset("low-noise") use_llm=True, # model and key come from SKILL_SCANNER_LLM_* with SkillScanner(analyzers=analyzers, policy=policy) as scanner: Recommended Settings lists which… docs update · Oct 2026 · source
  • CEL / correlation shadow / on shadow / on off / off analyzers.correlation Bounded structured source/sink correlation cel.mode CEL decisions: off, shadow, or enforce Optional Cisco AI Threat Research detections; not in the current core + CEL release gate skill-scanner validate-rules --trusted-rule-pack /path/to/org-pack docs update · Sep 2026 · source
  • Policies cover file classification, analyzer behavior, adjudication, LLM budgets, finding normalization, and rule governance. docs update · Aug 2026 · source
  • Additional CLI flags accepted by the workflow's explicit allowlist The allowlist includes additive analyzer and tuning options such as --rule-packs , , --use-aidefense , --use-trigger , --enable-meta , LLM limits, and repository-local policy/taxonomy paths. Unknown flags are rejected before the scan runs. docs update · Aug 2026 · source

example

  • Suppress a known false positive for a specific skill and path without disabling the rule globally — ideal for reviewed test fixtures in CI. suppressions: - rule_id: ARCHIVE_FILE_DETECTED skills: ["my-skill"] paths: ["**/fixtures/**/*.zip"] severity: LOW reason: "Reviewed test fixtures" 2.2.0 · Oct 2026 · source
  • Export a strict baseline policy file, then run a scan against it — useful for enforcing tighter thresholds in CI without touching code. skill-scanner generate-policy --preset strict -o policy.yaml && skill-scanner scan ./my-skill --policy policy.yaml --format sarif --output-sarif results.sarif 2.0.0 · Feb 2026 · source
Pre-commit incremental skill scanning verified Integrates with pre-commit to scan only skills changed in a commit, reducing scan time during development. 2 releases · 7 other sources · first seen Aug 2026

Also counts toward: CI/CD pipeline integration, Command-line interface

release

  • Adds use_llm, llm_model, and llm_provider keys to .skill_scannerrc so the pre-commit hook can invoke the LLM judge. 2.2.0 · Oct 2026 · source · release history
  • Supports incremental CI skill scans via the pre-commit integration, scanning only changed skills instead of the full set. 2.0.13 · Aug 2026 · source · release history

docs

  • uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 seen Oct 2026 · source
  • uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 @2.3.0 uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 uses:… seen Oct 2026 · source
  • rev: 2.3.0 # the latest release tag (no v prefix) uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 - run: pip install cisco-ai-skill-scanner[bedrock]==2.3.0 seen Oct 2026 · source
  • uses: cisco-ai-defense/skill-scanner/.github/workflows/scan-skills.yml@2.3.0 scanner_version: 2.3.0 seen Oct 2026 · source

command line

  • filenames — Changed files supplied by pre-commit (falls back to staged files when omitted) 2.0.13 · Aug 2026 · command-line history
  • --scan-all — Scan all skills, not just staged ones 2.0.13 · Aug 2026 · command-line history
  • --install — Install the built-in pre-commit hook 2.0.13 · Aug 2026 · command-line history
Bundled AI security taxonomy with crosswalks verified Bundles a versioned snapshot of the Cisco AI Security and Safety Taxonomy (19 objectives, 44 techniques, 130 sub-techniques) with OWASP, MITRE ATLAS, and NIST AML crosswalks, and exposes lookup functions so findings can be resolved to human-readable definitions without leaving the tool. 3 releases · 3 other sources · first seen Oct 2026

release

  • Ships a generated taxonomy reference covering all 19 objectives, 44 techniques, and 130 sub-techniques, with each entry in threats.py carrying a full description and AI Defense labels. 2.3.1 · Oct 2026 · source · release history
  • Adds get_aitech_definition() and get_aisubtech_definition() functions to look up the bundled definition for any AITech objective, technique, or sub-technique code directly from the snapshot.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 2.3.1 · Oct 2026 · source · release history
  • scan_metadata.taxonomy.snapshot_sha256 changes from 3df746f0… to 413e8ce9…; anything that pins this hash must be updated. 2.3.1 · Oct 2026 · source · release history

docs

  • Findings carry a Cisco AI Security and Safety Taxonomy code (AITech and, where one fits, AISubtech) with its OWASP, MITRE ATLAS and NIST AML crosswalks, from a taxonomy 2.0.0 snapshot bundled with the scanner. docs update · Oct 2026 · source

command line

  • source — Full taxonomy.json from the taxonomy repository 2.3.0 · Oct 2026 · command-line history

example

  • Look up the human-readable definition of an AITech code surfaced in a finding, without leaving Python. from skill_scanner import get_aitech_definition, get_aisubtech_definition print(get_aitech_definition('AITech-1.1')) print(get_aisubtech_definition('AITech-1.1.2')) 2.3.1 · Oct 2026 · source
Strict structure validation shipped Performs pre-load structural checks for hidden files, symlinks, disallowed extensions, binary content, encoding issues, and missing frontmatter. 4 releases · 2 other sources · first seen Feb 2026

release

  • scan-all now reports folders with unloadable skills or symlinks as findings instead of skipping them, so SARIF output, markdown output, and --fail-on-severity exit codes include them. 2.3.0 · Oct 2026 · source · release history
  • Extends frontmatter scanning to cover all SKILL.md values and comments — including quoted and complex keys, YAML aliases, merge keys, escape sequences, !!binary values, and multi-line folded values — except the allowed-tools value. 2.3.0 · Oct 2026 · source · release history
  • Reports symlinks among a skill's files as SYMLINK_NOT_SCANNED findings (HIGH when the target leaves the skill root) and skills that fail to load as SKILL_LOAD_FAILED findings in scan-all, instead of silently skipping them. 2.3.0 · Oct 2026 · source · release history
  • New Strict Structure Validator (SkillValidator) performs pre-load structural checks for hidden files, symlinks, disallowed extensions, binary content, non-UTF-8 encoding, and missing/malformed SKILL.md frontmatter. 2.0.0 · Feb 2026 · source · release history

docs

  • Symlinks among a loaded skill's files, which are not followed, reported as . A symlinked skill directory found by a recursive is still scanned as its own skill. seen Oct 2026 · source

example

  • Scan with all engines enabled skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-aidefense
Multi-provider and on-device LLM support shipped Supports execution via Azure, AWS Bedrock, Google Vertex AI, OpenAI-compatible gateways, and experimental local Apple Foundation Models. 5 releases · first seen Oct 2026

release

  • Updates the --llm-provider openrouter default model to openrouter/openai/gpt-5.6-sol and the gcp-vertex default to vertex_ai/gemini-3.8-flash to replace retired models. 2.3.1 · Oct 2026 · source · release history
  • OpenRouter users relying on the default model now get openrouter/openai/gpt-5.6-sol instead of openrouter/openai/gpt-4; set SKILL_SCANNER_LLM_MODEL to pin a specific model. 2.3.1 · Oct 2026 · source · release history
  • Vertex AI users relying on the default model now get vertex_ai/gemini-3.8-flash instead of vertex_ai/gemini-1.5-pro; set SKILL_SCANNER_LLM_MODEL to pin a specific model. 2.3.1 · Oct 2026 · source · release history
  • Supports any OpenAI-compatible gateway via SKILL_SCANNER_LLM_PROVIDER=openai-compatible environment variable 2.2.0 · Oct 2026 · source · release history
  • Enables experimental on-device Apple Foundation Model support as a new provider 2.2.0 · Oct 2026 · source · release history
LLM token usage tracking shipped Reports aggregate LLM token consumption in scan results so users can track and audit the cost of semantic analysis runs. 2 releases · 3 other sources · first seen Aug 2026

Also counts toward: JSON data export

release

  • Exposes LLM token usage in ScanResult JSON output, including adjudicator token consumption, enabling cost tracking and auditing. 2.0.13 · Aug 2026 · source · release history
  • Expose LLM token usage counts in the ScanResult JSON output structure for billing or quota tracking. 2.0.13 · Aug 2026 · source · release history

docs

  • llm_usage dict[str, int] Aggregate input/output/total tokens reported by LLM, meta, and adjudication calls For parity with the CLI and API, assemble optional analyzers through the central factory: from skill_scanner.core.analyzer_factory import build_analyzers analyzers = build_analyzers( policy, use_behavioral=True,… docs update · Aug 2026 · source
  • use_osv: true, use_trigger Enable trigger specificity analysis use_osv Query OSV.dev for vulnerable exactly pinned Python dependencies llm_consensus_runs integer 1 Configured LLM runs used for majority consensus Successful scan results include aggregate llm_usage ( input_tokens output_tokens , and total_tokens )… docs update · Aug 2026 · source

example

  • Scan a single skill with core analyzers skill-scanner scan /path/to/skill
SARIF output shipped Outputs scan findings in SARIF format for direct consumption by CI/CD pipelines and code-scanning platforms. 1 release · 2 other sources · first seen Aug 2026

Also counts toward: CI/CD pipeline integration, JSON data export

release

  • Adds aitech, aitech_name, aisubtech, aisubtech_name, aitech_mappings, aisubtech_mappings, framework_mappings, taxonomy_status, and taxonomy_source fields to every finding, plus scan_metadata.taxonomy counts and SARIF result properties, mapping to OWASP, MITRE ATLAS, and NIST AML crosswalks from a… 2.3.0 · Oct 2026 · source · release history

docs

  • Findings carry a Cisco AI Security and Safety Taxonomy code (AITech and, where one fits, AISubtech) with its OWASP, MITRE ATLAS and NIST AML crosswalks, from a taxonomy 2.0.0 snapshot bundled with the scanner. docs update · Oct 2026 · source

example

  • Run a full CI scan with LLM analysis and emit SARIF output, while failing the build on any high-severity finding and tracking token spend in the JSON result. skill-scanner scan-all ./skills --recursive --use-llm --use-osv --fail-on-severity high --format sarif --output results.sarif 2.0.13 · Aug 2026 · source
Build provenance attestation and SBOM publishing verified Publishes build provenance attestations and an SBOM for skill-scanner's own release artifacts so users can verify supply-chain integrity before installation. 1 release · 2 other sources · first seen Aug 2026

release

  • Attests build provenance and publishes an SBOM for release artifacts, supporting software supply-chain verification. 2.0.13 · Aug 2026 · source · release history

docs

  • GitHub release artifacts are published with build-provenance attestations and an SBOM. For controlled environments, verify the release attestation before installing a downloaded artifact and retain the SBOM with your software inventory. docs update · Aug 2026 · source

command line

PromptGuard data protection shipped Detects PII, secrets, and LLM exfiltration attempts using dedicated rule packs. 3 releases · first seen Apr 2026

release

  • Adds new detection ACTIVE_SENSITIVE_EXFILTRATION to catch plain-language instructions that read a local credential file and send it to a remote host. 2.3.0 · Oct 2026 · source · release history
  • Adds detect semantic data exfiltration APIs detection logic to the scanner. 2.0.14 · Sep 2026 · source · release history
  • Adds PromptGuard data protection rule pack with detections for PII, secrets, and LLM exfiltration. 2.0.9 · Apr 2026 · source · release history
Scan presets shipped Provides named scan presets — including balanced, low-noise, quiet, strict, and permissive — that tune rule severity caps, false-positive demotion, and judge finding limits without requiring manual policy edits. 2 releases · 1 other source · first seen Oct 2026

release

  • Adds named scan presets — balanced, low-noise, quiet, strict, permissive — accepted as a preset name or a YAML path. api-docs-049d522bbb91 · Oct 2026 · source · release history
  • Adds low-noise and quiet scan presets that demote high-false-positive rules and cap judge findings via low_confidence_max_severity and contextual_risk_max_severity.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 2.2.0 · Oct 2026 · source · release history

example

  • Run a scan with the LLM judge enabled using Claude Sonnet, selecting the strict preset to minimize false negatives in a high-stakes pipeline. export SKILL_SCANNER_LLM_MODEL=anthropic/claude-sonnet-5-5 api-docs-049d522bbb91 · Oct 2026 · source
Deterministic analysis with versioned schema contracts shipped Uses a versioned protobuf fact contract to validate rule packs and ensure immutable, fail-open telemetry during deterministic detection phases. 2 releases · first seen Sep 2026

release

  • scan_metadata.taxonomy.snapshot_sha256 changes from 3df746f0… to 413e8ce9…; anything that pins this hash must be updated. 2.3.1 · Oct 2026 · source · release history
  • Adds a versioned protobuf fact contract (skill_scanner.semantic.v1.ScanFacts) with strict schema-v2 pack validation, immutable compiled rule generations, expression hashes, and fail-open telemetry. 2.1.0 · Sep 2026 · source · release history
HTML reporting shipped Generates self-contained HTML reports with severity summaries, verdict banners, inline diagrams, and dark theme support. 1 release · 1 other source · first seen Feb 2026

release

  • New standalone HTML Reporter generates self-contained reports with a severity summary, verdict banner, inline pipeline flow diagrams, sortable findings table, and dark theme. 2.0.0 · Feb 2026 · source · release history

example

  • Review taxonomy metadata on a scan to see AITech/AISubtech codes and MITRE ATLAS crosswalks alongside each finding. skill-scanner scan <skill_directory> --format json | jq '.findings[] | {title, aitech, aitech_name, aisubtech, aisubtech_name, framework_mappings, taxonomy_status}' 2.3.0 · Oct 2026 · source
Automated verdict consistency and noise reduction shipped Automatically repairs inconsistent SAFE verdicts by default and provides new presets to reduce false positives for low-confidence findings. 2 releases · first seen Oct 2026

release

  • Verdict repair for inconsistent SAFE verdicts is now on by default; restore the strict path by setting SKILL_SCANNER_LLM_REPAIR_INCONSISTENT_VERDICT=0 2.2.0 · Oct 2026 · source · release history
  • Adds low-noise and quiet preset configurations to demote false positives and cap severity for low-confidence or contextual-risk findings 2.2.0 · Oct 2026 · source · release history
Configurable LLM adjudication behavior shipped Allows focused, decomposed LLM passes for specific concerns during adjudication and enforces closed exit codes when the LLM analyzer cannot be initialized. 2 releases · first seen Oct 2026

release

  • --use-llm, --use-behavioral and --enable-meta now fail closed (exit code 2) if the analyzer cannot be built instead of falling back to rules-only 2.2.0 · Oct 2026 · source · release history
  • Adds --llm-decompose flag to run one focused LLM pass per concern during adjudication 2.2.0 · Oct 2026 · source · release history
Enhanced supply-chain and configuration scanning shipped Expands detection to cover unregistered network destinations, registry redirects, and semantic fields in skill documentation metadata. 2 releases · first seen Oct 2026

release

  • Adds scanning of frontmatter description and when_to_use fields in SKILL.md 2.2.0 · Oct 2026 · source · release history
  • Adds SUPPLY_CHAIN_REGISTRY_REDIRECT (HIGH) and UNDECLARED_NETWORK_DESTINATION (LOW) detection rules 2.2.0 · Oct 2026 · source · release history
Structured fact correlation via CEL shipped Runs bounded Core Rule Logic (CEL) analysis on typed detection facts to correlate source/sink patterns with configurable enforcement modes. 1 release · 1 other source · first seen Sep 2026

release

  • Adds CEL policy modes off, shadow, and enforce — a bounded CEL decision layer (backed by cel-go v0.32.0) that correlates typed analyzer facts after deterministic detection and before optional LLM/Meta analysis. 2.1.0 · Sep 2026 · source · release history

docs

  • CEL / correlation shadow / on shadow / on off / off analyzers.correlation Bounded structured source/sink correlation cel.mode CEL decisions: off, shadow, or enforce Optional Cisco AI Threat Research detections; not in the current core + CEL release gate skill-scanner validate-rules --trusted-rule-pack /path/to/org-pack docs update · Sep 2026 · source
Modular CLI workflow commands verified Provides specialized subcommands for scanning drivers, isolated worker execution, and generating immutable corpus locks. 2 other sources · first seen Sep 2026

Also counts toward: Command-line interface

command line

  • corpus-lock — produce the strict corpus digest required by the driver 2.1.0 · Sep 2026 · command-line history
  • driver — run the five-pair archived/current matrix 2.1.0 · Sep 2026 · command-line history
Native terminal rendering shipped Renders markdown-formatted results natively in the terminal without external dependencies. 1 release · 1 other source · first seen Mar 2026

release

  • Renders Markdown-formatted results natively in the terminal when using --format markdown with stdout output. 2.0.1 · Mar 2026 · source · release history

example

  • Get human-readable, formatted scan results directly in your terminal without piping to a separate Markdown renderer. skill-scanner scan <target> --format markdown 2.0.1 · Mar 2026 · source
Interactive scan wizard shipped Provides a guided step-by-step scanning mode that auto-detects skills and walks through configuration to generate CLI commands. 1 release · 1 other source · first seen Feb 2026

release

  • New Interactive Scan Wizard provides a guided step-by-step scanning mode that auto-detects skills, walks through analyzer/policy/output selection, and generates the equivalent CLI command. 2.0.0 · Feb 2026 · source · release history

example

  • Launch the interactive wizard for a guided audit — ideal for onboarding new team members or quickly auditing an unfamiliar skill repo. skill-scanner wizard 2.0.0 · Feb 2026 · source
OpenAI-compatible LLM support shipped Supports OpenAI-compatible endpoints and specific model features like the user request field for flexible backend configuration. 1 release · first seen Apr 2026

release

  • Supports OpenAI-compatible LLM endpoints for flexible backend configuration. 2.0.10 · Apr 2026 · source · release history
Credential detection shipped suggested Identifies documented Anthropic and OpenAI project API key prefixes to flag exposed credentials in scanned skills. 1 release · first seen Apr 2026

Suggested capability: Static application security testing. This is our guess, not confirmed.

release

  • Detects documented Anthropic and OpenAI project API key prefixes to flag exposed credentials. 2.0.8 · Apr 2026 · source · release history
Multilingual prompt injection detection shipped Detects prompt injection patterns across different languages using enhanced guidance and model-specific optimizations. 1 release · first seen Mar 2026

release

  • Strengthens multilingual prompt-injection detection guidance for more accurate cross-language findings. 2.0.2 · Mar 2026 · source · release history
Analysis coverage scoring shipped Quantifies what fraction of a skill the scanner can inspect, surfacing high-severity findings for low-coverage areas. 1 release · first seen Feb 2026

release

  • Adds Analyzability Scoring (0–100) quantifying what fraction of a skill the scanner can inspect, surfacing a HIGH-severity finding when coverage is low. 2.0.0 · Feb 2026 · source · release history
Azure authentication shipped Adds native Azure AD/Entra ID authentication for Azure OpenAI via DefaultAzureCredential. 1 release · first seen Feb 2026

release

  • Adds native Azure AD/Entra ID authentication for Azure OpenAI via DefaultAzureCredential; install with pip install skill-scanner[azure]. 2.0.0 · Feb 2026 · source · release history
Command safety evaluation shipped Classifies commands into SAFE, CAUTION, RISKY, or DANGEROUS tiers based on full context including arguments, pipes, and redirects. 1 release · first seen Feb 2026

release

  • Adds a four-tier Command Safety model (SAFE / CAUTION / RISKY / DANGEROUS) that evaluates commands in full context — arguments, pipes, redirects, and chained commands — fully configurable via scan policy. 2.0.0 · Feb 2026 · source · release history
Content extraction shipped Recursively unpacks archives (ZIP, TAR, DOCX, JAR, etc.) with protection against zip-bombs and path traversal to produce virtual file objects for analysis. 1 release · first seen Feb 2026

release

  • New Content Extractor recursively unpacks ZIP, TAR, DOCX/XLSX/PPTX, JAR/WAR/APK archives with zip-bomb protection, path-traversal rejection, and VBA macro/OLE detection, producing virtual SkillFile objects for nested analysis. 2.0.0 · Feb 2026 · source · release history
Deprecating --max-file-size CLI flag shipped The CLI flag is replaced by policy knobs; passing it will break on upgrade. 1 release · first seen Feb 2026

release

  • The --max-file-size CLI flag is replaced by policy knobs; any automation passing --max-file-size will break on upgrade. 2.0.0 · Feb 2026 · source · release history
File magic detection shipped Uses Google Magika to detect extension-vs-content mismatches and flags them as critical severity findings. 1 release · first seen Feb 2026

Also counts toward: ML-based detection

release

  • New File Magic Detection (Magika) uses Google Magika (200+ types, ~99% accuracy) with magic-byte fallback to flag extension-vs-content mismatches (e.g., a .py file that is actually an ELF binary) as CRITICAL severity. 2.0.0 · Feb 2026 · source · release history
Multi-format output shipped Supports emitting scan results in multiple formats simultaneously via CLI flags. 1 release · first seen Feb 2026

Also counts toward: Command-line interface, JSON data export

release

  • Supports multiple simultaneous output formats in a single scan run via repeated --format flags and per-format output flags (--output-json, --output-sarif, --output-markdown, --output-html, --output-table). 2.0.0 · Feb 2026 · source · release history
Office macro detection shipped Detects VBA macros and OLE objects within Office documents (DOCX/XLSX/PPTX) as part of content extraction. 1 release · first seen Feb 2026

release

  • New Content Extractor recursively unpacks ZIP, TAR, DOCX/XLSX/PPTX, JAR/WAR/APK archives with zip-bomb protection, path-traversal rejection, and VBA macro/OLE detection, producing virtual SkillFile objects for nested analysis. 2.0.0 · Feb 2026 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for skill-scanner, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail skill-scanner puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Commercials

pricing & packaging history · Cisco vendor page

63 readings of Cisco's pricing page since Jun 2022, with 39 relaunches of its plan lineup and 3 changes to what its plans include — each one dated, compared with the reading before it, and explained for someone buying the tool.

Pricing and packaging history is included with Researcher and Business. See how every vendor we track sells, and how that has changed over time, using data we don't publish anywhere else.

See plans →

Website history

snort.org, every change

Cisco's home page and 23 more pages as they looked each month from August 2021 to October 2026: 35 renders, 0 changes of tagline or palette. Step through them, play them, or put any two months side by side.

Website history is included with Researcher and Business.

See plans →

Coverage

Missing something? Tell us

What skill-scanner connects to, runs on and detects, read from its release notes and docs. So far: 7 new integrations, 4 new supported platforms, 2 new detections, 1 new compliance framework.

Show
When

14 changes, tracked since Oct 3, 2026.

  • Oct 222026

    new Cisco AI Security and Safety Taxonomy 2.0.0 crosswalks (OWASP, MITRE ATLAS, NIST AML)

    With AITech, AISubtech

    Findings carry a Cisco AI Security and Safety Taxonomy code (AITech and, where one fits, AISubtech) with its OWASP, MITRE ATLAS and NIST AML crosswalks, from a taxonomy 2.0.0 snapshot bundled with the scanner.

    Source ↗

  • Oct 62026

    new OSV.dev dependency vulnerability scanning

    OSV.dev scanning ( ) needs network access but no key.

    Source ↗

  • Oct 62026

    new VirusTotal cloud-based binary and content scanning integration

    With Cisco AI Defense

    VirusTotal ( ) and Cisco AI Defense ( ) need their own keys.

    Source ↗

  • Oct 62026

    new Apple Foundation Model (on-device, experimental) LLM provider

    the on-device Apple Foundation Model (experimental), and any OpenAI-compatible gateway or local server through SKILL_SCANNER_LLM_PROVIDER=openai-compatible . Install the matching extra ( [google] ) for managed cloud services; Apple FM needs pip install "apple-fm-sdk>=0.2.1,<0.3"

    Source ↗

  • Oct 62026

    new LLM judge provider support: Anthropic, OpenAI, AWS Bedrock, Google Vertex AI and Gemini, Azure OpenAI, OpenRouter, OrcaRouter, Ollama, and OpenAI-compatible gateways

    Anthropic (the default, anthropic/claude-sonnet-5-5 ), OpenAI, AWS Bedrock, Google Vertex AI and Gemini, Azure OpenAI, OpenRouter, OrcaRouter, Ollama, the on-device Apple Foundation Model (experimental), and any OpenAI-compatible gateway or local server through SKILL_SCANNER_LLM_PROVIDER=openai-compatible

    Source ↗

  • Oct 62026

    new LLM judge detection engine

    With skill-scanner scan-all --use-llm

    Every setup runs the LLM judge ( ). Rules alone catch only about 8% of malicious skills.

    Source ↗

How we count

Read from 7 of 54 release notes and docs updates we hold for skill-scanner. "First seen" is the earliest note that names something; "last" is the latest. Our history may start partway through skill-scanner's life, so an old integration can show a recent first-seen date.

Each change counts once: "added 40 checks" is one line, so the numbers measure how often coverage moves, not how big the catalogue is or how well it detects.

Releases

Show
Coverage in all entries

54 entries

  1. October 202628
  2. September 20265
  3. August 20269
  4. June 20262
  5. April 20264
  6. March 20263
  7. February 20263
    Show
    Coverage in all entries

    54 entries

    Project health

    Issue, contributor and maintainer activity in cisco-ai-defense/skill-scanner, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 45 +45 vs prior 12 months
    2. Maintainers 3 +4 joined · −1 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 4.2 days first maintainer reply 7 days
    6. Open backlog 1 of 62 issues ever filed
    1. Issues opened / month 8 · 0 communitymaintainers
    2. Open backlog 1
    3. Contributors / month 5
    4. Commits / month 10
    5. Stars 2,539
    Issue themes, last 12 months
    • bugs 42%
    • features 16%
    • other 42%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →