UNPKG

@cirrusinvicta/ai-commit-toolkit

Version:

AI-powered conventional commit generation with centralized configuration, OpenAI integration, and automated deployment workflows

372 lines (255 loc) โ€ข 11.7 kB
# ๐Ÿค– AI Commit Toolkit [![npm version](https://badge.fury.io/js/%40cirrusinvicta%2Fai-commit-toolkit.svg)](https://badge.fury.io/js/%40cirrusinvicta%2Fai-commit-toolkit) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) One-command setup for AI-powered conventional commits with OpenAI integration, automated versioning, and seamless deployment workflows. ## โšก Quick Start ```bash # Navigate to your project cd your-project # Install locally (recommended for customization) npm install --save-dev @cirrusinvicta/ai-commit-toolkit # Setup AI commit toolkit npx ai-commit-toolkit setup # Set your OpenAI API key export OPENAI_API_KEY="your-api-key-here" # Start using AI-powered commits git add . git commit # AI generates your commit message automatically! ``` ## ๐ŸŽฏ What You Get - โœ… **Intelligent AI commit message generation** using OpenAI GPT-4o-mini with comprehensive change analysis - โœ… **Smart file filtering** automatically excludes `node_modules/`, `package-lock.json`, and other noise - โœ… **Multi-file change handling** generates cohesive messages for complex commits with multiple files - โœ… **Conventional commit format enforcement** with commitlint integration - โœ… **Consistent scope mapping system** with predefined scopes for features, technical areas, and cross-cutting concerns - โœ… **Husky hooks integration** for seamless git workflow automation - โœ… **Centralized configuration system** for easy customization and team consistency - โœ… **Accurate length validation** correctly validates subject line length (not total message) - โœ… **Semantic versioning support** with automated releases - โœ… **Robust fallback mechanisms** when AI is unavailable - โœ… **Comprehensive testing suite** with 35+ validation tests ## ๐Ÿ“ฆ Installation ### Project-Specific Installation (Recommended) ```bash # Navigate to your project directory cd your-project # Install as a dev dependency npm install --save-dev @cirrusinvicta/ai-commit-toolkit # Setup the toolkit in your project npx ai-commit-toolkit setup ``` **Why Local Installation?** - โœ… **Project-specific configuration** - Each project can have customized AI prompts and settings - โœ… **Version consistency** - Team members use the same toolkit version - โœ… **Better customization** - Edit `config/ai-prompts.conf` to tailor AI behavior for your project - โœ… **No global conflicts** - Avoid version conflicts between different projects ### Global Installation (Alternative) ```bash npm install -g @cirrusinvicta/ai-commit-toolkit ai-commit-toolkit setup --type generic # or ansible, vue, react ``` > **Note on Project Types**: Currently, all project types (`generic`, `ansible`, `vue`, `react`) use identical configurations and templates. The `--type` parameter is provided for future extensibility when project-specific customizations are added. For now, using any type will result in the same setup. ## ๏ฟฝ Updating ### Quick Update (Recommended) ```bash # Update package and preserve your customizations npm update @cirrusinvicta/ai-commit-toolkit npx ai-commit-toolkit setup ``` โœ… **Safe**: Preserves all your custom prompts and configurations โœ… **Automatic**: Adds new features without manual intervention ### Reset to Latest (with backup) ```bash # Reset everything to latest defaults with backup npx ai-commit-toolkit setup --force --backup ``` โš ๏ธ **Note**: Creates backup files, overwrites configurations ๐Ÿ“– **Detailed Instructions**: See [Update Workflow Guide](docs/UPDATE_WORKFLOW.md) for comprehensive update scenarios and troubleshooting. ## ๏ฟฝ๐Ÿ› ๏ธ Usage ### Automated Usage (Recommended) ```bash # Make your changes git add . # Commit with AI (hook automatically generates message) git commit # โœจ Editor opens with AI-generated conventional commit message ``` ### Manual AI Generation ```bash # Generate and commit in one step npx ai-commit # Interactive helper with guidance npx ai-commit-helper # Test your setup npx ai-commit-test ``` ## ๐Ÿท๏ธ Scope Mapping & Consistency The toolkit includes a comprehensive scope mapping system to ensure consistent commit messages across your team: ### Quick Scope Reference ```bash # View all available scopes npx ai-commit-toolkit scopes # View specific categories npx ai-commit-toolkit scopes --category features # Interactive scope helper npm run ai-commit-scopes ``` ### Example Scope Usage ```bash # Feature areas with hierarchical scopes feat(mail.allow-block-lists): add search functionality to Allow/Block Lists page feat(dns.policies): implement custom filtering rules feat(reports.email-traffic): add real-time monitoring dashboard # Cross-cutting concerns chore(a11y): add aria labels to form inputs on settings page feat(mobile): improve touch navigation for dashboard perf(api): optimize database queries for better response times # Technical improvements fix(ui): resolve button alignment issues in mail interface docs(api): update authentication endpoint documentation test(auth): add integration tests for multi-factor authentication ``` ### Predefined Scope Categories - **๐ŸŽฏ Feature Areas**: `mail`, `dns`, `reports`, `settings`, `auth`, `billing`, `dashboard`, `admin` - **โš™๏ธ Technical Areas**: `api`, `ui`, `db`, `perf`, `security`, `infra`, `docs`, `tests` - **๐Ÿ”„ Cross-cutting**: `a11y`, `i18n`, `mobile`, `seo`, `analytics`, `monitoring` ๐Ÿ“– **Detailed Guide**: See [`docs/SCOPE_MAPPING.md`](docs/SCOPE_MAPPING.md) for comprehensive scope mapping documentation. ## ๐Ÿงช Testing ```bash # Comprehensive validation (35+ tests total) npm test # Individual test suites npm run test:config # Configuration system (23 tests) npx ai-commit-test # Basic validation (12 tests) # Test with actual commit generation npx ai-commit-test --create-test-file ``` ## โš™๏ธ Configuration The AI Commit Toolkit uses a centralized configuration system for easy customization. ### Project Types The toolkit supports different project types via the `--type` parameter: - `generic` (default) - Universal configuration suitable for any project - `ansible` - For Ansible playbooks and roles - `vue` - For Vue.js applications - `react` - For React applications **Current Status**: All project types currently use identical configurations. The framework exists for future expansion when project-specific templates and prompts are added. ## ๐Ÿš€ Recent Improvements ### Enhanced AI Commit Generation - **Comprehensive Change Analysis**: No more truncated diffs - AI now sees full context of your changes - **Smart Multi-File Handling**: Generates cohesive messages for complex commits with many files - **Intelligent File Filtering**: Automatically excludes noise files like `node_modules/` and `package-lock.json` - **Accurate Length Validation**: Correctly validates only the subject line length (72 chars) instead of total message - **Better Commit Categorization**: Improved logic for choosing appropriate conventional commit types and scopes ### Example: Before vs After **Before** (limited context): ``` chore(husky): add commit-msg and prepare-commit-msg hooks โš ๏ธ Warning: Message exceeds 100 characters (false positive) ``` **After** (full context): ``` chore(setup): initialize AI commit toolkit - Add Husky hooks for commit message validation - Configure commitlint for conventional commits - Create environment and configuration files - Install project dependencies and scripts ``` ### AI Prompts Configuration After setup, all AI prompts and settings are stored in `config/ai-prompts.conf`: ```bash # Main AI commit generation prompt AI_COMMIT_PROMPT="Generate a conventional commit message..." # OpenAI API Configuration OPENAI_MODEL="gpt-4o-mini" OPENAI_MAX_TOKENS=100 OPENAI_TEMPERATURE=0.3 # File exclusion patterns (automatically filtered from AI context) AI_COMMIT_EXCLUDE="node_modules/ package-lock.json .env" # Git ignore patterns (what should never be committed) # Note: package-lock.json is NOT excluded - it should be committed for reproducible builds GITIGNORE_EXCLUDE="node_modules .env" # Commit message validation MAX_COMMIT_LENGTH=100 WARN_COMMIT_LENGTH=72 ``` ### Customizing Prompts To customize the AI prompts for your project: 1. **After setup**: Edit `config/ai-prompts.conf` in your project root 2. **Modify prompts**: Update `AI_COMMIT_PROMPT` to match your project's style and requirements 3. **Adjust exclusions**: Add patterns to `AI_COMMIT_EXCLUDE` to filter out files you don't want in AI context 4. **Fine-tune settings**: Change OpenAI model, token limits, or validation rules 5. **Test changes**: Run `npx ai-commit-test` to validate your configuration **Example Customizations:** ```bash # For a React project AI_COMMIT_EXCLUDE="node_modules/ package-lock.json .env build/ dist/" # For more detailed messages OPENAI_MAX_TOKENS=150 OPENAI_TEMPERATURE=0.4 # For stricter length limits MAX_COMMIT_LENGTH=72 WARN_COMMIT_LENGTH=60 ``` ### ๐Ÿ›ก๏ธ Configuration Protection & Updates The AI Commit Toolkit automatically protects your custom configurations during package updates: #### **Safe Updates (Default)** ```bash # Update the package npm update @cirrusinvicta/ai-commit-toolkit # Run setup - preserves your customizations npx ai-commit-toolkit setup ``` **What happens:** - โœ… Your custom prompts and settings are preserved - โœ… New configuration options are automatically added - โœ… Scripts are updated to the latest version - โœ… No user intervention required #### **Force Update with Backup** ```bash # Reset to defaults with backup npx ai-commit-toolkit setup --force --backup ``` **What happens:** - ๐Ÿ“‹ Creates timestamped backup files (`.backup.timestamp`) - ๐Ÿ”„ Overwrites all configurations with latest templates - ๐Ÿ’พ Allows manual recovery from backups if needed #### **Available Options** | Option | Description | | -------------------- | --------------------------------------- | | `--force` | Overwrite existing configuration files | | `--backup` | Create backups before overwriting | | `--no-skip-existing` | Process all files (don't skip existing) | #### **Update Workflow Example** ```bash # Step 1: Update package npm update @cirrusinvicta/ai-commit-toolkit # Step 2: Safe update (preserves customizations) npx ai-commit-toolkit setup # If you want to reset everything: npx ai-commit-toolkit setup --force --backup # Check what changed git diff config/ai-prompts.conf ``` For detailed update workflows and troubleshooting, see [`docs/UPDATE_WORKFLOW.md`](docs/UPDATE_WORKFLOW.md). ### Environment Variables Required: - `OPENAI_API_KEY`: Your OpenAI API key Optional: - `OPENAI_MODEL`: Override the default model (default: gpt-4o-mini) - `OPENAI_MAX_TOKENS`: Override token limit (default: 100) ## ๐Ÿ†˜ Support - ๐Ÿ“– [Documentation](docs/) - ๐Ÿค [Contributing Guide](CONTRIBUTING.md) - ๐Ÿ› [Issue Tracker](https://github.com/CirrusInvicta/ai-commit-toolkit/issues) ## ๐Ÿค Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on: - Development setup and workflow - Coding standards and best practices - Testing requirements and procedures - Release process and versioning - How to submit bug reports and feature requests ## ๐Ÿ“„ License MIT License - see [LICENSE](LICENSE) file for details. --- **Made with โค๏ธ by Cirrus Invicta** Transform your commit workflow with intelligent AI that understands your full codebase context and generates meaningful, accurate commit messages for even the most complex changes.