git-committer
SKILL.md
Git Committer
这个 skill 帮助分析 git 变更内容并生成符合项目规范的 commit message。
何时使用
当用户出现以下情况时调用此 skill:
- 用户说"提交代码"、"commit"、"生成 commit message"
- 用户需要将当前的代码变更提交到 git 仓库
- 用户想要查看变更并生成提交信息
- 用户执行 git 相关操作时
工作流程
-
查看 git 状态
- 执行
git status查看当前变更状态 - 执行
git diff查看未暂存的变更 - 执行
git diff --cached查看已暂存的变更
- 执行
-
环境配置文件过滤
- 自动识别并过滤环境配置文件的修改
- 常见的环境配置文件包括:
- vite.config.ts/js
- webpack.config.js
- .env 及其变体文件
- 其他构建工具配置文件
- 这些文件的修改不会生成提交计划,直接忽略
-
分析变更内容
- 识别变更的文件类型和影响范围
- 理解变更的目的和功能
- 确定变更的类型([feature]、[fix]、[update]、[docs]、[style]、[refactor]、[test]、[chore]、[bump] 等)
-
判断是否需要拆分提交
- 如果变更涉及多个功能点,必须按功能拆分提交
- 如果变更涉及不同类型的修改(如同时有新功能和 bug 修复),必须拆分提交
- 每个提交应该只做一件事,保持提交的原子性
-
拆分提交策略
- 按功能模块拆分:将同一功能相关的文件归为一组
- 按变更类型拆分:将新功能、bug 修复、重构等分开提交
- 按文件类型拆分:将代码变更、配置变更、文档变更分开提交
- 每次提交前使用
git add添加对应的文件,然后提交
-
生成 commit message
- 遵循项目使用的方括号格式规范
- 格式:
[type](scope): subject - subject 使用中文描述,首字母小写,不以句号结尾
- 包含简洁的描述和必要的详细说明
- 如果有相关 issue,添加引用
- 标题最大宽度 100 字符
-
用户确认流程
- 必须先展示生成的 commit message 和提交计划,等待用户明确同意后再执行提交
- 只有在用户明确确认后,才能执行
git commit -m "message" - 绝对禁止在未获得用户明确确认的情况下自动执行 git commit 命令
- 必须在展示 commit message 后等待用户的明确回应,如"确认"、"可以"、"同意"等
- 如果用户对 commit message 提出修改意见,必须根据用户意见调整后重新展示并等待确认
- 如果需要拆分提交,必须为每个提交单独获得用户确认
- 如果用户明确要求合并提交,则以用户为准
-
执行提交
- 根据用户确认的提交计划执行提交操作
- 使用
git add选择性添加文件 - 执行
git commit -m "message"提交变更 - 确保环境配置文件不会被添加到提交中
-
推送代码(可选)
- 所有提交完成后,询问用户是否需要推送代码
- 如果用户需要推送,调用 push-code skill 来处理推送操作
Commit 类型
[feature]: 针对用户的新特性,而不是针对构建脚本的新特性[fix]: 针对用户修复的错误,而不是针对构建脚本的修复[update]: 特性更新、功能优化,而不是新增特性或修复 bug[docs]: 文档修改[style]: 不会影响代码含义的更改(空格,格式,缺少分号等)[refactor]: 重构生产代码,例如重命名变量;既不是修复问题也不是新增功能[test]: 添加缺失的测试用例,重构测试用例;生产代码无变化[chore]: 更新构建工具等;生产代码无变化[bump]: 新版本
示例
单个提交示例
[feature](auth): 添加用户登录功能
- 实现登录表单及验证
- 添加 JWT token 处理
- 更新认证状态管理
[fix](api): 解决数据获取超时问题
- 修复连接超时配置
- 添加失败请求重试机制
[update](crowd-rule): 优化 disabled 模式下的显示逻辑
- 在 disabled 模式下,如果包含或排除没有数据,不展示对应的 group
- 如果包含和排除都没有数据,不展示整个 crowd-rule__content 区域
拆分提交示例
假设同时修改了用户登录功能和修复了 API 超时问题,应该拆分为两个提交:
提交 1:
[feature](auth): 添加用户登录功能
- 实现登录表单及验证
- 添加 JWT token 处理
- 更新认证状态管理
提交 2:
[fix](api): 解决数据获取超时问题
- 修复连接超时配置
- 添加失败请求重试机制
假设同时修改了代码和配置文件,应该拆分为两个提交:
提交 1:
[refactor](utils): 简化日期格式化逻辑
- 提取通用日期函数
- 提高代码可读性
提交 2:
[chore](vite): 切换代理目标到开发环境
- 将代理目标从测试环境切换到开发环境
- 注释掉测试环境 token 配置
注意事项
- 绝对禁止自动执行 git commit,必须获得用户的明确确认
- 必须先展示生成的 commit message,等待用户明确同意后再执行提交
- 如果用户未明确表示同意,任何情况下都不得执行 git commit 命令
- 执行提交前必须再次确认用户的明确意图
- 环境配置的修改(如 vite.config.ts 中的代理配置等)不要自动提交,直接忽略
- 自动识别并过滤常见的环境配置文件,包括但不限于:
- vite.config.ts/js
- webpack.config.js
- .env 及其变体文件
- 其他构建工具配置文件
- 严格区分提交类型,确保使用正确的类型:
[feature]:新功能[fix]:bug 修复[update]:功能优化、联调过程中的改进[refactor]:代码重构[chore]:构建工具、配置文件修改
- 如果变更复杂,可以提供多个 commit message 选项供用户选择
- commit message 使用中文描述
- subject 首字母自动小写,自动移除末尾句号
- scope 可选,如果提供会自动转换为小写
- 如果有破坏性变更,需要添加 BREAKING CHANGE 说明
- 每个提交应该只做一件事,保持提交的原子性
- 只要涉及多个功能点,就必须按功能拆分提交
- 如果变更涉及不同类型的修改,必须拆分提交
- 拆分提交时,使用
git add选择性添加文件 - 如果用户明确要求合并提交,则以用户为准
技术实现细节
-
环境配置文件识别:
- 建立环境配置文件列表,包括常见的构建工具配置文件和环境变量文件
- 在分析变更时,自动过滤这些文件的修改
-
变更分析:
- 执行
git diff --name-only获取所有变更文件 - 过滤掉环境配置文件
- 对剩余文件进行分析,确定变更类型和范围
- 执行
-
提交计划生成:
- 基于过滤后的变更文件生成提交计划
- 确保环境配置文件的修改不会出现在提交计划中
-
用户确认流程:
- 展示生成的 commit message 和提交计划
- 等待用户的明确确认
- 只有在用户确认后才执行提交操作
-
执行提交:
- 使用
git add选择性添加文件 - 执行
git commit -m "message"提交变更 - 确保环境配置文件不会被添加到提交中
- 使用
常见错误处理
-
用户未确认直接提交:
- 错误:在未获得用户明确确认的情况下执行 git commit 命令
- 处理:必须严格遵守用户确认流程,先展示 commit message,等待用户确认后再执行提交
-
提交类型选择错误:
- 错误:将联调优化标记为 [fix],或将 bug 修复标记为 [feature]
- 处理:严格按照提交类型定义选择正确的类型,确保提交信息准确反映变更内容
-
环境配置文件未过滤:
- 错误:将 vite.config.ts 等环境配置文件的修改包含在提交计划中
- 处理:自动识别并过滤环境配置文件,确保这些修改不会出现在提交计划中
-
提交拆分不当:
- 错误:将多个功能点或不同类型的修改合并在一个提交中
- 处理:根据功能模块和变更类型拆分提交,保持提交的原子性
-
用户确认后执行失败:
- 错误:用户确认后执行 git commit 命令失败
- 处理:检查错误信息,根据需要调整提交策略,确保提交成功
Weekly Installs
8
Repository
gtbsgfe/gt-fe-bsg-skillsFirst Seen
Feb 12, 2026
Security Audits
Installed on
cursor8
claude-code6
cline5
gemini-cli5
antigravity5
github-copilot5