用 writing-commit-messages Skill 写出规范的 Conventional Commit

前言

用 AI 辅助写代码已经很常见,但提交信息往往还是一笔糊涂账:updatefix stuffWIP 这类消息在团队协作里几乎没法检索,Changelog 自动生成工具也读不懂。Conventional Commits 规范用类型前缀、可选 scope 和正文,把提交变成「人能读、机器也能解析」的结构化文本;问题在于,让 Agent 每次都自觉遵守同一套规则并不容易。

writing-commit-messages 正是为这件事准备的 Agent Skill:把 Conventional Commits 的格式、类型表、好坏示例和破坏性变更写法写进 SKILL.md,Agent 在写 commit 时按同一套指令执行。本文介绍它是什么、核心规则、如何安装启用,以及典型用法。

这是什么

writing-commit-messages 来自 GitHub 仓库 spencerpauly/awesome-cursor-skills,目录为 resources/writing-commit-messages/。仓库将其归在 Workflow 一类,官方一句话说明是:撰写带类型前缀、scope 和有意义描述的 Conventional Commit 信息。

Skill 本身是一份可复用的 SKILL.md 指令文件。按 Agent Skills 通用格式,可在 Cursor、Claude Code、Codex CLI 等支持该标准的 AI 编程工具中使用。frontmatter 中声明了:

  • name: writing-commit-messages
  • description: Write clear, conventional commit messages with proper type prefixes, scopes, and body content.
  • user-invocable: true(支持用户主动调用)

它解决的核心问题很具体:约束 Agent 生成清晰、一致、可被工具解析的提交信息,而不是随口写一句「改了一点东西」。

核心功能与规范

Skill 要求提交信息对人和机器都有用,并采用 Conventional Commits 常见结构:

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

<optional body>

<optional footer>

主题行规则

  • 主题(subject)控制在 50 个字符以内
  • 使用祈使语气:写 add feature,不要写 added featureadding feature
  • 类型前缀之后的首字母不要大写
  • 主题行末尾不加句号

类型(type)

Type 适用场景
feat 面向用户的新功能
fix 缺陷修复
refactor 不改变行为的代码重组
docs 文档变更
test 新增或更新测试
chore 构建、CI、工具链、依赖等
perf 性能优化
style 格式/空白调整(不是指 CSS)
ci CI/CD 流水线变更
revert 回滚先前提交

这与 Conventional Commits 1.0.0 的约定一致:feat / fix 对应 SemVer 的 MINOR / PATCH;带 BREAKING CHANGE 或类型后的 ! 则对应 MAJOR。

Scope(可选)

用括号标明受影响的代码区域,例如:

  • feat(auth): add OAuth2 login flow
  • fix(api): handle null response from payments endpoint
  • refactor(db): extract query builder into module

正文需要时再写,重点解释 为什么,而不是重复 diff 里已经能看到的「改了什么」。页脚可放破坏性变更说明、关联 Issue、共同作者等,例如:

BREAKING CHANGE: rename `getUserById` to `findUser`

Closes #456
Co-authored-by: Name <email>

破坏性变更

若本次提交引入破坏性变更,Skill 要求:

  1. 在 type 后加 !,例如:feat(api)!: change auth token format
  2. 在 footer 中写 BREAKING CHANGE:,并附上迁移说明

何时提交

Skill 还约束提交粒度:

  • 一次提交对应一个逻辑变更
  • 不要把重构和功能开发混在同一次提交里
  • 不要提交半成品(可用 git stash
  • 功能分支上可频繁提交,合并前按需 squash

安装与启用

方式一:手动放入项目(Cursor)

awesome-cursor-skills 仓库说明:把 SKILL.md 复制到项目的 .cursor/skills/ 目录后,Agent 会自动发现。可按下面结构放置:

.cursor/skills/writing-commit-messages/SKILL.md

也可放到用户级目录 ~/.cursor/skills/,便于多个项目共用。Cursor 官方文档还写明会从 .agents/skills/~/.agents/skills/ 加载,并为兼容 Claude / Codex 读取 .claude/skills/.codex/skills/ 等路径。

原始文件地址:

https://github.com/spencerpauly/awesome-cursor-skills/blob/main/resources/writing-commit-messages/SKILL.md

方式二:用 skills CLI 安装

vercel-labs/skills 提供的 npx skills 可从 GitHub 仓库安装指定 Skill。针对本 Skill,可按目标 Agent 选用:

安装到 Cursor:

npx skills add spencerpauly/awesome-cursor-skills --skill writing-commit-messages --agent cursor

安装到 Claude Code:

npx skills add spencerpauly/awesome-cursor-skills --skill writing-commit-messages --agent claude-code

需要全局安装时可加 -g。安装后,在 Cursor Agent 对话里可用 / 搜索并调用技能名(例如 /writing-commit-messages),也可在相关上下文中由 Agent 自动选用。

典型用法示例

启用后,让 Agent 根据当前改动写提交信息即可。Skill 给出的正反例如下。

推荐写法:

feat(dashboard): add real-time notification bell
fix: resolve race condition in WebSocket reconnect
refactor(api): consolidate error handling middleware
test: add integration tests for payment webhook
chore: upgrade TypeScript to 5.4

带正文的修复示例:

fix(checkout): prevent duplicate order submissions

The submit button was not disabled after the first click,
allowing users to create multiple orders. This caused
duplicate charges in Stripe.

应避免的写法:

fixed stuff
WIP
update
changes
asdf

实际对话里可以这样触发,例如:

请根据当前暂存区改动写一条 Conventional Commit 提交信息,并执行提交。

或显式调用:

/writing-commit-messages
请为这次支付回调相关的修复写 commit message。

Agent 应按 Skill 选择合适的 type / scope,主题行用祈使语气,必要时补充 body 或 BREAKING CHANGE footer。

适用场景与注意事项

适合这些情况:

  • 团队已采用或计划采用 Conventional Commits,希望 Agent 输出与人工规范一致
  • 需要从提交历史自动生成 Changelog,或配合 semantic-release 等工具做版本 bump
  • 多人协作、Code Review 时希望提交历史可检索、可分类
  • 与同仓库的 creating-pr 等 Workflow Skill 搭配,保持 PR 标题与 commit 风格统一

使用时注意:

  • Skill 约束的是消息格式与提交习惯,不会替你审查 diff 是否正确;提交前仍应自己确认改动范围
  • 类型表以本 Skill 列出的为准;若团队另有约定(例如额外使用 build),需要在项目规则或本地改写 Skill 中补充
  • 「一次一个逻辑变更」依赖 Agent 正确拆分暂存内容;若工作区混杂多种改动,应先自行分批 git add,再让 Agent 写消息
  • 规范本身不能替代 code review;坏消息少了,不代表坏代码少了

小结

writing-commit-messages 把 Conventional Commits 的结构、类型、scope、正文/页脚和破坏性变更写法固化成 Agent 可执行的指令,适合作为日常编码工作流里最基础的 Skill 之一。安装成本低:复制一份 SKILL.md,或用 npx skills add 指定 --skill writing-commit-messages 即可。

官方地址:https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/writing-commit-messages

规范原文可对照:https://www.conventionalcommits.org/en/v1.0.0/

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