A step-by-step guide to get productive with this Python project template.
- Python 3.10-3.13 (3.11 recommended)
- Git
- uv (this template is uv-only)
uv is a blazing-fast Python package manager written in Rust.
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Verify
uv --version# Clone the template
git clone https://github.com/SongshGeo/project_template.git my-project
cd my-project
# Optional: reset git history
rm -rf .git
git initmake configure-project
# or run directly
python scripts/configure_project.pyThe script asks for:
- Project name (e.g.,
my-awesome-project) - Project description (e.g.,
An awesome Python project)
What it does:
- Update
pyproject.toml[project] - Update
.github/workflows/release-please.yml - Create
README.md - Clear
CHANGELOG.md
Example output:
Project name: my-awesome-project
Project description: An awesome Python project
✓ Updated pyproject.toml
✓ Updated .github/workflows/release-please.yml
✨ Project configuration completed!
If you use Claude Code, the whole bootstrap can be driven by a skill instead of running the commands by hand:
- Create your project from this template and open it in Claude Code.
- Run the
setup-projectskill. It will:- configure the project name and description;
- install dependencies with
uv sync --all-extras; - install the pre-commit hooks;
- run
npx skills@latest add SongshGeo/skillsto install the recommended external skills; - initialize the
memory-bank/; - run the test suite to verify everything works.
Already have an older project generated from this template? Run the
upgrade-project skill to migrate it to the new uv-only + Claude Code workflow.
!!! tip "Collaboration context hub"
The root CLAUDE.md (authoritative coding standards and skill index) and the
top-level memory-bank/ are the shared context hub for working with Claude Code.
# All extras (dev + docs)
uv sync --all-extras
# Dev only
uv sync --devpre-commit install
pre-commit run --all-files# Using Makefile
make test
# Or directly
uv run pytestTest report:
make reportsrc/
├── core/ # Core logic
└── api/ # API layer
tests/
├── conftest.py # pytest config
├── test_configure_project.py # config script tests
└── test_*.py # other tests
tests/test_configure_project.pyverifies the config script.
Run tests:
make test
# or
uv run pytest- Add code under
src/ - Add matching tests under
tests/ - Run tests
Example test:
# tests/test_my_module.py
def test_my_function():
"""Test my function."""
from src.my_module import my_function
assert my_function() == expected_valueuv add numpy pandas # runtime deps
uv add --optional dev pytest-cov # dev deps
uv add --optional docs mkdocs # docs depsuv run python src/your_script.py
# Or activate virtual env
uv shellmake tox # Python 3.10-3.13
make tox-e pyversion=py311 # specific version
make tox-list # list envspre-commit run --all-files
pre-commit run black --all-files
pre-commit run flake8 --all-files
pre-commit run interrogate --all-filesblack .
ruff format .
flake8 src/
mypy src/
interrogate src/- Read Tooling
- See Configuration
- Review Development Guide
- Check Deployment
This template uses uv exclusively. uv is a blazing-fast (Rust) manager that handles environments, dependencies, and packaging in a single tool.
uv creates .venv by default.
Check paths:
uv infoEdit tox.ini envlist:
envlist = py310, py311, py312, py313uv run mkdocs serve
uv run mkdocs buildDocs output to site/.
See Deployment for the PyPI section.