git-suggest 🤖
A lightweight command-line tool that automatically generates and suggests contextual, high-quality Git commit messages based on your staged code changes. Powered by GitHub Copilot CLI, it helps you write smarter commits with less typing.
Features
- AI-Powered: Uses GitHub Copilot CLI to generate intelligent commit messages
- Contextual: Analyzes your staged changes to create relevant commit messages
- Conventional Commits: Follows semantic commit message conventions
- Shell Integration: Auto-complete support for
git commit -m commands
- Cross-Platform: Works on Windows, macOS, and Linux
- Interactive Mode: Choose from suggestions or edit messages before committing
- Type Detection: Automatically detects commit types (feat, fix, docs, etc.)
Quick Start
Installation
npm install -g git-suggest
Prerequisites
git-suggest requires:
The installation script will attempt to install missing prerequisites automatically.
Setup
📖 Usage
Basic Usage
Interactive Mode
The tool will analyze your staged changes and present you with options:
📝 Suggested commit message:
"feat(auth): add OAuth2 login integration"
? What would you like to do?
❯ Use this message
Edit this message
Generate another suggestion
Cancel
Shell Integration
After running git-suggest setup, you can get autocomplete suggestions when typing:
git commit -m "feat(data-<TAB>
# Automatically suggests: "feat(data-validation): add email format validation"
Command Options
git-suggest generate --type feat
git-suggest generate --type fix --scope auth
git-suggest generate --prefix "hotfix:"
git-suggest generate --no-interactive
Available Commands
git-suggest generate - Generate commit message from staged changes
git-suggest setup - Setup shell integration
git-suggest check - Check if prerequisites are installed
git-suggest --help - Show help information
🎯 Commit Types
git-suggest supports all conventional commit types:
feat | A new feature |
fix | A bug fix |
docs | Documentation only changes |
style | Changes that do not affect the meaning of the code |
refactor | A code change that neither fixes a bug nor adds a feature |
perf | A code change that improves performance |
test | Adding missing tests or correcting existing tests |
chore | Changes to the build process or auxiliary tools |
ci | Changes to CI configuration files and scripts |
build | Changes that affect the build system or external dependencies |
revert | Reverts a previous commit |
🔧 Configuration
Shell Support
git-suggest supports:
- Bash (Linux, macOS, Windows WSL)
- Zsh (macOS default, Linux)
- Fish (Cross-platform)
Environment Variables
SHELL - Automatically detected shell type
HOME - User home directory for config files
📋 Examples
Example 1: New Feature
git add src/components/Login.tsx
git-suggest generate
Example 2: Bug Fix
git add src/utils/validation.js
git-suggest generate
Example 3: Documentation
git add README.md
git-suggest generate
🛠️ Development
Building from Source
git clone https://github.com/techuila/git-suggest.git
cd git-suggest
npm install
npm run build
npm link
Running Tests
npm test
Linting
npm run lint
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Development Setup
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Make your changes
- Commit your changes (
git-suggest generate 😉)
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
📞 Support
🔗 Related Projects
Made with ❤️ by developers, for developers. Happy committing! 🎉