# Contributing to Rustlift
Thanks for contributing. This guide keeps contributions consistent and reviewable.
## Before You Start
- Read [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
- Open an issue first for non-trivial changes.
- Keep pull requests focused on one concern.
## Local Setup
```bash
rustup toolchain install stable
cargo install cross
az login
```
## Build, Test, and Docs
Run these before opening a pull request:
```bash
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
cargo test --doc
cargo doc --no-deps
```
## Commit and Pull Request Guidelines
- Use clear commit messages in imperative form, e.g. `Add retry docs for CLI deploy`.
- Update docs when behavior changes.
- Add or update tests for behavior changes.
- Keep public APIs documented, including `# Errors`, `# Panics`, and examples where relevant.
Pull requests should include:
- A short summary of what changed.
- Why the change is needed.
- Any deployment/runtime impact.
- Follow-up tasks, if any.
## Documentation Standards
- Prefer Rustdoc intra-doc links: ``[`Type`]``, ``[`module::Item`]``.
- Keep examples runnable when possible.
- For non-runnable external integrations, use `no_run` and explain prerequisites.
## Security
Do not open public issues for vulnerabilities. Follow [`SECURITY.md`](SECURITY.md).
## Licensing
By contributing, you agree that your contribution is licensed under the terms in [`LICENSE`](LICENSE).