planwarden
planwarden is a CLI planning enforcer for AI agents. The agent explores the repo and gathers facts; planwarden validates the planning contract, pushes back on weak slices, writes a durable plan file, walks the user through review one section at a time, and only surfaces execution chunks instead of a wall of text.
Install
# Homebrew (recommended)
# crates.io
Quick Start
# 1. Investigate first, then ask for the contract.
# 2. Send structured findings to review.
# 3. Write the full plan file once review is ready.
# 4. Review the draft section by section in chat.
# 5. Approve, start, and execute the plan.
Agent Workflow
- The agent investigates the repo and request.
- The agent runs
planwarden schema review plan|taskto see the contract. - The agent sends structured findings to
planwarden review plan|task. planwardenreturnsdecision,missing,questions,pushback, andnormalized_plan.- The agent resolves any gaps before creating the plan file.
- The agent writes the full plan with
planwarden create. - The agent immediately runs
planwarden review-next <plan-file> --format text, shows only that section in chat, and advances review until every section is done. - The agent approves and starts the plan only after review is complete, then uses
planwarden next <plan-file> --format textfor execution chunks. - The plan moves through
draft -> approved -> in_progress -> done.
Working Contract
- The plan file is the source of truth; chat should stay chunked.
- The agent decides whether a concern applies and must justify
applicable = false. planwardenenforces consistency, slice size, and required coverage.- Bugfix work must prove red before green.
Commands
planwarden schema review plan|taskplanwarden review plan|taskplanwarden create plan|taskplanwarden review-next <plan-file>planwarden advance-review <plan-file>planwarden next <plan-file>planwarden approve <plan-file>planwarden start <plan-file>planwarden set-status <plan-file> <item-id> <todo|in-progress|done>planwarden complete <plan-file>
Release Automation
Pushing a new version to main can be automated the same way as distill:
- build release artifacts with
cargo-dist - publish the crate to crates.io
- update the Homebrew formula in
nclandrei/homebrew-tap - publish the GitHub release
Required GitHub Actions secrets:
CARGO_REGISTRY_TOKEN: crates.io publish token forplanwardenHOMEBREW_TAP_TOKEN: GitHub token with push access tonclandrei/homebrew-tap
License
MIT