Thank you for your interest in contributing! Here's how to get started.
git clone https://github.com/SemTiOne/standup-bot.git
cd standup-bot
pip install -e ".[dev]"python -m pytest tests/ -v
# With coverage
pytest tests/ --cov=standup --cov-report=term-missing- Type hints on all functions and methods
- Docstrings on all modules, classes, and public functions
richfor all terminal output — no plainprint()calls in production codevalidator.pyis the single source of truth for all validation — do not add validation logic elsewhere- All validator functions must return
tuple[bool, str]and never raise exceptions - All regex patterns in
security.pymust be precompiled at module level withre.compile() - Never log raw API keys — always use
mask_api_key() - Requires Python 3.10+ — use
X | Noneinstead ofOptional[X],X | Yinstead ofUnion[X, Y], and built-in generics (list[str],dict[str, int],tuple[bool, str]) instead of importingList,Dict, orTuplefromtyping
- Create
standup/llm/your_provider.pyimplementingBaseLLMProvider - Implement
generate_standup(),is_available(), andget_provider_name() - Register the provider in
llm/factory.py - Add the provider name to
VALID_PROVIDERSinvalidator.py - Update
README.mdprovider comparison table - Add tests in
tests/test_llm_factory.py
- Fork the repo and create a feature branch
- Write tests for new functionality
- Ensure all tests pass:
python -m pytest tests/ -v - Update
CHANGELOG.mdunder[Unreleased] - Open a PR with a clear description of the change
Please include:
- Python version (
python --version) - StandupBot version (
standup --version) - Output of
standup doctor - The full error message