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
- Issue hygiene: contributors can only self-assign triaged, non-urgent issues; urgent/high-priority and un-triaged work is maintainer-assigned
- 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
Existing repositories can run these workflows without
copying them. Each one below also accepts
workflow_call, so a repository keeps a short caller
pinned to a tagged commit of this repository:
| Workflow | Inputs |
|---|---|
pr-conventions.yaml |
max-additions, bypass-teams, conventions-doc, commit-subject-pattern, commit-subject-max-length, dco-check, dep-version-check |
pr-housekeeping.yaml |
stale-draft-days, stale-days |
issue-triage.yaml |
maintainer-teams, priority-field-name, blocked-priorities, policy-doc |
automated-review.yaml |
pr_number, model, prompt-path, cloud-ml-region, gcp-project-id |
publish-dry-run.yaml |
make-args |
coverage.yaml, msrv.yaml, mutants.yaml, semver.yaml, supply-chain.yaml |
none |
jobs:
coverage:
permissions:
contents: read
uses: praxis-proxy/conventions/.github/workflows/coverage.yaml@<sha> # v0.3.0The caller picks the triggers, grants the permissions
the called jobs ask for, and passes secrets explicitly.
Leave concurrency to the called workflow. Status
checks are reported as <caller job> / <job>, so
update any required checks in branch rules when a
repository switches over.