Opinionated governance CLI for RFC-driven AI-assisted software development.
AI-assisted coding is powerful but undisciplined:
- Phase skipping: Jumping from idea to implementation without specification
- Documentation drift: Specs and code diverge silently
- No enforceable governance: "Best practices" become optional suggestions
The result: faster typing, slower thinking, unmaintainable systems.
Day 1: "Let's add caching!"
Day 2: AI generates 500 lines of Redis integration
Day 7: "Wait, did we agree on Redis or Memcached?"
Day 14: Half the team implements one, half the other
Day 30: Two incompatible caching layers, no spec, nobody knows why
Day 1: govctl rfc new "Caching Strategy"
Day 2: RFC-0015 defines: Redis, TTL policy, invalidation rules
Day 3: govctl rfc advance RFC-0015 impl
Day 7: Implementation complete, traceable to spec
Day 10: govctl rfc advance RFC-0015 test
Day 14: Tests pass, govctl rfc advance RFC-0015 stable
govctl enforces phase discipline on software development:
- RFC is the source of truth — No implementation without specification
- Phases are enforced — Each phase has explicit gates and invariants
- Governance is executable — Rules are checked, not suggested
- Work is traceable — Tasks link back to the specs that authorized them
govctl manages three artifact types:
- RFCs — Specifications that must exist before implementation
- ADRs — Architectural decisions with explicit consequences
- Work Items — Tracked tasks tied to governance artifacts
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ SPEC │ ──► │ IMPL │ ──► │ TEST │ ──► │ STABLE │
└─────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ │ │
▼ ▼ ▼ ▼
RFC must Code must Tests must Bug fixes
be normative match spec pass gates only
govctl governs itself by its own rules. This repository is the first proof.
✅ Teams frustrated by AI "code now, think later" patterns ✅ Projects where specifications drift from implementations ✅ Organizations needing audit trails for AI-generated code ✅ Developers who believe discipline enables velocity
❌ Not for "move fast and break things" workflows ❌ Not for projects without review processes
# Install
cargo install govctl
# Or with TUI dashboard
cargo install govctl --features tui
# Initialize project
govctl init
# Create your first RFC
govctl rfc new "Feature Title"
# Validate
govctl checkOptionally, show the project is governed by govctl:
[](https://github.com/govctl-org/govctl)For complete documentation, see the User Guide.
Run the TUI with govctl tui (requires --features tui when installing from source).
Keymap highlights:
1/r,2/a,3/wto switch lists from the dashboardj/kor arrows to move;Enterto open;Escto go back/to filter lists by ID/title/status;Enterto accept;Escclears filterg/Gjump to top/bottom;n/pstep through matches when filtered?toggles help;qquits
- Not a code generator — govctl doesn't write code; it ensures code follows specs
- Not a documentation editor — govctl enforces structure, not style
- Not about "faster coding" — govctl is about correct coding
- Not a framework — govctl is a constraint system
- Not a general issue tracker — Work items exist to trace work back to specs, not to replace Jira
govctl doesn't need a dedicated MCP (Model Context Protocol) integration because the CLI itself is the tool.
Modern AI coding agents (Claude, Cursor, Codex, etc.) can already invoke shell commands. Every govctl operation is a single CLI call. MCP would add complexity without adding capability.
The CLI is the universal interface. Every shell-capable agent already speaks it.
For Claude/Cursor users: govctl init installs a /gov <task> command — a complete governed workflow in one invocation.
govctl has an opinionated workflow. Before contributing:
- Read the governance RFC to understand the model
- All features require an RFC before implementation
- Phase gates are enforced — this is the point, not bureaucracy
This workflow isn't for everyone, and that's okay. If you thrive in structured, spec-driven development, we'd welcome your contributions.
MIT
"Discipline is not the opposite of creativity. It is the foundation."