Contributing¶
Thanks for your interest in contributing! This page summarizes the key steps — see CONTRIBUTING.md on GitHub for the full details.
Dev setup¶
This project uses uv.
git clone https://github.com/martinez-hub/mushin
cd mushin
uv sync # create the dev environment from uv.lock
pre-commit install # recommended: runs ruff + codespell on each commit
The local gate¶
Before opening a PR, run the same checks CI runs:
Individual shortcuts: make lint, make format, make spell, make test,
make test-py PYTHON=3.12.
Changelog fragments¶
mushin uses towncrier for changelogs.
Every user-facing PR needs a news fragment in changes/:
Where <id> is the GitHub issue or PR number (or a short slug for pre-issue
work), and <type> is one of added, changed, fixed, removed, or
deprecated. The fragment body is a single plain-English sentence describing
the change.
Example:
The CI changelog job will fail if a PR omits a fragment (unless the PR has
the changelog-exempt label, reserved for release PRs).
Releases¶
See RELEASING.md on GitHub for the release checklist.