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.
- zenith_template-0.2.0/.agents/skills/guide-ste100/LICENSE +21 -0
- zenith_template-0.2.0/.gitignore +90 -0
- zenith_template-0.2.0/LICENSE +21 -0
- zenith_template-0.2.0/PKG-INFO +140 -0
- zenith_template-0.2.0/README.md +114 -0
- zenith_template-0.2.0/cookiecutter.json +71 -0
- zenith_template-0.2.0/hooks/__init__.py +1 -0
- zenith_template-0.2.0/hooks/post_gen_project.py +470 -0
- zenith_template-0.2.0/hooks/pre_gen_project.py +117 -0
- zenith_template-0.2.0/pyproject.toml +143 -0
- zenith_template-0.2.0/src/zenith/__init__.py +6 -0
- zenith_template-0.2.0/src/zenith/cli.py +439 -0
- zenith_template-0.2.0/src/zenith/generator.py +109 -0
- zenith_template-0.2.0/src/zenith/models.py +178 -0
- zenith_template-0.2.0/src/zenith/template.py +64 -0
- zenith_template-0.2.0/src/zenith/ui/__init__.py +3 -0
- zenith_template-0.2.0/src/zenith/ui/app.py +629 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.aider.conf.yml +16 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.claude/settings.json +37 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.codex/config.toml +11 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.coveragerc +50 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.cursor/rules/zenith.mdc +9 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.devin/config.json +16 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.editorconfig +31 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gemini/settings.json +3 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gitattributes +25 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/bug_report.yml +56 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/config.yml +5 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/ISSUE_TEMPLATE/feature_request.yml +39 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/PULL_REQUEST_TEMPLATE.md +38 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/copilot-instructions.md +4 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/dependabot.yml +31 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/dependabot-automerge.yaml +32 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/docs.yaml +56 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/guard-dependencies.yaml +61 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/publish.yaml +101 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/python_tests.yaml +199 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.github/workflows/test_redistribute.yaml +53 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.gitignore +87 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.pi/settings.json +8 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.prettierrc.yaml +16 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.python-version +1 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.taplo.toml +26 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.vscode/extensions.json +8 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zed/settings.json +18 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zed/tasks.json +14 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/.zizmor.yml +12 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/AGENTS.md +180 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/AI_POLICY.md +75 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/CODE_OF_CONDUCT.md +125 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/CONTRIBUTING.md +87 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/LICENSE +7 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/README.md +224 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/SECURITY.md +66 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/complexipy.toml +20 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/cosmic-ray.toml +17 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/0001-record-architecture-decisions.md +88 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/index.md +42 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/adr/template.md +66 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/assets/python-logo.svg +1 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/assets/python-logo.typ +11 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/changelog.md +20 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/getting-started.md +168 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/index.md +157 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/javascripts/mathjax.js +19 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/reference.md +37 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/stylesheets/custom.css +145 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/docs/stylesheets/palette.css +64 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/opencode.json +24 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/poe_tasks.toml +435 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/prek.toml +135 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/pyproject.toml +132 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/pyrefly.toml +16 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/pytest.ini +35 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/ruff.toml +65 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/rumdl.toml +170 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/scripts/check_skills.py +362 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/scripts/verify_wheel.py +644 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/.agents/skills/{{cookiecutter.project_slug}}/SKILL.md +27 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/__init__.py +24 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/__main__.py +10 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/_lazy.py +91 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/cli.py +72 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/core.py +28 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/src/{{cookiecutter.package_name}}/py.typed +1 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tach.toml +53 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/__init__.py +3 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/__snapshots__/test_core.ambr +4 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/conftest.py +34 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/test_cli.py +99 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/tests/test_core.py +40 -0
- zenith_template-0.2.0/{{cookiecutter.project_slug}}/typos.toml +22 -0
- 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
|
+
[](https://github.com/cookiecutter/cookiecutter)
|
|
34
|
+
[](https://www.python.org/)
|
|
35
|
+
[](https://github.com/astral-sh/uv)
|
|
36
|
+
[](https://github.com/astral-sh/ruff)
|
|
37
|
+
[](https://github.com/facebook/pyrefly)
|
|
38
|
+
[](https://github.com/zensical/zensical)
|
|
39
|
+
[](https://github.com/rvben/rumdl)
|
|
40
|
+
[](https://github.com/crate-ci/typos)
|
|
41
|
+
[](https://github.com/rohaquinlop/complexipy)
|
|
42
|
+
[](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
|
+
[](https://github.com/cookiecutter/cookiecutter)
|
|
8
|
+
[](https://www.python.org/)
|
|
9
|
+
[](https://github.com/astral-sh/uv)
|
|
10
|
+
[](https://github.com/astral-sh/ruff)
|
|
11
|
+
[](https://github.com/facebook/pyrefly)
|
|
12
|
+
[](https://github.com/zensical/zensical)
|
|
13
|
+
[](https://github.com/rvben/rumdl)
|
|
14
|
+
[](https://github.com/crate-ci/typos)
|
|
15
|
+
[](https://github.com/rohaquinlop/complexipy)
|
|
16
|
+
[](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."""
|