A modern GitHub template for starting AI-centric Python projects with batteries included.
This template provides a complete development environment for AI/ML applications with:
- AI/ML SDKs: Pre-configured with Anthropic, OpenAI, Hugging Face, and MCP (Model Context Protocol) SDKs
- Modern Python tooling: Uses
uv
for blazing-fast package management - Type safety: Pyrefly for type checking
- Code quality: Ruff for linting and formatting
- HTTP client: httpx for async HTTP operations
- Development environment: Optional Nix flakes for reproducible environments
- Python 3.13: Latest Python version support
- Python 3.13+
- uv (Python package manager)
- Nix (optional, for development environment)
- direnv (optional, for automatic environment activation)
-
Clone this template:
git clone <your-repo-url> cd <your-repo-name>
-
Set up direnv for automatic environment activation:
echo "use flake" > .envrc && direnv allow
-
The Nix environment will automatically provide:
- Python 3.13
- All development tools (uv, ruff, pyrefly, etc.)
- Pre-commit hooks
- Ensure Python 3.13+ is installed
- Install uv:
pip install uv
- Install dependencies:
uv sync
- Install uv
- Install Python using uv:
uv python install 3.13
- Install dependencies:
uv sync
uv run pai
# Using Nix command
runTests
# Or directly with uv
uv run pytest --cov=pai --cov-report=term-missing --cov-report=html
# Run specific tests
uv run pytest tests/pai/test_main.py::test_specific_function
# Using Nix command
runLint
# Or individually with uv
uv run ruff format src # Format code
uv run ruff check --fix src # Lint and auto-fix
pyrefly check # Type checking
pre-commit run --all-files
The template supports multiple environment files:
.env
- Default environment variables.test.env
- Test-specific configuration.deploy.env
- Deployment configuration
Core dependencies included:
anthropic
- Claude AI APIopenai
- OpenAI APIhuggingface-hub
- Access to Hugging Face modelsmcp[cli]
- Model Context Protocol for AI interactionshttpx
- Modern async HTTP client (preferred over requests)pydantic
&pydantic-settings
- Data validation and settingsstructlog
- Structured loggingtenacity
- Retry logic for API calls
- Make changes to code in
src/pai/
- Write tests in
tests/
mirroring the source structure - Run linting with
runLint
oruv run ruff check src
- Run tests with
runTests
oruv run pytest
- Commit - pre-commit hooks will run automatically
# Add a production dependency
uv add <package-name>
# Add a development dependency
uv add --dev <package-name>
This template uses Pyrefly (and Basedpyright) for type checking. Run type checks with:
pyrefly check
- Use
httpx
for all HTTP operations (async-first design) - Store API keys in environment variables or use
.env
files (never commit them) - Implement proper retry logic with
tenacity
for API calls - Use
pydantic
models for API request/response validation - Leverage
structlog
for debugging and logging
GitHub Issues are disabled to encourage direct community contribution. When you encounter bugs or documentation issues, please contribute fixes through Pull Requests instead.
How to contribute: Open a PR with your solution, draft changes, or a test reproducing the issue. We'll collaborate from there to refine and merge improvements.
This approach creates faster fixes while building a stronger, community-driven project where everyone benefits from shared contributions.
This project is optimized and setup for you to use Claude Code as your AI programming agent. It is recommended to use Claude Code.
python-starter-template is licensed under the MIT License. See LICENSE for details.