This project follows axiomantic standards: production-quality or nothing, audit-driven tooling, no shortcuts. Read this file before making changes.
The justfile is the canonical command surface. Don't memorize uv invocations.
| Task | Command | Notes |
|---|---|---|
| Run tests | just test |
pytest |
| Lint | just lint |
ruff check + ruff format --check + mypy |
| Auto-format | just fmt |
ruff format + ruff check --fix |
| Build docs | just docs |
mkdocs serve (live reload) |
| Build dist | just build |
uv build |
| Pre-release smoke | just release-preflight |
lint + test + build |
- Install uv.
uv sync --all-extras --devuv run pre-commit install --install-hooks# registers pre-commit AND pre-push hooks (default_install_hook_types) Requirespre-commit >= 3.2.0(declared in pyproject[project.optional-dependencies] dev).
- src layout: all importable code lives under
src/project_name/. - tests mirror src:
tests/test_<module>.pymirrorssrc/project_name/<module>.py. - Docstrings: Google convention (
[tool.ruff.lint.pydocstyle] convention = "google"). - Type hints: mypy strict mode. No
Anywithout justification (see Forbidden Patterns). - Formatting authority:
ruff formatis the only formatter. Do not hand-format.
- No
Anyin production code without an inline# noqa: ANN401and a one-line justification. - No blanket
except Exception:or bareexcept:. - No commented-out code (ruff
ERAwill flag it). Delete or fix. - No
# type: ignorewithout a specific error code AND a comment explaining why. - No
print()in production code (use logging). Tests are exempt via per-file-ignore.
The pr-agent.yml workflow consumes secrets.OPENROUTER_KEY from the repo or org level.
Verify with gh secret list -o axiomantic | grep OPENROUTER_KEY before opening the first PR.
Without it, pr-agent.yml fails on the first PR with no review output.
If your org disables Actions by default for new repos, enable Actions and grant write
permission to GITHUB_TOKEN before template-cleanup.yml runs (Settings -> Actions ->
General -> Workflow permissions -> "Read and write permissions"). Without this,
template-cleanup cannot push the rename commit and the marker file persists.
pr-agent.yml inherits from axiomantic/.github/.github/workflows/pr-agent.yml@devel.
Breaking changes upstream propagate immediately to all instantiated repos. To pin
this project to a specific upstream SHA, replace @devel with the SHA in
.github/workflows/pr-agent.yml. The trade is: stability vs. automatic improvements.
First release will fail loudly with a setup URL. Configure trusted publisher at https://pypi.org/manage/account/publishing/ with these values:
- Owner:
axiomantic - Repository:
<this repo name> - Workflow:
release.yml - Environment:
pypi
(populate per project)