Contributing

Three things that are useful to know before sending a PR. None of them are mandatory reading — the project is small enough to find your way by reading code — but each saves a round-trip in review.

PageRead it before
ArchitectureTouching anything that crosses crate boundaries (cha-corecha-parser, plugin runtime, LSP).
Writing a smellAdding a new built-in detector (cha-core/src/plugins/).
ReleasingCutting a release. Mostly automated; a few invariants exist.

Local dev:

cargo xtask ci          # everything CI runs
cargo xtask test        # tests only
cargo xtask lint        # clippy + fmt
cargo xtask analyze     # cha self-analyses every output format

Code review style: small commits, separate concerns. Bug fix in one commit, refactor in the next, doc update in a third. The release script (cargo xtask release) squashes nothing — clean history is on you.