Commando
A terminal tool for creating structured, conventional Git commits through an interactive, safe, and user-friendly workflow.
Commando guides you step by step, validates your input, lets you preview and edit before committing, and guarantees you never create an invalid commit message.
✨ Features
- Interactive Workflow – Guided prompts for every commit field
- Preview & Edit – Review and fix any field before committing
- Type-Safe Domain Model – Invalid commits are impossible
- Conventional Commits – Fully compliant with the specification
- Git-Native Execution – Runs real
git commitcommands - Zero Dependencies – Pure Rust, standard library only
🚀 Quick Start
Installation
Usage
# Stage your changes
# Run Commando
Or without installing:
🧭 Example
Checking for staged changes...
✓ Staged changes detected
=== Create Commit Message ===
Type: feat
Scope: auth
Description: implement OAuth 2.0 authentication
=== Preview ===
feat(auth)!: implement OAuth 2.0 authentication
Choice (y/e/n): y
✓ Commit created successfully!
SHA: abc1234
📝 Commit Message Format
Commando follows the Conventional Commits format:
<type>[optional scope][!]: <description>
[optional body]
[optional footer(s)]
Examples
feat: add user authentication
fix(parser): handle tokenizer edge case
feat(api)!: redesign authentication endpoints
✏️ Edit Before Commit
After previewing your commit message, you can:
- Proceed with the commit
- Edit any field (type, scope, description, body, breaking change)
- Abort safely without side effects
All valid input is preserved while editing.
🧠 Architecture (High-Level)
Commando uses a clean, layered design:
- CliController – Orchestrates the workflow
- InputCollector – Handles interactive input
- CommitData – Mutable intermediate state
- CommitMessage – Immutable, validated domain model
- CommitExecutor – Executes Git commands
📖 Full diagrams and internals:
→ docs/architecture.md
🧪 Development
Requirements
- Rust 1.70+
- Git
🛣 Roadmap
- Configuration file support
- Custom commit types
- Commit linting for CI
- Git hooks integration
- TUI interface
📋 Full roadmap:
→ docs/roadmap.md
❓ FAQ
Is Commando required for Git?
No. It’s an optional wrapper around git commit.
Does it work with existing hooks and workflows?
Yes. Commando executes native Git commands.
Can I skip Commando for quick commits?
Absolutely. Use git commit as usual.