Run make pre-commit before opening a PR. This formats, lints, and runs the full test suite.
git clone https://github.com/boinger/pr-owl.git
cd pr-owl
make dev- Fork the repo and create a branch from
main - Make your changes
- Run
make pre-commit— all checks must pass - Open a PR with a clear description of what and why
- One concern per PR. Don't bundle unrelated changes.
- Commit messages: Imperative mood, describe what changed and why. "Add timeout to subprocess calls" not "Added timeouts".
- Tests: If you change behavior, update or add tests. Run
make testto verify.
A few guardrails to know about:
gh.pyis the only module that callssubprocess.run. All GitHub CLI interaction goes through it. Never import subprocess elsewhere.- All exceptions inherit from
PrOwlErrorinexceptions.py. No catch-allexcept Exception(the one incli.pyis an intentional resilience boundary). shell=Falsealways. Pass args as a list, never a string.
make test # unit tests only
make integration-test # hits real GitHub API (needs gh auth)
make lint # ruff check
make pre-commit # all of the above