Zenith Tooling Stack¶
Zenith replaces fragmented Python tooling with a fast, Rust-based toolchain configured with automated quality checks.
Tool Architecture & Categories¶
The diagram below maps the complete Zenith tool ecosystem across four operational pillars:
flowchart TB
subgraph Build["🛠️ Build & Workflow"]
direction TB
uv["uv<br/><i>Package Manager & Builds</i>"]
poe["Poe the Poet<br/><i>Hermetic Task Runner</i>"]
prek["prek<br/><i>Git Hook Automation</i>"]
typer["Typer<br/><i>Type-Safe CLI Framework</i>"]
cc["Cookiecutter<br/><i>Template Scaffolding</i>"]
end
subgraph Quality["🛡️ Code Quality & Architecture"]
direction TB
ruff["Ruff<br/><i>Linter & Formatter</i>"]
pyrefly["Pyrefly<br/><i>Strict Type Checker</i>"]
tach["Tach<br/><i>Boundary Enforcer</i>"]
deptry["Deptry<br/><i>Dependency Checker</i>"]
complex["complexipy<br/><i>Complexity Ceiling</i>"]
griffe["Griffe<br/><i>API Change Detector</i>"]
typos["typos<br/><i>Source Spell Checker</i>"]
end
subgraph Test["🧪 Testing & Security"]
direction TB
pytest["pytest<br/><i>Parallel Test Engine</i>"]
cov["Coverage.py<br/><i>100% Branch Coverage</i>"]
mutmut["mutmut<br/><i>Fast Local Mutation</i>"]
cosmic["Cosmic Ray<br/><i>Deep AST Mutation</i>"]
zizmor["zizmor<br/><i>CI Security Analyzer</i>"]
end
subgraph Docs["📚 Documentation & Formatting"]
direction TB
zensical["Zensical<br/><i>Fast Docs Generator</i>"]
rumdl["rumdl<br/><i>Markdown Linter</i>"]
taplo["Taplo<br/><i>TOML Formatter</i>"]
prettier["Prettier<br/><i>YAML & CSS Formatter</i>"]
typst["Typst<br/><i>SVG Layout Engine</i>"]
termy["Termynal<br/><i>Animated Terminal</i>"]
end
click uv "uv/" "Explore uv documentation"
click poe "poethepoet/" "Explore Poe the Poet documentation"
click prek "prek/" "Explore prek documentation"
click typer "typer/" "Explore Typer documentation"
click cc "cookiecutter/" "Explore Cookiecutter documentation"
click ruff "ruff/" "Explore Ruff documentation"
click pyrefly "pyrefly/" "Explore Pyrefly documentation"
click tach "tach/" "Explore Tach documentation"
click deptry "deptry/" "Explore Deptry documentation"
click complex "complexipy/" "Explore complexipy documentation"
click griffe "griffe/" "Explore Griffe documentation"
click typos "typos/" "Explore typos documentation"
click pytest "pytest/" "Explore pytest documentation"
click cov "coverage/" "Explore Coverage.py documentation"
click mutmut "mutmut/" "Explore mutmut documentation"
click cosmic "cosmic-ray/" "Explore Cosmic Ray documentation"
click zizmor "zizmor/" "Explore zizmor documentation"
click zensical "zensical/" "Explore Zensical documentation"
click rumdl "rumdl/" "Explore rumdl documentation"
click taplo "taplo/" "Explore Taplo documentation"
click prettier "prettier/" "Explore Prettier documentation"
click typst "typst/" "Explore Typst documentation"
click termy "termynal/" "Explore Termynal documentation"
Click any tool above to view its technical specifications, architectural rationale in Zenith, configuration showcases, and upstream references.
Two-Tier Tooling Architecture: Daily Essentials Vs. Hardening¶
Seeing over twenty tools can feel overwhelming. Zenith organizes its tooling into two distinct tiers so developers can focus immediately on shipping code:
| Tier | Tools | When You Use Them | Interaction Pattern |
|---|---|---|---|
| Tier 1: Daily Velocity Essentials | uv, ruff, pytest, poe, typer |
Every minute while writing code | Direct commands: uv run poe test, uv run poe fix, uv add |
| Tier 2: Hardening & Auditing | tach, complexipy, pyrefly, deptry, griffe, mutmut, zizmor |
Background guardrails before PR merge | Automated: Runs in uv run poe code-quality and CI pipelines |
You do not need to learn or configure Tier 2 tools on Day 1. They operate as automated safety nets that prevent architectural rot, loose typing, and security leaks.
Customizing or Pruning Tools¶
Zenith's tools are decoupled and modular. If your team does not need architectural
boundary enforcement (tach), complexity ceilings (complexipy), or mutation testing
(mutmut), you can prune them in three simple steps without breaking other tasks:
- Remove from Composite Tasks (
poe_tasks.toml): Openpoe_tasks.tomland remove the tool's command from thecode-qualitytask array. - Remove from Git Hooks (
prek.toml): Openprek.tomland remove the hook entry sogit commitdoes not execute it. - Remove from Dependencies (
pyproject.toml): Remove the package from[dependency-groups.dev]inpyproject.tomland runuv sync. You can then safely delete the tool's standalone.tomlconfiguration file.
Dedicated Configuration Files¶
Most modern Python tools—such as Ruff, Pytest, Coverage, and Taplo—support defining
configuration directly inside pyproject.toml using [tool.*] tables. While
consolidating settings into a single file appears convenient, Zenith intentionally
standardizes on separate, dedicated configuration files per tool whenever possible
(ruff.toml, pyrefly.toml, complexipy.toml, tach.toml, poe_tasks.toml,
pytest.ini, .coveragerc, .taplo.toml, prek.toml):
- Focused, High-Signal Code Reviews: Updating a linter rule, adjusting type check settings, or revising task scripts creates a clean Git diff in that tool's specific file. Pull requests remain easy to review without noise in the core packaging manifest.
- Prevents Monolithic File Bloat: Storing configuration for 15+ developer tools in
pyproject.tomlresults in a file stretching hundreds of lines. This bloat obscures essential PEP 621 package metadata, dependencies, and build specifications. - Granular Git Blame & History: Each tool configuration retains an independent
commit history. Inspecting
git log ruff.tomlorgit blame tach.tomlsurfaces the exact context, author, and pull request for architectural decisions over time. - Tool-Native Schema Support: Dedicated files allow language servers, editors, and formatters to attach dedicated JSON/TOML schemas directly without schema interference.
Tip
Consolidation Is Supported: If your organization prefers a single unified
pyproject.toml, modern tools like Ruff, Coverage, Taplo, and Mutmut natively support
[tool.*] tables. You can freely consolidate sections into pyproject.toml and
delete the standalone config files without breaking tool behavior.
Tooling Matrix¶
| Tool | Group | Primary Role | Upstream Documentation |
|---|---|---|---|
| uv | Build & Workflow | Package manager, virtual environments, lockfiles, and PEP 517 builds | docs.astral.sh/uv |
| Poe the Poet | Build & Workflow | Declarative development task runner integrated with uv | poethepoet.natn.io |
| prek | Build & Workflow | Rust Git hook runner and local quality gate automation | prek.j178.dev |
| Typer | Build & Workflow | Type-safe CLI framework with Rich terminal rendering | typer.tiangolo.com |
| Cookiecutter | Build & Workflow | Project templating engine powering Zenith generation | cookiecutter.readthedocs.io |
| Ruff | Code Quality | Fast Python linter and formatter with preview rules | docs.astral.sh/ruff |
| Pyrefly | Code Quality | Meta's strict type checker and 100% type coverage engine | github.com/facebook/pyrefly |
| Tach | Code Quality | Modular boundary enforcement, circular dependency blocker | github.com/gauge-sh/tach |
| Deptry | Code Quality | Detect missing, unused, and transitive package dependencies | github.com/osprey-oss/deptry |
| complexipy | Code Quality | Fast cognitive complexity analyzer enforcing max <= 10 | github.com/rohaquinlop/complexipy |
| Griffe | Code Quality | Static AST analysis and breaking public API change detector | mkdocstrings.github.io/griffe |
| typos | Code Quality | High-performance source code and doc spell checker | github.com/crate-ci/typos |
| pytest | Testing & Security | Fixture-based test framework with parallel, property, and snapshot plugins | docs.pytest.org |
| Coverage.py | Testing & Security | 100% statement and branch test coverage engine | coverage.readthedocs.io |
| mutmut | Testing & Security | Fast AST mutation testing for local TDD loops (macOS/Linux) | mutmut.readthedocs.io |
| Cosmic Ray | Testing & Security | AST mutation testing evaluating test suite assertiveness | cosmic-ray.readthedocs.io |
| zizmor | Testing & Security | Static security analysis tool for GitHub Actions workflows | woodruffw.github.io/zizmor |
| Zensical | Documentation & Formatting | Fast TOML-based static documentation generator | github.com/zensical/zensical |
| rumdl | Documentation & Formatting | Rust-native Markdown linter and embedded code checker | github.com/rvben/rumdl |
| Taplo | Documentation & Formatting | Consistent TOML formatting and schema validation | taplo.tamasfe.dev |
| Prettier | Documentation & Formatting | Opinionated formatter for YAML workflows and CSS stylesheets | prettier.io |
| Typst | Documentation & Formatting | Markup-based layout engine for compiling SVG documentation assets | typst.app/docs |
| Termynal | Documentation & Formatting | Lightweight terminal animation widget for documentation | github.com/ines/termynal |