0.1.12 • Published 10 months ago

git-ai-assistant v0.1.12

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Git AI Commit

experiment

A powerful command-line tool that generates meaningful git commit messages using AI, with a beautiful interactive experience powered by Clack.

Features

FeatureDescription
🤖 Multiple AI ProvidersSupport for OpenAI, Deepseek, and Anthropic (Claude 3 Opus)
🎨 Beautiful Interactive CLIElegant user experience with Clack
⚙️ Highly CustomizableFlexible configuration via git-ai-assistance.config.ts
📝 Interactive EditingEdit generated commit messages before committing
🚀 Automatic Commit & PushOptional auto-commit and auto-push capabilities
🔄 Auto-stagingAutomatically stage all changes when no staged changes are found
🏷️ Enhanced Conventional CommitsImproved type and scope selection for conventional commit format

Installation

# Clone the repository
git clone https://github.com/yourusername/git-aicommit.git
cd git-aicommit

# Install dependencies
bun install

# Build the project
bun run build

# Link the CLI globally (optional)
bun link

Usage

# Generate a commit message (will auto-stage if enabled)
git-aicommit

# Or stage your changes manually first
git add .
git-aicommit

Configurations

Git AI Commit offers extensive configuration options to tailor the experience to your workflow. Configuration is managed through a TypeScript file that provides type safety and autocompletion in your editor.

Setting Up Configuration

  1. Create a configuration file in your project root:
# Copy the example configuration
cp git-ai-assistance.config.example.ts git-ai-assistance.config.ts

# Edit the configuration file with your preferred editor
nano git-ai-assistance.config.ts

Key Configuration Areas

AI Provider Selection

Choose between OpenAI, Deepseek, or Anthropic as your AI backend, with customizable parameters for each:

// Set your preferred default provider
defaultProvider: 'openai', // 'openai', 'deepseek', or 'anthropic'

// Configure each provider separately
openai: {
  model: 'gpt-4o',
  temperature: 0.7
},

Git Integration

Control how the tool interacts with your Git workflow:

git: {
  autoCommit: true,  // Automatically commit after generating a message
  autoPush: false,   // Push commits automatically
  autoStage: true    // Stage changes when none are staged
}

Commit Message Formatting

Customize how your commit messages are structured:

commitMessage: {
  format: 'conventional',  // Use conventional commit format
  includeEmoji: true,      // Add relevant emojis
  maxLength: 100           // Keep messages concise
}

Full Configuration Example

See the Configuration Options section below for a complete example configuration.

Configuration Options

// Example configuration
export default {
  // Default AI provider to use
  defaultProvider: 'openai', // 'openai', 'deepseek', or 'anthropic'
  
  // Provider-specific configurations
  openai: {
    // API key can be set via OPENAI_API_KEY environment variable
    apiKey: process.env.OPENAI_API_KEY,
    model: 'gpt-4o', // or 'gpt-3.5-turbo', etc.
    temperature: 0.7,
    maxTokens: 500
  },
  
  deepseek: {
    // API key can be set via DEEPSEEK_API_KEY environment variable
    apiKey: process.env.DEEPSEEK_API_KEY,
    model: 'deepseek-chat',
    temperature: 0.7,
    maxTokens: 500
  },
  
  anthropic: {
    // API key can be set via ANTHROPIC_API_KEY environment variable
    apiKey: process.env.ANTHROPIC_API_KEY,
    model: 'claude-3-opus-20240229', // Claude 3 Opus
    temperature: 0.7,
    maxTokens: 500
  },
  
  git: {
    autoCommit: true, // Automatically commit after generating the message
    autoPush: false, // Automatically push after committing
    autoStage: true, // Automatically stage all changes if no staged changes are found
    includeProviderInfo: true // Include the AI provider name in the commit message
  },
  
  commitMessage: {
    maxLength: 100, // Maximum length of the commit message
    includeEmoji: true, // Include emoji in the commit message
    format: 'conventional', // 'conventional' or 'simple'
    
    // Conventional commit configuration
    conventional: {
      // Types configuration with selection support
      types: [
        { value: 'feat', name: 'feat:     A new feature', emoji: '✨' },
        { value: 'fix', name: 'fix:      A bug fix', emoji: '🐛' },
        { value: 'docs', name: 'docs:     Documentation only changes', emoji: '📝' },
        { value: 'style', name: 'style:    Changes that do not affect the meaning of the code', emoji: '💄' },
        { value: 'refactor', name: 'refactor: A code change that neither fixes a bug nor adds a feature', emoji: '♻️' },
        { value: 'perf', name: 'perf:     A code change that improves performance', emoji: '⚡️' },
        { value: 'test', name: 'test:     Adding missing tests or correcting existing tests', emoji: '✅' },
        { value: 'build', name: 'build:    Changes that affect the build system or external dependencies', emoji: '🔨' },
        { value: 'ci', name: 'ci:       Changes to our CI configuration files and scripts', emoji: '👷' },
        { value: 'chore', name: 'chore:    Other changes that don\'t modify src or test files', emoji: '🔧' },
        { value: 'revert', name: 'revert:   Reverts a previous commit', emoji: '⏪' }
      ],
      
      // Scopes configuration with selection and requirement options
      scopes: [
        { value: 'core', name: 'core:     Core functionality', required: false },
        { value: 'config', name: 'config:   Configuration related', required: false },
        { value: 'ui', name: 'ui:       User interface', required: false },
        { value: 'git', name: 'git:      Git integration', required: false },
        { value: 'ai', name: 'ai:       AI integration', required: false }
      ]
    }
  }
}

Environment Variables

VariableDescription
OPENAI_API_KEYYour OpenAI API key
DEEPSEEK_API_KEYYour Deepseek API key
ANTHROPIC_API_KEYYour Anthropic API key

Advanced Usage

Conventional Commits

When using the conventional commit format, you can now interactively select:

SelectionDescription
TypeChoose from a list of commit types (feat, fix, docs, etc.)
ScopeSelect from predefined scopes or enter a custom one

Auto-staging

If no staged changes are found and autoStage is enabled, the tool will automatically stage all changes before generating a commit message.

Auto-push

When autoPush is enabled, the tool will automatically push your commit to the remote repository after committing.

License

MIT

0.1.12

10 months ago

0.1.11

10 months ago

0.1.10

10 months ago

0.1.9

10 months ago

0.1.8

10 months ago

0.1.7

10 months ago

0.1.6

10 months ago

0.1.5

10 months ago

0.1.4

10 months ago

0.1.3

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago