This document is for developers working on chelae itself. End-user
documentation lives in README.md.
Before pushing, run the full verification suite:
bash ci/check.shThis runs cargo fmt, cargo clippy --all-features --all-targets -- -D warnings,
and cargo test. CI also runs a --locked version via
src/scripts/precommit.sh.
For local development, cargo build --release uses target-cpu=native (see
.cargo/config.toml) for fastest local runs.
The project follows conventions documented in CLAUDE.md —
section ordering within command modules, impl-block collocation, and
callers-before-callees inside an impl. Please read CLAUDE.md before making
structural changes.
The README contains a hand-curated Options table that summarizes every
chelae trim flag. When adding, removing, or renaming an option (or
materially changing its meaning or default), update that table in README.md
so the public docs stay in step with the CLI. The full chelae trim --help
output remains the authoritative reference — the README table is a short-form
pointer to it.
CHANGELOG.md follows the Keep a Changelog
format and is promoted on release by cargo-release. As you make user-visible
changes, add a bullet under the [Unreleased] section heading using the
appropriate subsection (Added, Changed, Deprecated, Removed, Fixed,
or Security).
Install cargo-release:
cargo install cargo-releaseVerify the release plan without publishing:
cargo release [major|minor|patch|release|rc] --no-publishDry-run is the default for cargo-release; add --execute once the output
looks right.
release.toml in the repo root configures the tag format (vX.Y.Z), the
CHANGELOG promotion ([Unreleased] → a versioned section), and disables
crates.io publishing from cargo release itself — publishing is done from
CI on tag.
See the cargo-release reference documentation
for more.
chelae follows Semantic Versioning:
- MAJOR when you make incompatible API changes,
- MINOR when you add functionality in a backwards-compatible manner,
- PATCH when you make backwards-compatible bug fixes.
The benchmark pipeline that produces the numbers in README.md and
benchmark-pipeline/RESULTS.md is documented separately in
benchmark-pipeline/README.md. That's where
to look if you're modifying tool render scripts, adding a new tool to the
comparison, changing the sample matrix, or re-running the benchmark suite.