# Contributing ## Branches - `main` — protected, requires passing CI - Feature branches: `feat/` - Bug fixes: `fix/` ## Workflow 1. Fork the repo and create your branch from `main` 2. Run `ruff check app/ tests/` and `bandit -r app/ -q` locally before pushing 3. Run `pytest tests/ --cov=app --cov-fail-under=70` and ensure it passes 4. Open a PR with a clear description of what changed and why ## Commit style Follow [Conventional Commits](https://www.conventionalcommits.org/): - `feat:` new feature - `fix:` bug fix - `test:` adding or updating tests - `docs:` documentation only - `refactor:` no behaviour change - `ci:` CI/CD changes ## Environment setup ```bash pip install -r requirements.txt cp .env.example .env # Fill in OPENROUTER_API_KEY ``` ## Running tests ```bash pytest tests/ -v --cov=app --cov-report=term-missing ```