My project template, with pyproject.toml, Github Actions CI, and Mkdocs-Material docs settings how I like them.
It's recommended to install Cruft via uv tool install cruft to make it globally accessible.
Then from the root of your code directory, run the following and enter the project-specific strings the prompt requests.
uvx cruft create https://github.com/joshhubert-dsp/py-template.git
Cruft is a tool which keeps all of the downstream projects tracking this template, so you can run the following inside your project to update it on new additions to the template.
uvx cruft update
Cruft relies on Cookiecutter which uses jinja2 templates for everything, so anytime you see a {{ cookiecutter.whatever}} within the directory named {{ cookiecutter.project_name}} that will be replaced with the values defined in
cookiecutter.json. The other place where you can access values from
cookiecutter.json is inside a hook. Hooks are python functions that get called
before or after the templating process.