Skip to main content

Raisin skill risk scanner

Project description

Razin

Razin is a local scanner for SKILL.md-defined agent skills.

It performs static analysis only (no execution) and writes deterministic JSON reports.

Requirements

  • Python 3.12+

Install

pip install razin

Verify:

razin --help

Usage

Basic scan:

razin scan --root . --output-dir output/

Custom rules directory:

razin scan --root . --rules-dir ./enterprise-rules --output-dir output/

Single rule file:

razin scan --root . --rule-file ./enterprise-rules/net_unknown_domain.yaml --output-dir output/

Specific rule files:

razin scan --root . \
  --rule-file ./enterprise-rules/net_unknown_domain.yaml \
  --rule-file ./enterprise-rules/mcp_endpoint.yaml \
  --output-dir output/

CLI flags:

  • --root <path>: workspace root to scan
  • --output-dir <path>: output root for findings and summaries
  • --config <file>: optional config file path (defaults to <root>/razin.yaml)
  • --mcp-allowlist <domain-or-url>: optional repeatable MCP endpoint/domain allowlist override
  • --engine <dsl>: detector engine (dsl only; removed values: legacy, optionc, default)
  • --rules-dir <path>: load all custom *.yaml DSL rules from this directory
  • --rule-file <path>: load specific custom *.yaml DSL rule file (repeatable)
  • --no-cache: disable cache reads/writes
  • --max-file-mb <n>: skip files larger than n MB
  • --output-format json: reserved for future formats (currently only json)

Rules source behavior:

  • Default mode (no custom flags): bundled rules under src/razin/dsl/rules/
  • Custom directory mode: --rules-dir replaces bundled rules for that scan
  • Custom file mode: one or more --rule-file values replace bundled rules for that scan
  • --rules-dir and --rule-file are mutually exclusive
  • Invalid path, invalid extension, duplicate rule_id, and invalid YAML fail fast

Config File

Create razin.yaml in scan root (or pass with --config):

allowlist_domains:
  - api.openai.com
denylist_domains:
  - "*"
mcp_allowlist_domains:
  - rube.app
mcp_denylist_domains:
  - blocked.example.com
tool_prefixes:
  - RUBE_
  - MCP_
detectors:
  enabled:
    - NET_RAW_IP
    - NET_UNKNOWN_DOMAIN
    - SECRET_REF
    - EXEC_FIELDS
    - OPAQUE_BLOB
    - TYPOSQUAT
    - BUNDLED_SCRIPTS
    - MCP_REQUIRED
    - MCP_ENDPOINT
    - MCP_DENYLIST
    - TOOL_INVOCATION
    - DYNAMIC_SCHEMA
    - AUTH_CONNECTION
    - EXTERNAL_URLS
  disabled: []
typosquat:
  baseline:
    - openai-helper
skill_globs:
  - "**/SKILL.md"
max_file_mb: 2

Outputs

Per skill, Razin writes:

  • output/<skill-name>/findings.json
  • output/<skill-name>/summary.json

Cache file:

  • output/.razin-cache.json

Skill name derivation precedence:

  1. Frontmatter name (if present)
  2. Nearest folder containing SKILL.md
  3. Sanitized relative path from scan root

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

razin-0.2.0.tar.gz (84.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

razin-0.2.0-py3-none-any.whl (72.8 kB view details)

Uploaded Python 3

File details

Details for the file razin-0.2.0.tar.gz.

File metadata

  • Download URL: razin-0.2.0.tar.gz
  • Upload date:
  • Size: 84.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.19

File hashes

Hashes for razin-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d3c2b5ae84e5de034a743b465338b5399330a320ae49eb64ba164d274e5c5a9b
MD5 0a1c99680e576660b0a9eae3845bc618
BLAKE2b-256 0a1dac5452c397f37c3f55a47ffd2aa0e53674a89f5e880b451eba8576bbd343

See more details on using hashes here.

File details

Details for the file razin-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: razin-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 72.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.19

File hashes

Hashes for razin-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3eae7379fc1b8e20711df5b10649b042981f4ddfe3353b452b0071fc736fa54
MD5 deb3bae2f8ebb1595cc7fdecbf7dab7f
BLAKE2b-256 2cc33989e1d2d375da8eab323979bdffae1766d05263e9df762370b1c010a387

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page