mcpField
C
commit

commit

github.com/hrdtbs开发041 次安装17 周前更新
代码仓库

关于 commit

commit 技能为开发者提供撰写 Git 提交信息和整理提交的规范。它聚焦原子化变更、Conventional Commits 格式、差异审查与消息校验。

主要功能

  1. 01拆分原子化提交
  2. 02遵循 Conventional Commits 格式
  3. 03撰写简洁且说明意图的主题
  4. 04提交前审查暂存差异
  5. 05使用脚本校验提交信息

适用场景

  1. 01提交前区分无关变更
  2. 02为功能或修复编写提交信息
  3. 03标注破坏性变更
  4. 04校验提交消息格式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hrdtbs/agent-skills --skill commit

安装后在 Claude Code 中输入/commit确认已加载。

附带文件scripts/validate-commit.sh

详细介绍

提交最佳实践

此技能可确保你的提交逻辑清晰、原子化且结构规范。提交不仅是一个保存点,更是一种沟通工具,帮助未来的开发者(和 AI Agent)理解代码库的历史和意图。

🧠 思维方式与理念

  • 传达意图,而不仅是操作: 代码已经告诉我们发生了什么变化。提交消息必须说明变化的原因。
  • 原子化提交: 一个提交应该只做一件事。如果一个提交既修复了错误又添加了功能,就应该拆分为两个提交。这样回滚、变基和审查都会容易得多。
  • 面向未来的读者: 撰写提交消息时,要设想自己正在向一位六个月后凌晨 3 点排查问题的人解释这项改动。

🚫 反模式

  • 避免在正文中描述代码的作用。 不要写“我在第 42 行添加了一条 if 语句”。应写“添加空值检查,避免用户资料缺失时发生崩溃”。
  • 避免在提交消息中使用表情符号。 这样可以确保兼容所有终端环境,并使 Git 历史记录保持统一、专业且易于搜索。
  • 避免使用含糊的主题。 “修复错误”“更新文件”“WIP”都毫无用处。查看 git log --oneline 时,它们无法提供任何上下文。
  • 避免捆绑无关改动。 如果你在处理 auth 系统时发现 README.md 中有拼写错误,应将拼写修复与 auth 功能分开提交。
  • 避免在提交前不检查自己的差异。 务必运行 git diff --cached 或检查已暂存的更改,确保没有意外包含调试语句(console.log、print)或密钥。

📝 步骤与工作流

创建提交前,请遵循以下步骤:

  1. 检查差异: 你具体要提交什么?是否包含无关改动?
  2. 确定类型: 选择最合适的 Conventional Commits 类型。
  3. 起草消息: 撰写主题行;如有必要,再撰写详细正文说明原因。
  4. 共同作者: 在提交消息正文末尾为 AI Agent 和用户添加 Co-authored-by:。
  5. 验证: 根据要求检查起草的消息格式。

🏷️ Conventional Commits 格式

格式: <type>[optional scope][optional !]: <description>

有效类型
  • feat:新功能
  • fix:错误修复
  • docs:仅涉及文档的更改
  • style:不影响代码含义的更改(空白、格式、缺少分号等)
  • refactor:既不修复错误也不添加功能的代码更改
  • perf:提升性能的代码更改
  • test:添加缺失的测试或修正现有测试
  • build:影响构建系统或外部依赖项的更改
  • ci:CI 配置文件和脚本的更改
  • chore:其他不修改 src 或 test 文件的更改
  • revert:撤销之前的提交
主题行规则
  • 主题行不得超过 50 个字符,以确保在 Git 工具中显示良好。
  • 使用祈使语气和现在时:“change”,而不是“changed”或“changes”。
  • 避免首字母大写。
  • 避免在末尾加句号。
正文规则(复杂更改建议填写)
  • 与主题行之间空一行。
  • 每行不超过 72 个字符。
  • 说明是什么以及为什么,而不是如何实现。
破坏性更改
  • 在主题行的冒号前添加 !(例如:feat(api)!: remove v1 endpoints)。
  • 在正文末尾添加 BREAKING CHANGE: <description>。

💡 示例

示例 1:新功能 输入:添加基于 JWT 令牌的用户身份验证 输出:

feat(auth): implement JWT-based authentication

示例 2:附带上下文的错误修复 输入:修复用户连续两次点击登录按钮时发生的崩溃 输出:

fix(login): resolve crash on double click

The login button was missing a debounce handler, allowing users to
submit multiple network requests. Added a 500ms debounce to prevent
race conditions during authentication.

示例 3:破坏性更改 输入:更改 /users 端点的 API 响应,使其返回对象数组而不是单个对象 输出:

feat(api)!: return array of objects from /users endpoint

BREAKING CHANGE: The `/users` endpoint now returns an array of user
objects instead of a single user object. Clients will need to update
their parsing logic.

✅ 验证

提交前,请运行随附的验证脚本来验证消息格式。如果不确定脚本的位置,请根据 SKILL.md 路径查找,或使用 find。

# Example assuming you are in the repo root:
bash skills/commit/scripts/validate-commit.sh "your commit message"

评论

支持 Markdown