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.
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
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.
+Static analysis for prompt injection and jailbreak patternsshippedDetects 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▸
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 packshippedApplies a large library of ATR-authored detection rules during static analysis to broaden threat coverage.8 releases · 2 other sources · first seen Feb 2026▸
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 scanningshippedClones 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▸
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
+Unpinned dependency detectionshippedFlags dependencies that are not pinned to a specific version, surfacing supply-chain risk in skill packages.2 releases · first seen Aug 2026▸
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 trackingshippedDetects hidden command construction via aliases, class scopes, and XOR encoding to surface complex supply-chain and execution risks.2 releases · first seen Sep 2026▸
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 analysisshippedScans HTML, CSS, SVG, XML, and XSD assets for prompt injection and structural vulnerabilities.1 release · 1 other source · first seen Feb 2026▸
Classifies suspicious URLs found in configuration files via the static analyzer.
2.0.13 · Aug 2026
· source
· release history
+Bash taint trackingshippedPerforms lightweight dataflow analysis for bash scripts, tracking taint from command substitution and env vars to dangerous sinks.1 release · first seen Feb 2026▸
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 analysisshippedDetects 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▸
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 analysisshippedScans JavaScript and TypeScript source code for dangerous patterns including eval, child_process, fetch, fs access, secrets, and obfuscation.1 release · first seen Feb 2026▸
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 detectionshippedModels 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▸
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
+OSV.dev dependency vulnerability scanningverifiedChecks pinned dependencies against the OSV.dev advisory database to surface known vulnerabilities.3 releases · 5 other sources · first seen Aug 2026▸
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 classified31 featuresFeatures we have not matched to a capability yet. A suggested match is marked.▸
+LLM-powered semantic analysisshippedUses 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
+Policy-driven scan configurationshippedsuggestedGoverns 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
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 scanningverifiedIntegrates 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 crosswalksverifiedBundles 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 validationshippedPerforms 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 supportshippedSupports 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 trackingshippedReports 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 outputshippedOutputs 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 publishingverifiedPublishes 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
--expect-sha256 — Expected SHA-256 of the source file
2.3.0 · Oct 2026
· command-line history
+PromptGuard data protectionshippedDetects 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 presetsshippedProvides 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 contractsshippedUses 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 reportingshippedGenerates 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 reductionshippedAutomatically 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 behaviorshippedAllows 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 scanningshippedExpands 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 CELshippedRuns 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 commandsverifiedProvides 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 renderingshippedRenders 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 wizardshippedProvides 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 supportshippedSupports 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 detectionshippedsuggestedIdentifies 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 detectionshippedDetects 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 scoringshippedQuantifies 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 authenticationshippedAdds 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 evaluationshippedClassifies 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 extractionshippedRecursively 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 flagshippedThe 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 detectionshippedUses 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 outputshippedSupports 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 detectionshippedDetects 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.
Command line
View
Source
No command matches.
load a captured run
composed command
No matchesTry a different search, or clear a filter to see more.
option surface across analysed releases
options at that releaseadded, per releaseremoved, per release
option
found in
since
description
No matchesTry a different search, or clear a filter to see more.
option changes per release — drag across the rail to set a range
→
Values are placeholders taken from each option’s declared default.
Nothing is executed here — the output shown is a recording of a run
that already happened.
Score card
Shipping velocityreleases a month, last 12 months
Documentation qualityrelease-notes rubric, 0–100
Breaking-change disciplinehow rarely a release breaks users, and notice given
Maintenance riskquiet time against its own cadence, maintainers
Innovation & surfacenew capabilities, API and MCP surface
Community health
Contributor trenddistinct committers, this year against last
Maintainer concentrationbus factor now against a year ago
Issue backlog trendissues closed per issue opened, 12 months
Responsivenessmedian 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.
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.
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.
Each offering on the pricing page links to its own page of plans, read at its latest capture.
Plan relaunches
Plans, prices and descriptions are quoted from the vendor's own pricing page as we read it on each date.
A plan missing from a later reading is shown as no longer listed on the page — a statement about the page, not the product.
Readings that failed to show any plans are left out rather than read as a change.
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.
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
newCisco 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.
newApple 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"
newLLM 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
Nothing first seen in this window. That doesn't mean skill-scanner shipped nothing, only that we found no record of it.
Changes per month New Updated Retired
2026-10
14
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
No entries match these filters.
October 202628
September 20265
August 20269
June 20262
April 20264
March 20263
February 20263
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.
Contributors45+45 vs prior 12 months
Maintainers3+4 joined · −1 left, last 12 months
Bus factor1committers behind half the commits
Community-filed100%of issues opened, last 12 months
Median time to close4.2 daysfirst maintainer reply 7 days
Open backlog1of 62 issues ever filed
Issues opened / month8 · 0communitymaintainers
Open backlog1
Contributors / month5
Commits / month10
Stars2,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.