用途
该技能用于在 Git 工作流中创建原子化提交,并按照 WordPress 核心风格撰写提交信息。当用户要求“commit”更改、说“make a commit”或“commit my changes”、完成某项任务后应当提交,或显式调用 /commit 时,可触发该技能。
主要能力
- 生成符合 WordPress 核心风格的提交信息。
- 帮助判断何时应将更改拆分为多个提交。
- 提供提交信息主题行与正文的格式规范。
- 提供使用 HEREDOC 创建提交的命令示例。
- 提供正反示例与提交前核对清单。
原子提交原则
每次提交应当是:
- 最小有意义单元:能够独立成立的最小更改。
- 单一职责:一次提交只包含一个任务、一个修复或一个功能。
- 不混合关注点:不要将重构与功能、样式修复与缺陷修复混在一起。
- 可工作:每次提交后代码库应保持可工作状态。
当更改同时包含以下内容时,应拆分为多个提交:
- 缺陷修复和新功能
- 重构和行为变更
- 多个不相关的修复
- 代码更改和依赖更新
提交信息格式
主题行(必需):
- 最多 60 个字符。
- 使用祈使语气,例如“Fix bug”,而不是“Fixed bug”或“Fixes bug”。
- 结尾不加句号。
- 首词首字母大写。
- 具体说明改了什么。
正文(需要时):
- 与主题行之间空一行。
- 解释为什么做此更改,而不是改了什么。
- 每行 72 字符换行。
- 包含代码中不明显的上下文。
使用方式
- 审查更改:运行
git status和git diff。 - 检查是否混合关注点;如果更改服务于多个目的,分别暂存并提交;必要时使用
git add -p进行部分暂存。 - 撰写主题行:以动词开头,如 Add、Fix、Update、Remove、Refactor、Improve;要具体;字符数不超过 60。
- 需要时撰写正文:解释更改背后的理由,提及非显而易见的副作用,引用相关上下文。
- 使用 HEREDOC 创建提交:
git commit -m "$(cat <<'EOF'
Subject line here (60 chars max)
Body explaining why this change was made. Focus on the
reasoning and context, not describing what the code does.
EOF
)"
不应添加 co-authored by 署名。
示例
好的提交:
Fix responsive breakpoint in navigation component,正文说明移动菜单在 768px 而非 782px 折叠,导致 iPad 竖屏布局问题,并将断点与 WordPress 管理界面响应式标准对齐。Add input validation for email fieldRemove deprecated getUserData function,正文说明该函数在 v2.1 被 fetchUserProfile 取代,且所有调用方已迁移。
应避免的提交:
- 过于模糊:
Fixed stuff - 使用过去时而非祈使语气:
Added new feature - 一次提交包含多个关注点:
Fix bug and add tests and update styles - 主题行超过 60 字符
- 结尾带句号:
Fix navigation bug. - 只描述改了什么而非为什么:
Change maxLength from 50 to 100 - 包含 co-authored by 行,例如
Generated with Claude Code、via Happy、Co-Authored-By: Claude noreply@anthropic.com、Co-Authored-By: Happy yesreply@happy.engineering
提交前核对清单
- 主题行不超过 60 字符。
- 主题使用祈使语气,如 Add/Fix/Update,而非 Added/Fixed/Updated。
- 主题结尾无句号。
- 提交只涉及一个关注点。
- 如果更改并非自明,正文解释为什么。
- 不包含 Co-Authored-By 行。
快速参考
| 元素 | 要求 |
|---|---|
| 主题长度 | 最多 60 字符 |
| 主题语气 | 祈使语气(Add、Fix、Update) |
| 主题标点 | 结尾不加句号 |
| 正文分隔 | 主题后空一行 |
| 正文目的 | 解释为什么,而非改了什么 |
适用场景与限制
适用于需要按 WordPress 核心风格进行 Git 提交的代码仓库与开发流程,尤其适合强调原子提交和清晰提交历史的项目。该技能主要约束提交信息的撰写与提交拆分方式,不涉及代码审查、分支管理或发布流程。关于其安装方式、平台支持、收费情况等,资料暂未提供。