360 Secure SkillHub
360 安全技能中心

AI Commit Message Generator

该 Skill 通过 git 命令检查仓库与暂存改动,分析 diff 内容后按 Conventional Commits 规范判定类型、作用域与描述,生成提交信息并执行提交;支持自定义信息、amend、dry-run,并提示无暂存改动、初始提交、超大 diff 和合并冲突等边界情况。

afine907
afine907
热度 16.02
最近更新 2026-05-15 12:11:50
分类:开发依赖:代码执行 / 读写文件应用场景:工作流 / 自动化脚本 / 模板

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ai-commit
Metadata
name
commit
description
Analyze staged changes and generate semantic commit messages automatically. Reads git diff --staged, analyzes code changes, generates conventional commit messages.

Commit - Git Commit Generator

Analyze staged changes and generate semantic commit messages.

Commands

Command Description
/commit Analyze staged changes and generate commit
/commit -m "message" Commit with custom message
/commit --amend Amend previous commit
/commit --dry-run Preview commit message without committing

Workflow

Step 1: Pre-flight Check

# Verify git repository
git rev-parse --is-inside-work-tree

# Check staged changes
git diff --staged --quiet

# Get staged files
git diff --staged --name-only

If no staged changes: Check git status, prompt user to stage changes first.

Step 2: Analyze Staged Changes

git diff --staged
git diff --staged --stat

Analysis Focus:

  1. Change Type Detection

    • New files → feat
    • Modified files → Based on content
    • Deleted files → refactor or chore
  2. Semantic Type Classification

    • feat: New feature/functionality
    • fix: Bug fix
    • refactor: Code restructuring without behavior change
    • docs: Documentation only
    • style: Formatting, whitespace
    • test: Tests
    • chore: Build, dependencies, tooling
    • perf: Performance improvements
    • ci: CI/CD changes
    • build: Build system changes
  3. Scope Identification

    • Extract from file paths: src/auth/login.ts → scope: auth

Step 3: Generate Commit Message

Format:

<type>(<scope>): <subject>

[optional body]

[optional footer(s)]

Rules:

  • Subject in imperative mood: "add" not "added"
  • No period at end
  • Max 50 characters for subject
  • Body wrap at 72 characters
  • Footer: BREAKING CHANGE:, Closes #123, Fixes #456

Examples:

feat(auth): add JWT token refresh mechanism

fix(payment): handle duplicate callback correctly

Payment callback was processing duplicates due to missing idempotency
check. Added unique constraint on (order_id, callback_id).

Fixes #234

refactor(db)!: migrate from MySQL to PostgreSQL

BREAKING CHANGE: Database migration required.

Step 4: Execute Commit

# Commit with generated message (author is global git user)
git commit -m "type(scope): subject" [-m "optional body"]

Or use heredoc for multi-line:

git commit -m "$(cat <<'EOF'
type(scope): subject

optional body
EOF
)"

Verify:

git log -1 --oneline
git show HEAD --stat

Best Practices

DO:

  • ✅ Analyze ALL staged changes before generating
  • ✅ Use imperative mood ("add" not "added")
  • ✅ Keep subject under 50 characters
  • ✅ Add body for complex changes
  • ✅ Reference issues when applicable
  • ✅ Group related changes in one commit

DON'T:

  • ❌ Commit without staged changes
  • ❌ Mix unrelated changes
  • ❌ Use past tense
  • ❌ End subject with period
  • ❌ Include sensitive information
  • ❌ Skip pre-commit hooks (unless explicitly requested)

Edge Cases

No Staged Changes

git status
# Prompt: "No staged changes. Would you like to stage all changes?"

Empty Repository (Initial Commit)

git rev-parse HEAD 2>/dev/null || git commit -m "chore: initial commit"

Large Diff (>500 lines)

git diff --staged --stat
git diff --staged --unified=1
# Suggest splitting into multiple commits

Merge Conflicts

git status | grep "both modified"
git commit -m "merge: resolve conflicts in <files>"

Hooks Integration

  • pre-commit: Runs automatically
  • commit-msg: Runs automatically
  • If hooks fail: Report error, suggest fixes
  • Bypass with --no-verify only if explicitly requested