Engineering-grade, engine-agnostic static analyzer and credential scanner for Markdown documentation
Project description
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, andPLUGIN_FORBIDDEN_EXITSprovide stable enforcement surfaces for CI and plugins. - Inspect-first workflow: use
zenzic inspect codesto 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"
🔌 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
- Open an issue to discuss the change.
- Read the Contributing Guide.
- Every PR must pass
just verifyand 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.
Engineered with precision by PythonWoods in Italy 🇮🇹
"Building the Standard for Technical Document Integrity."
Documentation · GitHub · Blog
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f06171102b91a0cdd9cf9cc91c1ec3c6400854eaffb553640873165aa346de25
|
|
| MD5 |
001b805e53b93ed8e69bcbd98ab8b7ff
|
|
| BLAKE2b-256 |
c51f070b633b5fe1a1f17ca4c061df4303c9191d59abe3d37062040ddcdad560
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3141b26f9b61da0c87c2d4a66c413d446ce8afa8b0792ff929df51a99386ab0
|
|
| MD5 |
a7e195c400ade70a0caf93923a60b16d
|
|
| BLAKE2b-256 |
12203a6c30c3255ce8cdcd82ffce3a5ca9e0a75bed6483a727f5d6b4515e8bc1
|