A template repository for scaffolding Rust projects with strict, machine-enforced quality standards: opinionated lint configuration, forced testing with high coverage, mutation testing, supply-chain safety, reviewability gates on every PR, and a tag-driven release pipeline.
The conventions-probe crate is a minimal workspace
member that keeps every quality gate verifiable against
real code. Replace it with real crates when scaffolding
a project.
- Lints: ~200 rustc/clippy/rustdoc lints at deny,
including no unchecked arithmetic, no
ascasts, nounwrap/panic, exhaustive enum matching, and documentation on every item (public and private) - Testing: unit + integration tests required; 90% line / 80% region coverage floor; mutation testing; property-based testing conventions
- Supply chain:
cargo audit+cargo denywith pinned registries and a license allowlist - Reviewability: PRs capped at 750 added production lines, with required descriptions, conventional commits, DCO sign-off, and signed commits
- Everything else: markdown, TOML, shell, spelling, and workflow files are linted too
Install the requirements, then:
make all # build + fmt + lint + test + audit
make help # every available target| Document | Contents |
|---|---|
| conventions.md | Coding style, testing, type design, lint policy |
| development.md | Requirements, build/test/coverage commands |
| enhancements | Proposal lifecycle for larger changes |
| release.md | Versioning, tagging, release pipeline |
| CONTRIBUTING.md | Contributor entry point and PR gates |
- Create a new repository from this template
- Replace
crates/conventions-probewith real crates and updatemembersin the rootCargo.toml - Update
PUBLISH_CRATESandLINT_CMDSin theMakefile, and the crate list in theContainerfile - Replace the placeholder owner in
.github/CODEOWNERS, the image labels in theContainerfile, and the links in.github/ISSUE_TEMPLATE/config.yml - Adjust
SECURITY.mdsupported versions anddeny.tomllicenses for your dependencies - Run
make all— every gate should pass before the first commit