jira-cli is a Rust command-line tool for Jira Cloud users, CI systems, and AI agents. Contributions should keep the command surface predictable, scriptable, and safe for non-interactive automation.
rustup toolchain install stable
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
cargo audit
cargo build --releaseGenerated man pages are part of the user-facing command contract:
./target/release/jira completions man --dir /tmp/jira-man
test -s /tmp/jira-man/jira.1- Keep command behavior deterministic for CI and agents.
- Prefer structured JSON APIs and typed parsing over ad hoc string handling.
- Add focused tests near changed behavior; use
wiremockfor HTTP integration tests. - Never commit Jira tokens, OAuth client secrets, cookies, private issue data, or debug logs containing credentials.
- Mutating commands should support
--dry-runwhere practical and must respect--no-input. - Preserve stable JSON envelope fields unless the changelog documents a breaking change.
- Use a descriptive title and summary.
- Link related issues or release blockers.
- Include example commands or JSON output for command-surface changes.
- Update README, docs, examples, completions, and man pages when user-facing behavior changes.
- Keep PRs focused; unrelated refactors should be separate.
Release-impacting changes should verify:
- CI workflow passes on Linux, macOS, and Windows.
- Jira Cloud smoke workflow passes against the sandbox.
- Release archives include the binary, README, LICENSE, CHANGELOG, completions, and man pages.
- Homebrew and Scoop publishing jobs still know the expected archive names.