Commit Description Generator
Overview
This skill helps you generate or modify git commit descriptions following a standardized format. It can automatically analyze git diff to extract change information.
Output Format
Commit描述必须遵循以下格式:
commit修改总述, 一句话概括核心修改, 独占一行
commit修改功能逐项介绍, 每行一个修改功能点介绍
Format Rules
第一行(总述):
- 一句话概括本次commit的核心修改
- 简洁明确,突出主要功能或修复的问题
- 独占一行,无空行分隔
逐项介绍:
- 每行一个修改功能点
- 使用简洁的技术语言
- 可以包含文件名、函数名等具体信息
Auto Analysis Process (MUST DO)
步骤1:自动获取变更信息
当用户请求生成commit描述时,必须自动执行以下命令获取变更信息:
# 场景A:分析未提交变更(工作区/暂存区)
# 获取未暂存的变更
git diff --stat
# 获取已暂存的变更
git diff --staged --stat
# 获取完整的diff内容(用于分析具体修改)
git diff
# 获取已暂存的完整diff
git diff --staged
# 场景B:分析已提交的commit
# 获取最近一个commit的diff(与父提交的差异)
git show --stat HEAD
# 获取最近一个commit的详细diff
git show HEAD
# 获取最近N个commit的diff
git diff HEAD~1 HEAD --stat # 最近1个commit
git diff HEAD~3 HEAD --stat # 最近3个commits
# 获取commit的完整信息(包含消息)
git log -1 --format="%H %s %b"
场景区分
根据用户需求判断分析目标:
| 用户需求 | 使用的Git命令 |
|---|---|
| 生成未提交变更的描述 | git diff, git diff --staged |
| 生成最近一个已提交commit的描述 | git show HEAD, git diff HEAD~1 HEAD |
| 生成最近N个commits的描述 | git diff HEAD~N HEAD |
| 获取commit元信息 | git log -1 --format="%H %s %b" |
步骤2:分析已提交的Commit
当用户请求生成已提交commit的描述时,执行:
# 获取最近一个commit的摘要信息
git show --stat HEAD
# 获取完整diff(用于分析具体修改内容)
git show HEAD
# 或者使用diff方式
git diff HEAD~1 HEAD
分析要点:
- 从
git show HEAD提取:修改的文件列表、变更行数、具体修改的函数/逻辑 - 注意:已提交的commit可能包含多个文件的修改,需要综合分析所有变更
- 推断修改意图时,考虑文件类型和修改内容的组合
步骤3:智能推断变更意图
根据文件变更模式推断修改目的:
| 文件变更模式 | 可能的修改意图 |
|---|---|
| 新增文件 | 新增功能 |
| 删除文件 | 移除功能 |
| 修改配置文件 | 配置变更 |
| 修改测试文件 | 添加/修复测试 |
| 修改文档 | 文档更新 |
| 重构同类型文件 | 代码重构 |
| 修复bug相关文件 | Bug修复 |
步骤4:生成描述
根据分析结果生成:
总述
- 使用简洁的语言概括核心变更
- 突出主要功能或修复的问题
- 可以适当详细,但不要冗长
逐项介绍(每行一个功能点)
- 每个功能点使用动词开头
- 保持语言简洁明了
Input Processing
用户输入场景
用户说"帮我生成commit描述"或"分析最近一个commit":
- 首先检查是否有未提交的变更
- 如果有未提交变更,分析未提交变更
- 如果没有未提交变更(工作区干净),自动分析最近一个已提交的commit
- 使用
git diff HEAD~1 HEAD或git show HEAD获取变更
用户明确说"生成已提交commit的描述"、"分析最近commit":
- 必须运行
git show HEAD或git diff HEAD~1 HEAD分析最近一个commit - 基于实际代码变更生成描述
- 必须运行
用户提供了变更信息:
- 基于用户提供的变更信息生成描述
- 也可以运行 git diff 辅助确认
用户指定获取特定范围的变更:
git diff HEAD~1- 上一个commit(简写)git diff HEAD~1 HEAD- 上一个commit(显式)git diff HEAD~3 HEAD- 最近3个commitsgit diff origin/main- 与远程的差异
Quality Guidelines
必须遵守
- 总述简洁明确,概括核心变更
- 逐项介绍使用简洁的动宾短语
- 避免冗余信息,每个功能点一行讲完
- 使用技术术语但保持简洁
- 自动执行git diff分析实际变更
避免
- 模糊的功能描述如"修改了一些代码"
- 与技术实现无关的描述
- 标点符号(总述不需要句号)
Examples
Example 1 - 自动分析
User Input: "帮我生成commit描述"
Auto Analysis:
$ git diff --stat
src/user/user.service.ts | 20 +++++++
src/user/user.controller.ts| 15 +++---
2 files changed, 35 insertions(+), 10 deletions(-)
Output:
添加用户登录功能
新增UserService.login()方法
更新UserController登录路由
Example 2 - 删除文件
User Input: "帮我生成commit描述"
Auto Analysis:
$ git diff --stat
docs/old-guide.md | 200 ------------
README.md | 10 ++--
2 files changed, 10 insertions(+), 200 deletions(-)
Output:
清理废弃文档
删除过时的旧指南文档
更新README相关说明
Example 3 - Bug修复
User Input: "帮我生成commit描述"
Auto Analysis:
$ git diff
- // 缺少空值检查
+ if (user == null) return null;
+ // 添加空值检查
Output:
修复空指针异常
添加用户对象空值检查
优化错误处理逻辑
Example 4 - 重构
User Input: "帮我生成commit描述"
Auto Analysis:
$ git diff --stat
src/utils/helper.ts | 50 ++++++------
src/services/parser.ts | 100 +++++++++++++-------
2 files changed, 80 insertions(+), 70 deletions(-)
Output:
重构工具类代码
提取公共方法到Helper类
优化解析器逻辑
Example 5 - 分析已提交的commit
User Input: "生成最近一个已提交commit的描述"
Auto Analysis:
$ git show --stat HEAD
commit abc1234567890
Author: Zhang San <zhangsan@example.com>
Date: Mon Mar 2 10:30:00 2026 +0800
添加用户登录功能
src/user/user.service.ts | 50 +++++++++++++++++++++++++
src/user/user.controller.ts| 30 +++++++-------
2 files changed, 80 insertions(+), 10 deletions(-)
$ git show HEAD
// 详细的代码变更diff
Output:
添加用户登录功能
新增UserService.login()方法
更新UserController登录路由
集成JWT令牌生成
Example 6 - 工作区干净时自动分析最近commit
User Input: "帮我生成commit描述"
Auto Analysis:
$ git status
On branch main
nothing to commit, working tree clean
# 工作区干净,自动分析最近commit
$ git diff HEAD~1 HEAD --stat
src/auth/jwt.ts | 20 +++++++
src/auth/login.ts | 15 +++---
2 files changed, 35 insertions(+), 10 deletions(-)
Output:
实现JWT认证功能
新增JWT令牌生成和验证逻辑
更新登录接口返回token
Output Delivery
完成commit描述后,直接输出描述内容,无需额外说明。如果需要修改现有描述,请先展示修改后的完整描述,询问用户是否满意。
如果需要实际执行git commit,可以使用git-master技能协助完成提交。
Summary
关键点:
- 用户请求commit描述时,必须自动运行
git diff --stat和git diff分析变更 - 如果工作区干净(无未提交变更),自动分析最近一个已提交的commit(使用
git show HEAD或git diff HEAD~1 HEAD) - 根据实际代码变更生成描述,而不是凭空编造
- 格式必须符合要求:总述概括核心变更,逐项介绍每行一个功能点
- 如果git diff为空或无法获取变更,再询问用户具体修改内容
Source: falcon-infra/falconfs — distributed by TomeVault.