Interactive CLI tool for generating conventional commit messages with AI assistance.
A simple, fast, and human-in-the-loop commit workflow. Select files, let AI analyze your changes, review the message, and commit—all from the terminal.
✨ Interactive file selection - TUI-based multi-select of changed files
🤖 AI-powered messages - GitHub Copilot integration for smart commit messages
📝 Conventional Commits - Automatically formats to type(scope): description
✏️ Manual review - Edit the generated message before committing
⚡ Fallback analyzer - Works without Copilot with built-in smart analysis
🔍 Verbose mode - Debug details with -v flag
# Build
cargo build --release
# Run
./target/release/ez_commit
# With verbose output
./target/release/ez_commit -v- Select files - Arrow keys to navigate, Space to toggle, Enter to confirm
- Review message - AI generates a commit message with summary + bullet points
- Edit (optional) - Your editor opens for final tweaks
- Commit - Changes are committed with your reviewed message
🚀 ez_commit v0.1.0
📝 Found 3 file(s) with changes
• src/main.rs
• src/ai.rs
• src/analyzer.rs
→ Select files to commit
✓ 2 file(s) selected
⚙️ Analyzing changes... done
🤖 Generating commit message... done
📄 Generated commit message:
feat(ai): add support for detailed messages
- Enhanced prompt structure
- Improved extraction logic
✏️ Opening editor for review...
✅ Commit created successfully!
- git.rs - Git operations (status, diff, staging, commits)
- tui.rs - Interactive terminal UI for file selection
- ai.rs - Copilot CLI integration with smart extraction
- analyzer.rs - Fallback analyzer (works without Copilot)
- editor.rs - Opens user's editor for message review
- main.rs - Orchestrates the workflow
Git Status → TUI Selection → Diff Analysis → AI Message → Editor Review → Commit
- Rust 1.70+ (build time only)
- Git installed
- GitHub Copilot CLI (optional, uses fallback if unavailable)
For AI-powered messages, install the new Copilot CLI:
# macOS
brew install gh-copilot
# Windows (winget)
winget install GitHub.Copilot.CLI
# Verify
copilot --versionSee: https://github.com/github/copilot-cli
USAGE:
ez_commit [OPTIONS]
OPTIONS:
-d, --diff-limit <DIFF_LIMIT> Limit diff size (chars) [default: 5000]
-t, --tree-depth <TREE_DEPTH> Max depth for project tree [default: 3]
-v, --verbose Show debug output
-h, --help Print help
Generated messages follow Conventional Commits:
feat(scope): short description (max 72 chars)
- What was changed and why
- Another change
- Reason for change
feat- New featurefix- Bug fixrefactor- Code restructuringchore- Maintenance (deps, docs, config)test- Adding testsstyle- Formatting changesdocs- Documentation updates
- Analyzes your diff and project structure
- Sends to Copilot with structured prompt
- Extracts clean message from response using markers
- Falls back to analyzer if Copilot unavailable
Smart analyzer detects:
- Change type from diff patterns (feat/fix/refactor/etc.)
- Scope from modified file paths
- Description from context (function names, imports, etc.)
All dependencies use permissive licenses (MIT or Apache 2.0):
git2- Git libraryratatui- Terminal UI frameworkcrossterm- Cross-platform terminal controlclap- CLI argument parsinglog/env_logger- Loggingtokio- Async runtimeanyhow/thiserror- Error handlingserde/serde_json- Serializationtempfile- Temporary file handling
MIT License - See LICENSE file
Copyright (c) 2025 Evgenii Zinner