17 releases
Uses new Rust 2024
| 0.0.17 | Mar 22, 2026 |
|---|---|
| 0.0.16 | Mar 21, 2026 |
| 0.0.11 | Feb 27, 2026 |
#414 in Configuration
750KB
4K
SLoC
plzplz
cargo install plzplz
A simple cross-platform task runner with helpful defaults. Tasks are stored
in a plz.toml and run with plz [task]

For the following example, plz format would run cargo fmt --check, and then
suggest cargo fmt if it fails:
# Check formatting
[tasks.format]
run = "cargo fmt --check"
fail_hook = { suggest_command = "cargo fmt" }
Add plz to a project
In a rust, uv, or pnpm repo run this to initialize a new plz.toml:
plz init
To add a new task, you can run:
plz add [task]
Default files
If you run
plz plz
plzplz will create files in in ~/.plz that you can add your own default tasks to for different environments.
TOML Reference
Basic task
[tasks.build]
run = "cargo build"
Run commands in parallel or serial
[tasks.check]
run_parallel = ["plz lint", "plz format"]
[tasks.fix]
run_serial = ["cargo fmt", "cargo clippy --fix --allow-dirty"]
Working directory
[tasks.frontend]
dir = "packages/web"
run = "pnpm dev"
Failure hooks
On failure, suggest a command for the user to run:
[tasks.check]
run_parallel = ["plz lint", "plz format"]
fail_hook = { suggest_command = "plz fix" }
Display a message on failure:
[tasks.deploy]
run = "deploy.sh"
fail_hook = { message = "Check the deploy logs at /var/log/deploy.log" }
Run a shell command on failure:
[tasks.test]
run = "cargo test"
fail_hook = "notify-send 'Tests failed'"
Dependencies
~19–56MB
~795K SLoC