# 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).
