Skip to main content

Engineering-grade, engine-agnostic static analyzer and credential scanner for Markdown documentation

Project description

Zenzic

ci-status zenzic-audit zenzic-score REUSE 3.x compliant PyPI Version Python Versions License

Deterministic audit of documentation structures with bidirectional traceability.
Tiered code governance, frozen security contracts, and RE2-backed deterministic scanning.


⚡ Try it now — Zero Installation

Got a folder of Markdown files? Run an instant security and link audit using uv:

uvx zenzic check all ./your-folder

Zenzic identifies your engine via its configuration files or defaults to Standalone Mode for plain Markdown folders — providing immediate protection for links, credentials, and file integrity.


🚀 Quick Start

pip install zenzic
cd my-docs-repo
zenzic init       # Establish the workspace boundary (creates zenzic.toml)
zenzic check all  # Audit the current directory

🧠 Core Pillars

  • Pure, deterministic engine: identical inputs produce identical findings and exits.
  • Tiered code model: Core, Structure, and Governance findings separated by ownership bands.
  • Frozen contracts for integrators: FROZEN_CODES, NON_SUPPRESSIBLE_CODES, and PLUGIN_FORBIDDEN_EXITS provide stable enforcement surfaces for CI and plugins.
  • Inspect-first workflow: use zenzic inspect codes to validate live code semantics before touching docs or release notes.

📖 Full docs → · 🏅 Badges · 🔄 CI/CD guide


⚙️ Commands Overview

Command Purpose
zenzic init Scaffold workspace configuration (.zenzic.toml)
zenzic check all [PATH] Full documentation audit — links, credentials, orphans
zenzic score [--fail-under N] [--stamp] Compute the Documentation Quality Score (0–100)
zenzic diff [--base PATH] Detect debt regression against a saved baseline
zenzic guard scan [PATH] Defense-in-Depth credential pre-gate (always fatal)
zenzic inspect codes Query live error-code semantics and suppressibility

🚀 CI/CD Ready: Use the Official Zenzic Action to run Zenzic in GitHub Actions — findings surface directly in Code Scanning, PR annotations, and the Security tab.

- uses: PythonWoods/zenzic-action@v1
  with:
    format: sarif
    upload-sarif: "true"

GitHub Code Scanning showing Zenzic findings


🔌 Multi-Engine Support

Engine Adapter Highlights
Docusaurus v3 DocusaurusAdapter Versioned docs, @site/ alias, Ghost Route detection
MkDocs MkDocsAdapter i18n suffix + folder modes, fallback_to_default
Zensical ZensicalAdapter Transparent Proxy bridges mkdocs.yml
Any folder StandaloneAdapter File integrity checks — orphan detection disabled without a nav contract

See the Adapter API for the plugin interface. Third-party adapters install via the zenzic.adapters entry-point group.


⚙️ Configuration

Zero-config by default. See the Configuration Guide for the full zenzic.toml schema and pyproject.toml embedding.

zenzic init        # Generate zenzic.toml with auto-detected values

🔄 CI/CD Integration

- uses: PythonWoods/zenzic-action@v1
  with:
    format: sarif
    upload-sarif: "true"

For zero-install uvx integration and regression gates, see the CI/CD guide.


📦 Installation

# Zero-install, one-shot audit (recommended for CI and exploration)
uvx zenzic check all ./docs

# Global CLI tool
uv tool install zenzic

# Pinned dev dependency
uv add --dev zenzic

# pip
pip install zenzic

📖 Documentation

Area URL Audience
👤 User Guide zenzic.dev/docs Install, configure, CI/CD, finding codes
🔧 Developer Portal zenzic.dev/developers Adapters, ADRs, CLI architecture, mutation testing
🛡️ Security Engineering Ledger · SECURITY.md Security reviewer

🤝 Contributing

  1. Open an issue to discuss the change.
  2. Read the Contributing Guide.
  3. Every PR must pass just verify and include SPDX headers on new files.

See also: Code of Conduct · Security Policy

📎 Citing

A CITATION.cff is present at the root. Click "Cite this repository" on GitHub for APA or BibTeX output.

📄 License

Apache-2.0 — see LICENSE.


PythonWoods

Engineered with precision by PythonWoods in Italy 🇮🇹
"Building the Standard for Technical Document Integrity."

Documentation · GitHub · Blog

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

zenzic-0.9.0.tar.gz (598.5 kB view details)

Uploaded Source

Built Distribution

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

zenzic-0.9.0-py3-none-any.whl (299.4 kB view details)

Uploaded Python 3

File details

Details for the file zenzic-0.9.0.tar.gz.

File metadata

  • Download URL: zenzic-0.9.0.tar.gz
  • Upload date:
  • Size: 598.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zenzic-0.9.0.tar.gz
Algorithm Hash digest
SHA256 f06171102b91a0cdd9cf9cc91c1ec3c6400854eaffb553640873165aa346de25
MD5 001b805e53b93ed8e69bcbd98ab8b7ff
BLAKE2b-256 c51f070b633b5fe1a1f17ca4c061df4303c9191d59abe3d37062040ddcdad560

See more details on using hashes here.

File details

Details for the file zenzic-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: zenzic-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 299.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zenzic-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3141b26f9b61da0c87c2d4a66c413d446ce8afa8b0792ff929df51a99386ab0
MD5 a7e195c400ade70a0caf93923a60b16d
BLAKE2b-256 12203a6c30c3255ce8cdcd82ffce3a5ca9e0a75bed6483a727f5d6b4515e8bc1

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