zenith-template 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. zenith_template-0.2.0/.agents/skills/guide-ste100/LICENSE +21 -0
  2. zenith_template-0.2.0/.gitignore +90 -0
  3. zenith_template-0.2.0/LICENSE +21 -0
  4. zenith_template-0.2.0/PKG-INFO +140 -0
  5. zenith_template-0.2.0/README.md +114 -0
  6. zenith_template-0.2.0/cookiecutter.json +71 -0
  7. zenith_template-0.2.0/hooks/__init__.py +1 -0
  8. zenith_template-0.2.0/hooks/post_gen_project.py +470 -0
  9. zenith_template-0.2.0/hooks/pre_gen_project.py +117 -0
  10. zenith_template-0.2.0/pyproject.toml +143 -0
  11. zenith_template-0.2.0/src/zenith/__init__.py +6 -0
  12. zenith_template-0.2.0/src/zenith/cli.py +439 -0
  13. zenith_template-0.2.0/src/zenith/generator.py +109 -0
  14. zenith_template-0.2.0/src/zenith/models.py +178 -0
  15. zenith_template-0.2.0/src/zenith/template.py +64 -0
  16. zenith_template-0.2.0/src/zenith/ui/__init__.py +3 -0
  17. zenith_template-0.2.0/src/zenith/ui/app.py +629 -0
  18. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.aider.conf.yml +16 -0
  19. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.claude/settings.json +37 -0
  20. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.codex/config.toml +11 -0
  21. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.coveragerc +50 -0
  22. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.cursor/rules/zenith.mdc +9 -0
  23. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.devin/config.json +16 -0
  24. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.editorconfig +31 -0
  25. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gemini/settings.json +3 -0
  26. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gitattributes +25 -0
  27. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/bug_report.yml +56 -0
  28. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/config.yml +5 -0
  29. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/feature_request.yml +39 -0
  30. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/PULL_REQUEST_TEMPLATE.md +38 -0
  31. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/copilot-instructions.md +4 -0
  32. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/dependabot.yml +31 -0
  33. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/dependabot-automerge.yaml +32 -0
  34. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/docs.yaml +56 -0
  35. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/guard-dependencies.yaml +61 -0
  36. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/publish.yaml +101 -0
  37. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/python_tests.yaml +199 -0
  38. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/test_redistribute.yaml +53 -0
  39. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gitignore +87 -0
  40. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.pi/settings.json +8 -0
  41. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.prettierrc.yaml +16 -0
  42. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.python-version +1 -0
  43. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.taplo.toml +26 -0
  44. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.vscode/extensions.json +8 -0
  45. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zed/settings.json +18 -0
  46. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zed/tasks.json +14 -0
  47. zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zizmor.yml +12 -0
  48. zenith_template-0.2.0/{{cookiecutter.project_slug}}/AGENTS.md +180 -0
  49. zenith_template-0.2.0/{{cookiecutter.project_slug}}/AI_POLICY.md +75 -0
  50. zenith_template-0.2.0/{{cookiecutter.project_slug}}/CODE_OF_CONDUCT.md +125 -0
  51. zenith_template-0.2.0/{{cookiecutter.project_slug}}/CONTRIBUTING.md +87 -0
  52. zenith_template-0.2.0/{{cookiecutter.project_slug}}/LICENSE +7 -0
  53. zenith_template-0.2.0/{{cookiecutter.project_slug}}/README.md +224 -0
  54. zenith_template-0.2.0/{{cookiecutter.project_slug}}/SECURITY.md +66 -0
  55. zenith_template-0.2.0/{{cookiecutter.project_slug}}/complexipy.toml +20 -0
  56. zenith_template-0.2.0/{{cookiecutter.project_slug}}/cosmic-ray.toml +17 -0
  57. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/0001-record-architecture-decisions.md +88 -0
  58. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/index.md +42 -0
  59. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/template.md +66 -0
  60. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/assets/python-logo.svg +1 -0
  61. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/assets/python-logo.typ +11 -0
  62. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/changelog.md +20 -0
  63. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/getting-started.md +168 -0
  64. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/index.md +157 -0
  65. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/javascripts/mathjax.js +19 -0
  66. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/reference.md +37 -0
  67. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/stylesheets/custom.css +145 -0
  68. zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/stylesheets/palette.css +64 -0
  69. zenith_template-0.2.0/{{cookiecutter.project_slug}}/opencode.json +24 -0
  70. zenith_template-0.2.0/{{cookiecutter.project_slug}}/poe_tasks.toml +435 -0
  71. zenith_template-0.2.0/{{cookiecutter.project_slug}}/prek.toml +135 -0
  72. zenith_template-0.2.0/{{cookiecutter.project_slug}}/pyproject.toml +132 -0
  73. zenith_template-0.2.0/{{cookiecutter.project_slug}}/pyrefly.toml +16 -0
  74. zenith_template-0.2.0/{{cookiecutter.project_slug}}/pytest.ini +35 -0
  75. zenith_template-0.2.0/{{cookiecutter.project_slug}}/ruff.toml +65 -0
  76. zenith_template-0.2.0/{{cookiecutter.project_slug}}/rumdl.toml +170 -0
  77. zenith_template-0.2.0/{{cookiecutter.project_slug}}/scripts/check_skills.py +362 -0
  78. zenith_template-0.2.0/{{cookiecutter.project_slug}}/scripts/verify_wheel.py +644 -0
  79. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/.agents/skills/{{cookiecutter.project_slug}}/SKILL.md +27 -0
  80. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/__init__.py +24 -0
  81. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/__main__.py +10 -0
  82. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/_lazy.py +91 -0
  83. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/cli.py +72 -0
  84. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/core.py +28 -0
  85. zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/py.typed +1 -0
  86. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tach.toml +53 -0
  87. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/__init__.py +3 -0
  88. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/__snapshots__/test_core.ambr +4 -0
  89. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/conftest.py +34 -0
  90. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/test_cli.py +99 -0
  91. zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/test_core.py +40 -0
  92. zenith_template-0.2.0/{{cookiecutter.project_slug}}/typos.toml +22 -0
  93. zenith_template-0.2.0/{{cookiecutter.project_slug}}/zensical.toml +188 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dustin Yuchen Teng
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,90 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # Installer logs
30
+ pip-log.txt
31
+ pip-delete-this-directory.txt
32
+
33
+ # Unit test / coverage reports
34
+ htmlcov/
35
+ .tox/
36
+ .nox/
37
+ .coverage
38
+ .coverage.*
39
+ .cache
40
+ nosetests.xml
41
+ coverage.xml
42
+ codecov*
43
+ *.cover
44
+ *.py.cover
45
+ .hypothesis/
46
+ .pytest_cache/
47
+ cover/
48
+
49
+ # Documentation generator build artifacts
50
+ site/
51
+ docs/_build/
52
+
53
+ # Jupyter / IPython
54
+ .ipynb_checkpoints
55
+ profile_default/
56
+ ipython_config.py
57
+
58
+ # Environments
59
+ .env
60
+ .envrc
61
+ .venv
62
+ env/
63
+ venv/
64
+ ENV/
65
+ env.bak/
66
+ venv.bak/
67
+
68
+ # Quality & Tooling caches
69
+ .ruff_cache/
70
+ .rumdl_cache/
71
+ .complexipy_cache/
72
+ .pyrefly/
73
+ .tach_cache/
74
+ .temp/
75
+ .specs/
76
+ .aider*
77
+ !.aider.conf.yml
78
+
79
+ # IDEs & Editors
80
+ .idea/
81
+ .vscode/*
82
+ !.vscode/extensions.json
83
+ *.swp
84
+ *.swo
85
+ *~
86
+ .DS_Store
87
+ Thumbs.db
88
+
89
+ # Agent skills tracked ledgers
90
+ !.agents/skills/inspect-module-setup/*.log
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 bwrob
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.5
2
+ Name: zenith-template
3
+ Version: 0.2.0
4
+ Summary: Zenith: An opinionated, strict Cookiecutter template for modern Python projects using uv, ruff, pyrefly, complexipy, zensical, rumdl, tach, deptry, and poethepoet.
5
+ Project-URL: Homepage, https://github.com/bwrob/zenith
6
+ Project-URL: Repository, https://github.com/bwrob/zenith.git
7
+ Author-email: bwrob <contact@bwrob.dev>
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
17
+ Classifier: Topic :: Software Development :: Build Tools
18
+ Classifier: Topic :: Software Development :: Code Generators
19
+ Classifier: Typing :: Typed
20
+ Requires-Python: >=3.12
21
+ Requires-Dist: cookiecutter>=2.7.0
22
+ Requires-Dist: pyyaml>=6.0.3
23
+ Requires-Dist: rich>=15.0.0
24
+ Requires-Dist: textual>=8.2.8
25
+ Description-Content-Type: text/markdown
26
+
27
+ # Zenith
28
+
29
+ <p align="center">
30
+ <img src="assets/zenith-star.svg" alt="Zenith Emblem" width="160">
31
+ </p>
32
+
33
+ [![Template: Cookiecutter](https://img.shields.io/badge/template-cookiecutter-D4B830.svg)](https://github.com/cookiecutter/cookiecutter)
34
+ [![Python: 3.12+](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14%20%7C%203.15-blue.svg)](https://www.python.org/)
35
+ [![Package Manager: uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
36
+ [![Code Style: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
37
+ [![Type Checked: Pyrefly](https://img.shields.io/badge/types-pyrefly%20strict-blueviolet.svg)](https://github.com/facebook/pyrefly)
38
+ [![Documentation: Zensical](https://img.shields.io/badge/docs-zensical-teal.svg)](https://github.com/zensical/zensical)
39
+ [![Markdown: rumdl](https://img.shields.io/badge/markdown-rumdl-orange.svg)](https://github.com/rvben/rumdl)
40
+ [![Spelling: typos](https://img.shields.io/badge/spelling-typos-blue.svg)](https://github.com/crate-ci/typos)
41
+ [![Complexity: complexipy](https://img.shields.io/badge/complexity-complexipy-crimson.svg)](https://github.com/rohaquinlop/complexipy)
42
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
43
+
44
+ An opinionated Cookiecutter template for modern Python 3.12+ projects, built with
45
+ Rust-based developer tooling, autonomous AI agent workflows, and automated quality
46
+ guardrails.
47
+
48
+ ## Elevator Pitch
49
+
50
+ Starting a new Python project usually means spending days wiring up linters, formatters,
51
+ type checkers, test coverage, and documentation generators—or copying decaying configs
52
+ from older repos and fixing whatever broke.
53
+
54
+ Zenith scaffolds a production-ready repository in seconds:
55
+
56
+ - **⚡ Modern Rust-Based Tooling**: Fast package management with `uv`, linting and
57
+ formatting with `ruff`, strict type checking with Meta's `pyrefly`, modular boundaries
58
+ with `tach`, cognitive complexity limits with `complexipy`, and documentation with
59
+ `zensical`.
60
+ - **🤖 First-Class AI Agent Readiness**: Autonomous agent context discovery
61
+ (`AGENTS.md`), modular lifecycle skills in `.agents/skills/`, machine-readable
62
+ `llms.txt`, and clear AI governance policies.
63
+ - **🛡️ Strict Quality Guardrails**: 100% statement and branch test coverage
64
+ (`fail_under = 100`), strict typing, and automated CI security analysis with `zizmor`.
65
+ - **🚀 Hermetic Delivery & CI/CD**: Matrix testing across Python 3.12–3.15, isolated
66
+ wheel package smoke tests, and automated PyPI Trusted Publishing.
67
+
68
+ > [!NOTE]
69
+ > **Project Scope**: Zenith is built for serious production packages, services, and
70
+ > libraries intended for long-term maintenance by teams of humans and AI agents. It is
71
+ > **deliberately not suited** for small two-script throwaway hacks where strict
72
+ > guardrails feel like friction.
73
+
74
+ ## 📖 Documentation
75
+
76
+ For full guides, detailed architectural deep-dives, and tool configurations, visit the
77
+ **[Zenith Documentation Website](https://bwrob.github.io/zenith/)**.
78
+
79
+ - **[First Steps & Core Concepts](https://bwrob.github.io/zenith/first-steps/)**:
80
+ Plain-English onboarding for developers new to modern Python tooling.
81
+ - **[Philosophy & Sizing](https://bwrob.github.io/zenith/philosophy/)**: Modern tooling,
82
+ AI readiness, quality guardrails, and project sizing rubric.
83
+ - **[CLI Architecture](https://bwrob.github.io/zenith/tools/typer/)**: Typer CLI
84
+ structure, Rich terminal rendering, and animated Termynal demos.
85
+ - **[Tooling Stack Reference](https://bwrob.github.io/zenith/tools/)**: In-depth
86
+ explanations, configuration breakdowns, and upstream links for the integrated tool
87
+ stack.
88
+ - **[Agent Skills Architecture](https://bwrob.github.io/zenith/skills/)**: Lifecycle
89
+ workflows for autonomous coding assistants in `.agents/skills/`.
90
+ - **[CI/CD Pipelines](https://bwrob.github.io/zenith/ci-actions/)**: GitHub Actions test
91
+ matrix across Python 3.12–3.15, wheel smoke testing, and supply-chain protection.
92
+ - **[Changelog](https://bwrob.github.io/zenith/changelog/)**: Release history and
93
+ version notes.
94
+
95
+ ## Quick Start
96
+
97
+ Launch the interactive **Zenith Terminal Setup Wizard** directly via `uvx`:
98
+
99
+ ```bash
100
+ uvx zenith-template
101
+ ```
102
+
103
+ For headless automation or CI pipelines, pass `--no-input` and configuration flags:
104
+
105
+ ```bash
106
+ uvx zenith-template --no-input --name "My Service" --ai-tools recommended --sync
107
+ ```
108
+
109
+ Or scaffold directly with raw `cookiecutter`:
110
+
111
+ ```bash
112
+ uvx cookiecutter https://github.com/bwrob/zenith.git
113
+ ```
114
+
115
+ ### Initializing the Project
116
+
117
+ ```bash
118
+ cd my-project
119
+ uv sync # Skip if you checked "Run uv sync" or passed --sync
120
+ uv run poe test # Runs test suite (100% coverage enforced)
121
+ uv run poe code-quality # Runs full linter, formatter, type, and complexity gate
122
+ uv run poe docs-serve # Starts live-reloading documentation server
123
+ ```
124
+
125
+ ## Essential Tasks
126
+
127
+ Every workflow in Zenith is codified through **Poe the Poet** (`uv run poe <task>`):
128
+
129
+ | Task | What it does |
130
+ | ------------------------- | ---------------------------------------------------------------------------------- |
131
+ | `uv run poe test` | Runs pytest suite enforcing 100% statement and branch coverage |
132
+ | `uv run poe test-fast` | Runs tests in parallel across CPU cores with `pytest-xdist` |
133
+ | `uv run poe code-quality` | Complete quality check: lint, format, TOML/YAML/CSS, types, complexity, boundaries |
134
+ | `uv run poe fix` | Auto-fixes lint violations, formatting, markdown, and typos |
135
+ | `uv run poe docs-serve` | Starts local Zensical live-reloading documentation dev server |
136
+ | `uv run poe docs-build` | Builds production static HTML documentation site into `site/` with strict checks |
137
+
138
+ ## License
139
+
140
+ Distributed under the [MIT License](LICENSE).
@@ -0,0 +1,114 @@
1
+ # Zenith
2
+
3
+ <p align="center">
4
+ <img src="assets/zenith-star.svg" alt="Zenith Emblem" width="160">
5
+ </p>
6
+
7
+ [![Template: Cookiecutter](https://img.shields.io/badge/template-cookiecutter-D4B830.svg)](https://github.com/cookiecutter/cookiecutter)
8
+ [![Python: 3.12+](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14%20%7C%203.15-blue.svg)](https://www.python.org/)
9
+ [![Package Manager: uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
10
+ [![Code Style: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
11
+ [![Type Checked: Pyrefly](https://img.shields.io/badge/types-pyrefly%20strict-blueviolet.svg)](https://github.com/facebook/pyrefly)
12
+ [![Documentation: Zensical](https://img.shields.io/badge/docs-zensical-teal.svg)](https://github.com/zensical/zensical)
13
+ [![Markdown: rumdl](https://img.shields.io/badge/markdown-rumdl-orange.svg)](https://github.com/rvben/rumdl)
14
+ [![Spelling: typos](https://img.shields.io/badge/spelling-typos-blue.svg)](https://github.com/crate-ci/typos)
15
+ [![Complexity: complexipy](https://img.shields.io/badge/complexity-complexipy-crimson.svg)](https://github.com/rohaquinlop/complexipy)
16
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
17
+
18
+ An opinionated Cookiecutter template for modern Python 3.12+ projects, built with
19
+ Rust-based developer tooling, autonomous AI agent workflows, and automated quality
20
+ guardrails.
21
+
22
+ ## Elevator Pitch
23
+
24
+ Starting a new Python project usually means spending days wiring up linters, formatters,
25
+ type checkers, test coverage, and documentation generators—or copying decaying configs
26
+ from older repos and fixing whatever broke.
27
+
28
+ Zenith scaffolds a production-ready repository in seconds:
29
+
30
+ - **⚡ Modern Rust-Based Tooling**: Fast package management with `uv`, linting and
31
+ formatting with `ruff`, strict type checking with Meta's `pyrefly`, modular boundaries
32
+ with `tach`, cognitive complexity limits with `complexipy`, and documentation with
33
+ `zensical`.
34
+ - **🤖 First-Class AI Agent Readiness**: Autonomous agent context discovery
35
+ (`AGENTS.md`), modular lifecycle skills in `.agents/skills/`, machine-readable
36
+ `llms.txt`, and clear AI governance policies.
37
+ - **🛡️ Strict Quality Guardrails**: 100% statement and branch test coverage
38
+ (`fail_under = 100`), strict typing, and automated CI security analysis with `zizmor`.
39
+ - **🚀 Hermetic Delivery & CI/CD**: Matrix testing across Python 3.12–3.15, isolated
40
+ wheel package smoke tests, and automated PyPI Trusted Publishing.
41
+
42
+ > [!NOTE]
43
+ > **Project Scope**: Zenith is built for serious production packages, services, and
44
+ > libraries intended for long-term maintenance by teams of humans and AI agents. It is
45
+ > **deliberately not suited** for small two-script throwaway hacks where strict
46
+ > guardrails feel like friction.
47
+
48
+ ## 📖 Documentation
49
+
50
+ For full guides, detailed architectural deep-dives, and tool configurations, visit the
51
+ **[Zenith Documentation Website](https://bwrob.github.io/zenith/)**.
52
+
53
+ - **[First Steps & Core Concepts](https://bwrob.github.io/zenith/first-steps/)**:
54
+ Plain-English onboarding for developers new to modern Python tooling.
55
+ - **[Philosophy & Sizing](https://bwrob.github.io/zenith/philosophy/)**: Modern tooling,
56
+ AI readiness, quality guardrails, and project sizing rubric.
57
+ - **[CLI Architecture](https://bwrob.github.io/zenith/tools/typer/)**: Typer CLI
58
+ structure, Rich terminal rendering, and animated Termynal demos.
59
+ - **[Tooling Stack Reference](https://bwrob.github.io/zenith/tools/)**: In-depth
60
+ explanations, configuration breakdowns, and upstream links for the integrated tool
61
+ stack.
62
+ - **[Agent Skills Architecture](https://bwrob.github.io/zenith/skills/)**: Lifecycle
63
+ workflows for autonomous coding assistants in `.agents/skills/`.
64
+ - **[CI/CD Pipelines](https://bwrob.github.io/zenith/ci-actions/)**: GitHub Actions test
65
+ matrix across Python 3.12–3.15, wheel smoke testing, and supply-chain protection.
66
+ - **[Changelog](https://bwrob.github.io/zenith/changelog/)**: Release history and
67
+ version notes.
68
+
69
+ ## Quick Start
70
+
71
+ Launch the interactive **Zenith Terminal Setup Wizard** directly via `uvx`:
72
+
73
+ ```bash
74
+ uvx zenith-template
75
+ ```
76
+
77
+ For headless automation or CI pipelines, pass `--no-input` and configuration flags:
78
+
79
+ ```bash
80
+ uvx zenith-template --no-input --name "My Service" --ai-tools recommended --sync
81
+ ```
82
+
83
+ Or scaffold directly with raw `cookiecutter`:
84
+
85
+ ```bash
86
+ uvx cookiecutter https://github.com/bwrob/zenith.git
87
+ ```
88
+
89
+ ### Initializing the Project
90
+
91
+ ```bash
92
+ cd my-project
93
+ uv sync # Skip if you checked "Run uv sync" or passed --sync
94
+ uv run poe test # Runs test suite (100% coverage enforced)
95
+ uv run poe code-quality # Runs full linter, formatter, type, and complexity gate
96
+ uv run poe docs-serve # Starts live-reloading documentation server
97
+ ```
98
+
99
+ ## Essential Tasks
100
+
101
+ Every workflow in Zenith is codified through **Poe the Poet** (`uv run poe <task>`):
102
+
103
+ | Task | What it does |
104
+ | ------------------------- | ---------------------------------------------------------------------------------- |
105
+ | `uv run poe test` | Runs pytest suite enforcing 100% statement and branch coverage |
106
+ | `uv run poe test-fast` | Runs tests in parallel across CPU cores with `pytest-xdist` |
107
+ | `uv run poe code-quality` | Complete quality check: lint, format, TOML/YAML/CSS, types, complexity, boundaries |
108
+ | `uv run poe fix` | Auto-fixes lint violations, formatting, markdown, and typos |
109
+ | `uv run poe docs-serve` | Starts local Zensical live-reloading documentation dev server |
110
+ | `uv run poe docs-build` | Builds production static HTML documentation site into `site/` with strict checks |
111
+
112
+ ## License
113
+
114
+ Distributed under the [MIT License](LICENSE).
@@ -0,0 +1,71 @@
1
+ {
2
+ "project_name": "Zenith",
3
+ "project_slug": "{{ cookiecutter.project_name | slugify }}",
4
+ "package_name": "{{ cookiecutter.project_slug | slugify(separator='_') }}",
5
+ "description": "An opinionated, strict Python project powered by uv, ruff, pyrefly, and zensical.",
6
+ "author_name": "bwrob",
7
+ "author_email": "contact@bwrob.dev",
8
+ "github_username": "bwrob",
9
+ "version": "0.1.0",
10
+ "python_version": [
11
+ "3.12",
12
+ "3.13",
13
+ "3.14",
14
+ "3.15"
15
+ ],
16
+ "license": [
17
+ "MIT",
18
+ "Apache-2.0",
19
+ "BSD-3-Clause",
20
+ "None"
21
+ ],
22
+ "include_cli": true,
23
+ "include_docs": true,
24
+ "include_mutation_testing": true,
25
+ "include_ci_testing": true,
26
+ "include_ci_publishing": true,
27
+ "include_agent_skills": true,
28
+ "ai_tools": "all",
29
+ "__year": "{% now 'utc', '%Y' %}",
30
+ "_new_lines": "\n",
31
+ "_jinja2_env_vars": {
32
+ "lstrip_blocks": true
33
+ },
34
+ "_copy_without_render": [
35
+ "docs/assets/*",
36
+ "*.svg",
37
+ "*.png",
38
+ "*.ico"
39
+ ],
40
+ "__prompts__": {
41
+ "project_name": "Project Name (Human-readable title)",
42
+ "project_slug": "Project Slug (Repository and PyPI distribution name)",
43
+ "package_name": "Python Package Name (Import identifier in src/)",
44
+ "description": "Short Project Description",
45
+ "author_name": "Author Full Name",
46
+ "author_email": "Author Email",
47
+ "github_username": "GitHub Username or Organization",
48
+ "version": "Initial Project Version",
49
+ "python_version": {
50
+ "__prompt__": "Target Python Version:",
51
+ "3.12": "Python 3.12 (LTS baseline, recommended)",
52
+ "3.13": "Python 3.13 (Current stable)",
53
+ "3.14": "Python 3.14 (Bleeding edge)",
54
+ "3.15": "Python 3.15 (Future / experimental)"
55
+ },
56
+ "license": {
57
+ "__prompt__": "Select Open Source License:",
58
+ "MIT": "MIT License (Permissive, widely adopted)",
59
+ "Apache-2.0": "Apache 2.0 (Permissive with patent grant)",
60
+ "BSD-3-Clause": "BSD 3-Clause (Permissive with attribution)",
61
+ "None": "Proprietary / No License (All Rights Reserved)"
62
+ },
63
+ "include_cli": "Scaffold Typer/Rich command-line interface?",
64
+ "include_docs": "Scaffold documentation website with Zensical (docs/ and zensical.toml)?",
65
+ "include_mutation_testing": "Include mutation testing tooling (cosmic-ray and mutmut)?",
66
+ "include_ci_testing": "Generate GitHub Actions workflows for CI testing and code quality?",
67
+ "include_ci_publishing": "Generate GitHub Actions workflow for PyPI Trusted Publishing and documentation deployment?",
68
+ "include_agent_skills": "Include Zenith agent skills suite and SDD subagents (.agents/)?",
69
+ "ai_tools": "AI assistant configs to scaffold ('all', 'recommended', 'ide-only', 'cli-only', 'minimal', 'none', or comma-separated names):"
70
+ }
71
+ }
@@ -0,0 +1 @@
1
+ """Repository package for hooks."""