Claude Code Plugins

Community-maintained marketplace

Feedback

git-commit-writer

@fsyyft-go/kratos-layout
0
0

Git 提交信息智能生成工具。基于 Claude 对代码改动和用户意图的深度分析,自动生成符合项目规范的 commit message,支持四层验证机制确保质量。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name git-commit-writer
description Git 提交信息智能生成工具。基于 Claude 对代码改动和用户意图的深度分析,自动生成符合项目规范的 commit message,支持四层验证机制确保质量。

Git Commit Writer

概述

基于 Claude 智能分析的 Git 提交信息(commit message)生成工具,100% 大模型驱动,无需脚本。

核心特点

  • 🤖 Claude 驱动:完全依赖 Claude 的理解、分析和判断能力
  • 🎯 智能分析:自动分析 git diff 和用户意图,识别改动类型和范围
  • 四层验证:格式、一致性、语言、改动一致性严格验证
  • 📝 直接输出:简洁高效,直接输出可用的 commit message

工作原理: Claude 分析 git diff + 用户上下文 → 自动判断类型和范围 → 生成符合规范的 commit message → 四层严格验证 → 输出最终结果

使用场景

  • 日常开发提交
  • 代码审查后修正
  • 重构后的提交
  • 多功能合并提交
  • 紧急修复提交

快速开始

基本用法(默认暂存区模式)

# 默认:针对当前暂存区中的文件生成 commit message
"帮我为暂存的改动生成 commit message"
"分析暂存区并生成 commit"

未提交文件模式

# 如果没有暂存区,但有未提交的文件
"为未提交的改动生成 commit message"
"分析当前工作区的改动"

分支对比模式

# 指定分支:对比指定分支的所有变更
"为 develop 分支的变更生成 commit message"
"分析相对于 feature/skill 分支的所有改动"
"对比 master 分支,生成合并 commit message"

高级用法

# 结合 git diff 和用户上下文
"我为 web 服务添加了用户认证功能,帮我生成 commit message"
"修复了 data 层的数据库连接问题,生成 commit message"

最佳实践

  • 明确指定分析范围(暂存区/未提交文件/分支)
  • 提供简洁的改动意图说明
  • 让 Claude 自主判断类型和范围

工作流程

分析范围判断阶段

用户输入分析
  ↓
判断用户是否指定分支?
  ├─ 是 → 进入分支对比模式
  │     ├─ 运行: git diff <target-branch> --name-only
  │     ├─ 运行: git diff <target-branch>
  │     └─ 获取所有变更文件和具体改动内容
  │
  └─ 否 → 进入默认模式
        ├─ 检查暂存区(git diff --staged --name-only)
        │     ├─ 有暂存文件 → 进入暂存区模式
        │     │     ├─ 运行: git diff --staged
        │     │     └─ 分析暂存的改动内容
        │     │
        │     └─ 无暂存文件 → 进入未提交文件模式
        │            ├─ 运行: git diff --name-only
        │            ├─ 运行: git diff
        │            └─ 分析未提交的改动内容
        │
        └─ 收集用户提供的上下文和意图说明

信息收集阶段

暂存区模式

运行 git status → 确认暂存状态
运行 git diff --staged --name-only → 获取变更文件列表
运行 git diff --staged → 分析具体改动内容
识别文件类型和路径

未提交文件模式

运行 git status → 确认工作区状态
运行 git diff --name-only → 获取变更文件列表
运行 git diff → 分析具体改动内容
识别文件类型和路径

分支对比模式

运行 git status → 确认当前分支
运行 git diff <target-branch> --name-only → 获取变更文件列表
运行 git diff <target-branch> → 分析具体改动内容
识别文件类型和路径
识别变更涉及的 commit 数量和历史

共同步骤

收集用户提供的上下文说明和改动意图
统计改动规模(文件数量、行数变化)
识别改动的关键特征

智能分析阶段

分析改动类型(新功能/bug修复/重构/文档等)
识别影响范围(web/task/api/internal 等)
提炼核心业务意图
判断改动的重要性和影响程度
识别与现有功能的关系

生成候选阶段

选择合适的 commit type(feat/fix/docs 等)
确定准确的 scope(标准范围或路径范围)
提炼简洁的中文描述(祈使句、首字母小写、不加句号)
生成完整的 commit message 格式

四层验证阶段

第一层:格式验证

  • 检查 <类型>(<范围>): <描述> 格式
  • 验证类型有效性(11 种之一)
  • 验证范围可选性
  • 验证描述非空

第二层:类型-范围一致性验证

  • 检查类型与范围是否匹配
  • 参考类型-范围映射表
  • 验证逻辑合理性

第三层:语言和语法验证

  • 检查中文表述规范性
  • 检查语法正确性
  • 避免口语化表达
  • 验证长度要求(50 字以内)

第四层:代码改动一致性验证

  • 对比 git diff 内容
  • 验证 message 与改动是否一致
  • 检查是否遗漏重要信息

输出结果阶段

直接输出最优的 commit message
提供简要的改动分析说明
标注验证通过的所有层级

四层验证机制

验证原则:四层验证必须全部通过,任何一层不通过都必须调整。

第一层:格式验证

验证规则:必须符合 <类型>(<范围>): <描述> 格式

正则表达式^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([^)]+\))?: .+$

