DocsProject
Contributing to zirv
Follow the Code of Conduct. Report vulnerabilities through our security policy.
Reporting bugs and requesting features#
Use the GitHub issue forms, or file an issue from a terminal:
zirv report bug "<title>" --body "<details>"
zirv report feature "<title>" --body "<details>"Include enough detail to reproduce a bug or explain the problem a feature solves. Never include secrets or tokens in reports.
Development setup#
Install the stable Rust toolchain, then run from your checkout:
cargo install cargo-nextest
cargo buildFor CLI installation and usage, see the README.
Making changes#
Branch from main; never commit directly to main. Keep diffs focused and mirror
existing naming, structure, and style. Tests stay inline in #[cfg(test)] mod tests;
tests/fixtures/ is data only.
Size verification to the change using CLAUDE.md:
- Docs or comments: run
cargo fmt -- --checkif Rust was touched; otherwise no checks. - Code: run
cargo build,cargo nextest run <filter>for touched modules, andcargo clippy --all-targets -- -D warnings. - Before opening or updating a PR: run all four gates below once.
Before opening a PR#
cargo build
cargo nextest run --no-fail-fast
cargo fmt -- --check
cargo clippy --all-targets -- -D warningsBump the version in Cargo.toml above its base version on main whenever the
diff touches src/, Cargo.toml, Cargo.lock, or build.rs -- CD's release
step is idempotent on an already-published version, so a docs/CI-only PR needs
no bump. Run cargo build to update Cargo.lock and include it.
Commit subjects use type(scope): summary, with types such as feat, fix,
docs, and chore; for example, fix(dash): restore keyboard focus.
Do not include Co-Authored-By or Generated with Claude Code lines in commits.
Pull requests#
Open a PR targeting main with one logical change and explain what changed and
why. CI runs on pull requests to main and is the merge gate.