关于 commit-message
此技能根据相关 Git 状态和差异起草提交信息,默认采用 Conventional Commits。它帮助开发者准确概括更改;暂存、提交和推送仍由外围工作流处理。
主要功能
- 01按请求范围筛选更改
- 02检查已暂存、未暂存和未跟踪更改
- 03起草 Conventional Commits 标题与正文
- 04指出迁移事项和必要后续操作
- 05依据差异核验提交信息
适用场景
- 01为已暂存更改撰写提交信息
- 02概括限定范围内的仓库更改
- 03起草注明必要操作的提交信息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alannkl/ skills --skill commit-message安装后在 Claude Code 中输入/commit-message确认已加载。
详细介绍
提交消息
根据真实 Git 状态起草提交消息文本。默认使用 Conventional Commits。正文应简洁,说明行为、影响和所需后续操作。此技能仅负责起草消息;暂存、提交、修改提交和推送属于外围工作流。
工作流
-
确定范围。
- 如果用户明确缩小了范围,请遵守该边界并忽略无关更改。
- 如果存在已暂存的更改,除非用户要求总结所有更改,否则默认仅总结已暂存的更改。
- 如果没有已暂存的更改,则使用相关的未暂存、更改未跟踪文件或用户提供的更改。
- 总结未跟踪文件前,先检查其内容;
git diff不会显示这些文件的内容。 - 如果没有相关更改,请如实说明,不要凭空编写消息。
- 如果无关更改会导致单条总结失真,请清楚地分开说明,或先询问是否要将它们合并到一条消息中。
-
检查差异和上下文。
- 使用可用的 Git 状态和差异信息,识别所选范围内已暂存、未暂存和未跟踪的更改。
- 如果无法获取 Git 数据或仓库没有提交记录,请如实说明,并仅根据已提供的上下文起草。
- 如果有近期提交消息,请参考。除非用户另有要求,否则遵循仓库特定的格式、范围和正文惯例。
- 对于代码更改,检查周边上下文,确保你要写的每个标题和要点都能对应到具体差异。
- 对于文档、配置、工作流、资源文件、锁文件或生成文件,应描述其实际影响,而非只列出文件名。
- 对于二进制、生成或体积很大的文件,应根据文件名、元数据、清单或相邻源代码更改进行总结,而不是倾倒文件内容。
- 明确指出迁移、环境变量、配置更改、API 或架构更改、数据重写、依赖项更改和手动操作;提及敏感密钥时不得泄露其值。
-
选择 Conventional Commit 标题。
- 有明确范围时,使用
type(scope): summary。 - 没有明确范围时,使用
type: summary。 - 有破坏性更改时,使用
type(scope)!: summary或type!: summary。 - 常见类型:
feat、fix、docs、refactor、test、chore、perf、build、ci、style、revert。 - 选择能体现受影响产品领域、包、模块、命令或工作流的范围;不要按文件扩展名选范围,也不要勉强使用不准确的范围。
- 根据更改的行为意图选择类型,而非根据文件类型。面向用户的修复和功能绝不能归为
chore。新增或有实质变化的指令性文本属于feat;纠正错误或误导性行为属于fix;仅作说明的内容才属于docs。 - 第一行应简洁。概括主要更改,并在差异明确时说明原因。
- 使用祈使语气的现在时:
fix auth refresh handling,而不是fixed或fixes。 - 如果用户要求仅提供标题、简短消息或单行消息,则只返回标题。
- 有明确范围时,使用
-
撰写正文。
-
如果标题已经涵盖更改内容,省略正文;对于单一用途的小型差异,通常如此。
-
对于包含多个部分的差异,默认使用以下基本格式:
type(scope): <主要更改的简要概述> - <关键行为、功能、修复或实现更改;必要时说明影响> - <关键行为、功能、修复或实现更改;必要时说明影响> -
优先采用以行为为导向的要点,而不是逐个文件总结。
-
如果代码层面或业务逻辑方面的影响有助于说明变更的重要性,请予以说明。不要超出差异内容和附近上下文进行推测。
-
仅当请求、分支名称、差异内容或仓库惯例中包含问题引用时,才添加问题引用。
-
仅针对迁移、环境变量、手动步骤或运维人员后续操作添加
Required actions:。 -
对于重大变更,添加
BREAKING CHANGE:页脚行,以便 Conventional Commit 工具检测。
-
-
完成前进行验证。
- 确认标题类型与变更的主要意图相符。
- 确认每个要点都有差异内容作为依据。
- 确认影响代码的要点描述了用户可见行为、系统行为、契约或有意义的实现影响。
- 确认重大变更和必需操作分别列出,而不是埋在常规变更要点中。
- 仅在确实运行过测试时,才声称测试已通过。
- 返回提交消息文本;如有帮助,可简短提出代为提交。
示例
包含两个页脚的正文:
feat(api)!: require cursor pagination for users
- Replace offset pagination with cursor pagination on the users endpoint
- Add queue configuration for the cursor backfill worker
Required actions:
- Set `CURSOR_BACKFILL_QUEUE` before enabling the worker
BREAKING CHANGE: `GET /users` no longer accepts `page` or `per_page`; clients must send `cursor` and `limit`.
评论
支持 Markdown