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
poetryfor package management - Type safety: Pyrefly for type checking
- Code quality: Black, isort, and Flake8 for formatting and linting
- 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+
- Poetry (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
- Poetry
-
Install all development tools (black, isort, flake8, pyrefly, pre-commit, etc.) via Poetry:
poetry install
- Ensure Python 3.13+ is installed
- Install Poetry:
pip install poetry
- Install dependencies:
poetry install
poetry run pai# Using Nix command
runTests
# Or directly with poetry
poetry run pytest --cov=pai --cov-report=term-missing --cov-report=html
# Run specific tests
poetry run pytest tests/pai/test_main.py::test_specific_function# Using Nix command
runLint
# Or individually with poetry
poetry run black src # Format code
poetry run isort src # Sort imports
poetry run flake8 src # Lint
poetry run pyrefly check # Type checkingpoetry run pre-commit run --all-filesThe 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
runLintorpoetry run flake8 src - Run tests with
runTestsorpoetry run pytest - Commit - pre-commit hooks will run automatically
# Add a production dependency
poetry add <package-name>
# Add a development dependency
poetry add --group dev <package-name>This template uses Pyrefly for type checking. Run type checks with:
poetry run pyrefly check- Use
httpxfor all HTTP operations (async-first design) - Store API keys in environment variables or use
.envfiles (never commit them) - Implement proper retry logic with
tenacityfor API calls - Use
pydanticmodels for API request/response validation - Leverage
structlogfor 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.