通过条件

  • 类型有效(11 种之一)
  • 范围可选(如无范围,格式为 <类型>: <描述>
  • 描述不为空且以空格开头

不通过示例

  • 添加用户功能(缺少类型)
  • Feat: 添加用户功能(类型大写)
  • feat(web)(缺少描述)

第二层:类型-范围一致性验证

类型-范围映射表

类型 推荐范围 可接受范围 不可接受范围
feat api, web, task, internal, .claude/skills/* docs test, build
fix data, biz, service, server, web, task internal docs, build, ci
docs 任意范围(包含具体路径) - -
style internal, biz, service, data - api, docs
refactor internal, biz, service, data, server - docs, test
perf data, biz, service internal docs, test
test biz, service, data internal docs, api
build Makefile, go.mod, dockerfile - internal, biz
ci .github/, .gitlab-ci. - internal, biz
chore 任意范围(维护性工作) - -
revert 与原 commit 相同的范围 - -

通过条件:类型和范围必须在上表中匹配

不通过示例

  • test(api): 添加接口测试(test 不应在 api)
  • feat(docs): 添加新功能(feat 应在代码文件)

第三层:语言和语法验证

中文表述规范

  • ✅ 使用标准现代汉语
  • ✅ 语法正确,表述清晰
  • ✅ 使用祈使句(添加、修复、更新、重构等)
  • ✅ 首字母小写(除非专有名词)
  • ✅ 结尾不加句号
  • ❌ 避免口语化("搞定"、"弄好"、"整一下")
  • ❌ 避免冗余("了"、"一下"等)

通过条件检查

  1. 是否使用中文?
  2. 是否使用祈使句?
  3. 是否首字母小写?
  4. 是否结尾无句号?
  5. 是否无口语化表达?
  6. 描述长度是否在 50 字以内?

不通过示例

  • feat: 添加了用户管理功能(使用"了")
  • fix: 修复数据连接的问题("的"字冗余)
  • feat: 添加用户功能。(结尾有句号)
  • feat: 搞定数据库连接(口语化)

第四层:代码改动一致性验证

验证方法:对比生成的 message 与实际 git diff 内容

通过条件

  1. message 描述的改动类型与 diff 内容一致

    • feat: diff 中包含新增的函数/方法/接口
    • fix: diff 中包含错误修复或逻辑调整
    • refactor: diff 中主要是结构调整而非功能变化
  2. message 指定的范围与 diff 中变更的文件路径一致

    • scope 为 web: 变更文件应在 cmd/web/ 或相关
    • scope 为 .claude/skills/*: 变更文件应在该路径下
  3. message 描述的功能与 diff 内容匹配

    • 描述"添加用户管理":diff 应包含用户管理相关代码
    • 描述"修复数据库连接":diff 应包含数据库相关修复
  4. 没有遗漏重要信息

    • Breaking change: 必须在 message 中体现
    • 重大功能: 必须准确描述
    • 安全修复: 必须明确说明

不通过示例

  • ❌ diff 显示修改了 10 个文件,但 message 只提到"添加用户功能"(过于笼统)
  • ❌ message 说"修复 web 服务崩溃",但 diff 主要改动在 data 层(范围不符)
  • ❌ diff 包含 API 接口变更,但 message 未提及(遗漏重要信息)

验证流程控制

第一层验证 → 通过 → 第二层验证 → 通过 → 第三层验证 → 通过 → 第四层验证 → 通过 → 输出
   ↓              ↓              ↓
 不通过          不通过          不通过
   ↓              ↓              ↓
 调整格式      调整类型/范围   优化语言      完善描述
   ↓              ↓              ↓
 重新验证       重新验证       重新验证       重新验证

核心规范摘要

Commit 类型列表(11 种)

  • feat: 新功能
  • fix: bug 修复
  • docs: 文档变更
  • style: 代码格式(不影响功能)
  • refactor: 重构(不是新功能也不是修复)
  • perf: 性能优化
  • test: 测试相关
  • build: 构建系统或外部依赖
  • ci: CI 配置和脚本
  • chore: 其他不修改 src 或 test 文件
  • revert: 回退之前的 commit

范围选择规则

标准范围:web, task, api, internal, docs, build, ci, chore

路径范围:点号分隔的路径(如 .claude/skills/go-import-enforcer

中文表述基本要求

  • 必须使用中文
  • 祈使句,首字母小写
  • 结尾不加句号
  • 简洁明了(50 字以内)
  • 避免口语化表达

常见问题

Q: 如何处理多种类型的改动?

A: 识别主要改动类型:

  • 70% 以上为一种类型 → 使用该类型
  • 功能为主,修复为辅 → 拆分提交(feat + fix)
  • 重构为主,新功能为辅 → 拆分提交(refactor + feat)
  • 无法明确区分 → chore (需在描述中详细说明)

Q: 改动涉及多个范围怎么办?

A: 分析改动涉及的模块:

  • 单一职责改动 → 选择最直接的范围
  • 跨层改动 → 选择最上层的范围
  • 全局性改动 → 不使用范围
  • 配置性改动 → build 或 ci

Q: 如何描述重构性改动?

A: 判断改动本质:

  • 主要是修复 bug → fix
  • 主要是改进设计 → refactor
  • 修复 + 轻微重构 → fix (在描述中说明)
  • 重构 + 顺便修复 → refactor (在描述中说明)

Q: 如何避免描述过于笼统或过于细节?

A: 提炼核心意图:

  • ✅ "添加用户管理功能"(适中)
  • ❌ "添加功能"(过于笼统)
  • ❌ "添加了包含增删改查的用户管理功能"(过于细节)

参考资料

详细的 commit 规范、丰富示例和决策流程,请参考: