Create a small, production-quality Python research software repository. Prefer established tools, explicit configuration, and reproducible workflows. Add infrastructure only for a concrete need.
Use Python with a src/ layout, uv for environments, dependencies, locking and builds, Ruff for formatting and linting, pytest, ty, a thin Makefile, Docker, Sphinx with myst-parser, and GitHub Actions. Keep configuration in pyproject.toml where practical and commit uv.lock.
Use standard [dependency-groups] for development and documentation tools, separate from runtime dependencies. Prefer uv_build for straightforward pure-Python packages; justify another backend when needed. Declare a clear supported Python version range.