🎯

commit-message

🎯Skill

from appleboy/codegpt

VibeIndex|
What it does

Generates intelligent, context-aware git commit messages by analyzing staged changes using AI, saving time and improving code documentation.

📦

Part of

appleboy/codegpt(2 items)

commit-message

Installation

Install ScriptRun install script
bash < <(curl -sSL https://raw.githubusercontent.com/appleboy/CodeGPT/main/install.sh)
📖 Extracted from docs: appleboy/codegpt
4Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Automatically generates, formats, organizes, and improves git commit messages by analyzing your staged changes using AI. Use this skill when you want to create, write, review, or refine commit messages - whether you need to save time, maintain consistent formatting, or better describe your code changes.

Overview

# Generating Commit Messages

Step-by-Step Instructions

Installation

  1. Run the install script to download and set up CodeGPT:

```bash

bash < <(curl -sSL https://raw.githubusercontent.com/appleboy/CodeGPT/main/install.sh)

```

  1. Configure your AI provider in ~/.config/codegpt/.codegpt.yaml:

```yaml

openai:

provider: openai # or: azure, anthropic, gemini, ollama, groq, openrouter

api_key: your_api_key_here

model: gpt-4o

```

Basic Usage

  1. Stage your changes:

```bash

git add

```

  1. Generate and commit with AI-generated message:

```bash

codegpt commit --no_confirm

```

Note:

- Commit messages are generated in English by default. Use --lang to specify a different language.

- You don't need to manually run git diff to review your changes. CodeGPT automatically reads the staged changes and analyzes them to generate an appropriate commit message.

Advanced Options

  • Set language: Use --lang to specify output language (default: en)

```bash

codegpt commit --lang zh-tw --no_confirm # For Traditional Chinese

codegpt commit --lang zh-cn --no_confirm # For Simplified Chinese

```

To change the default language permanently:

```bash

codegpt config set output.lang en # or zh-tw, zh-cn

```

  • Use specific model: Override the default model

```bash

codegpt commit --model gpt-4o --no_confirm

```

  • Exclude files: Ignore certain files from the diff analysis

```bash

codegpt commit --exclude_list ".lock,.json" --no_confirm

```

  • Custom templates: Format messages according to your team's style, including Jira issue tracking

```bash

# Basic custom format

codegpt commit --template_string "[{{.summarize_prefix}}] {{.summarize_title}}" --no_confirm

# With Jira issue number using template variables

codegpt commit --template_vars "JIRA_NUM=GAIA-2704" \

--template_string "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}\n\n{{.summarize_message}}" \

--no_confirm

```

Available built-in template variables:

- {{.summarize_prefix}} - Conventional commit type (feat, fix, docs, etc.)

- {{.summarize_title}} - The commit title

- {{.summarize_message}} - The full commit message body

You can define custom variables with --template_vars "KEY=VALUE" and use them as {{.KEY}}

  • Amend commit: Update the previous commit message

```bash

codegpt commit --amend --no_confirm

```

Examples of Inputs and Outputs

Example 1: Adding a new feature

Input:

```bash

# After making changes to add user authentication

git add src/auth.go src/middleware.go

codegpt commit --no_confirm

```

Output:

```txt

feat: add user authentication middleware

Implement JWT-based authentication system with login and token validation

middleware for protecting API endpoints.

```

Example 2: Fixing a bug

Input:

```bash

# After fixing a null pointer error

git add src/handlers/user.go

codegpt commit --no_confirm

```

Output:

```txt

fix: resolve null pointer exception in user handler

Add nil checks before accessing user object properties to prevent crashes

when processing requests with missing user data.

[Preview shown, waiting for confirmation...]

```

Example 3: Chinese language commit

Input:

```bash

git add docs/README.md

codegpt commit --lang zh-tw --no_confirm

```

Output:

```txt

docs: 更新專案說明文件

新增安裝步驟說明以及使用範例,讓新使用者能夠快速上手。

```

Example 4: Jira issue tracking integration

Input:

```bash

# Stage your changes

git add Dockerfile docker-compose.yml

# Generate commit with Jira issue number using template variables

codegpt commit --template_vars "JIRA_NUM=GAIA-2704" \

--template_string "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}

{{.summarize_message}}" \

--no_confirm

```

Output:

```txt

feat(GAIA-2704): update trivy scan for cicd

  • Add appuser (uid=1000) to run containers as non-root user
  • Fix trivy scan DS002: Image user should not be 'root'
  • Create /.app directory with proper ownership for externalimage

```

Tip: Save the template in config file to avoid typing it every time:

```bash

# Set the template once

codegpt config set git.template_string "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}

{{.summarize_message}}"

# Then just provide the Jira number when committing

codegpt commit --template_vars "JIRA_NUM=GAIA-2704" --no_confirm

```

Example 5: Excluding lock files

Input:

```bash

git add .

codegpt commit --exclude_list "package-lock.json,yarn.lock,go.sum" --no_confirm

```

Output:

```txt

refactor: reorganize project structure

Move utility functions into separate packages and update import paths

throughout the codebase for better modularity.

(Lock files excluded from analysis)

```

Common Edge Cases

No staged changes

Issue: Running codegpt commit without staging any changes.

Solution: Stage your changes first:

```bash

git add

codegpt commit

```

API timeout for large diffs

Issue: Large changesets may cause API timeouts.

Solution: Increase timeout or commit changes in smaller batches:

```bash

codegpt commit --timeout 60s --no_confirm

```

Generated files in diff

Issue: Lock files or generated code affecting commit message quality.

Solution: Exclude these files from analysis:

```bash

codegpt commit --exclude_list "package-lock.json,yarn.lock,.min.js,dist/" --no_confirm

```

API key not configured

Issue: Error message about missing API key.

Solution: Set up your API key in the config file:

```bash

codegpt config set openai.api_key "your-api-key-here"

```

Custom commit format required

Issue: Team requires specific commit message format with Jira issue tracking numbers.

Solution: Use --template_vars with custom templates.

Basic usage:

```bash

codegpt commit --template_vars "JIRA_NUM=GAIA-2704" \

--template_string "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}

{{.summarize_message}}" \

--no_confirm

# Result: feat(GAIA-2704): update trivy scan for cicd

```

Save template in config for convenience:

```bash

# Set the template once

codegpt config set git.template_string "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}

{{.summarize_message}}"

# Then just provide the Jira number

codegpt commit --template_vars "JIRA_NUM=GAIA-2704" --no_confirm

```

Or edit ~/.config/codegpt/.codegpt.yaml:

```yaml

git:

template_string: "{{.summarize_prefix}}{{if .JIRA_NUM}}({{.JIRA_NUM}}){{end}}: {{.summarize_title}}\n\n{{.summarize_message}}"

```

Create a shell function for convenience:

Add to your ~/.bashrc or ~/.zshrc:

```bash

function commit() {

if [ -z "$1" ]; then

echo "Usage: commit "

return 1

fi

codegpt commit --template_vars "JIRA_NUM=$1" --no_confirm

}

# Usage: commit GAIA-2704

```

Auto-extract from git branch name (advanced):

If your branch follows naming convention like feature/GAIA-2704-add-security-scan:

```bash

# Add to ~/.bashrc or ~/.zshrc

function commit-auto() {

local branch=$(git rev-parse --abbrev-ref HEAD)

local jira_num=$(echo "$branch" | grep -oE '[A-Z]+-[0-9]+' | head -1)

if [ -z "$jira_num" ]; then

echo "No Jira issue found in branch: $branch"

codegpt commit --no_confirm

else

echo "Detected Jira issue: $jira_num"

codegpt commit --template_vars "JIRA_NUM=$jira_num" --no_confirm

fi

}

# Usage: commit-auto (auto-detects GAIA-2704 from branch name)

```

Network proxy required

Issue: API calls fail due to corporate firewall.

Solution: Configure proxy settings:

```bash

codegpt commit --proxy http://proxy.company.com:8080

# Or for SOCKS proxy

codegpt commit --socks socks5://127.0.0.1:1080

```