# Contributing
## Proposing changes
Open an issue before starting non-trivial work to surface design
feedback and avoid duplicate effort.
## Development
Prerequisites: Rust 1.88 or later.
```sh
cargo build
cargo test
cargo fmt --all --check
cargo clippy --all-targets -- -D warnings
```
Continuous integration runs the same checks on Linux, macOS, and Windows
for every pull request.
## Pull requests
The pull request title becomes the commit message on `main` when squash
merged. Format the title as a [Conventional
Commit](https://www.conventionalcommits.org/en/v1.0.0/):
```
feat: add support for <X>
fix: correct <Y> under <Z> condition
docs: clarify hook resolution rules
```
Individual commits on the feature branch are not required to follow any
format. A CI job validates only the pull request title.
## Licensing
Unless explicitly stated otherwise, contributions are dual-licensed under
MIT and Apache-2.0, matching the project license. See
[LICENSE-MIT](LICENSE-MIT) and [LICENSE-APACHE](LICENSE-APACHE).
## Code of conduct
This project follows the [Contributor Covenant Code of
Conduct](CODE_OF_CONDUCT.md).