# Contributing to winnow Bug reports, feature requests, and pull requests are all welcome. ## Before You Start - Check [existing issues](https://github.com/sudolulo/winnow/issues) to avoid duplicates. - For large changes, open an issue first to discuss the approach. - All PRs target the `dev` branch — never `main` directly. ## Development Setup Requires Python 3.13+ and [uv](https://astral.sh/uv). ```bash git clone https://github.com/sudolulo/winnow.git cd winnow git checkout dev uv sync ``` ## Running Tests and Lint ```bash uv run pytest # run the test suite uv run ruff check # lint uv run ruff check --fix # auto-fix lint issues ``` CI runs both on every push and PR to `main` and `dev`. PRs must pass before merging. ## Pull Request Guidelines - One logical change per PR. - If you add behaviour, add a test for it. - Keep the `CHANGELOG.md` entry in the `[Unreleased]` section updated. - Commit messages should be plain English describing what changed and why. ## Development Tooling Development uses Claude Code (Anthropic) for implementation assistance. All code is reviewed and the final call on design, behavior, and what ships is made by the maintainer. Contributions from humans are equally welcome. ## License By submitting a contribution you agree that your work will be released under the project's [AGPLv3+ license](LICENSE).