关于 woocommerce-git-commit
为 WooCommerce 仓库提交未提交更改提供流程指导,面向需要组织变更并撰写提交信息的开发者。它包括差异分析、提交分组、预览和执行,以及变更日志条目的处理规则。
主要功能
- 01检查分支状态与变更差异
- 02判断提交分组方式
- 03拟定简洁的祈使式提交信息
- 04按指定文件暂存并执行提交
- 05说明变更日志条目格式
适用场景
- 01整理未提交更改并准备提交
- 02将无关变更拆分为多个提交
- 03为 WooCommerce 包编写变更日志条目
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ woocommerce/ woocommerce --skill woocommerce-git-commit安装后在 Claude Code 中输入/woocommerce-git-commit确认已加载。
详细介绍
提交更改
提交未提交的工作,并使用清晰、符合惯例的提交消息。适当时,将无关更改分成不同的提交。
动态上下文
- 当前分支:!
git branch --show-current - 未提交的更改:!
git status --short - Diff 统计:!
git diff --stat - 已暂存的 Diff 统计:!
git diff --cached --stat
流程
1. 分析更改
根据上述动态上下文,确定更改内容:
- 没有更改? 停止——告知用户没有内容需要提交。
- 已有暂存内容? 保留用户暂存的内容。仅考虑未暂存的文件,以便进行额外提交。
- 仅当统计摘要含义不明确时,才读取文件的完整 Diff。
2. 决定提交分组
默认使用单个提交,除非更改明显无关。仅在以下情况下拆分:
- 更新日志条目与源代码更改同时存在(更新日志 = 单独提交)
- 混合了明显独立的更改(例如,Bug 修复和无关的配置更改)
两个文件因同一原因而更改 = 一个提交。不要过度拆分。
3. 起草提交消息
利用当前会话上下文了解完成了什么工作以及原因。如果查看 Diff 和对话后仍不清楚动机,请根据 Diff 和提交惯例推断最合理的描述。
格式——以动词开头,使用祈使句,少于 72 个字符:
Fix get_item_downloads() not always returning an arrayAdd cache priming to AJAX downloadable searchUpdate email editor reset action label for consistencyRefactor order count cache refresh logicRemove deprecated payment gateway fallback
动词:Fix、Add、Update、Refactor、Remove、Restore、Bump、Prepare、Simplify、Improve、Replace
仅包含更新日志的提交:Add changelog entries for [description]
不要包含 Issue 或 PR 引用——GitHub 会在 Squash 合并时添加这些内容。
如果提供了 $ARGUMENTS,请将其作为提交消息的指导。
4. 预览
执行前说明每个拟议的提交:
Commit 1: Fix double margin-top in flex layout
files: src/Blocks/EmailEditor/Layout.php
src/Blocks/EmailEditor/styles.css
Commit 2: Add changelog entries for email editor fix
files: plugins/woocommerce/changelog/fix-email-margin
5. 执行
对于每个已确认的提交:
git add <specific files>
git commit -m "<message>"
始终暂存指定文件——绝不要使用 git add -A 或 git add .。
完成所有提交后,显示 git log --oneline -n <number of new commits> 以确认。
更新日志条目文件
在每个受影响的包下创建一个条目,路径为 <package>/changelog/。交互式命令 pnpm --filter=<project> changelog add 会提示输入相关内容,因此可以使用其选项以非交互方式运行(-s 表示重要性,-t 表示类型,-e 表示条目,-c 表示备注,-f 表示文件名):
pnpm --filter=<project> changelog add --no-interaction -s patch -t fix -e "One user-facing sentence."
也可以直接按以下格式编写文件:
Significance:—patch、minor或major。Type:— 包的composer.json中extra.changelogger.types声明的一种类型。对于 WooCommerce Core:fix、add、update、dev、tweak、performance、enhancement。- 正文——空一行后写一句面向用户的话,描述商家能看到的更改。这段内容会出现在版本更新日志中,因此应简短,并省略问题编号、PR 链接和实现细节。
Comment:— 仅用于不包含正文的条目,以说明为何没有面向用户的内容。几乎总是与Type: dev配套使用。绝不要与正文同时使用,也不要用它记录问题引用。
包含面向用户更改的条目:
Significance: patch
Type: fix
Restore the "Browse store" link on the empty cart page.
没有需要告知商家的内容的条目:
Significance: patch
Type: dev
Comment: Remove real sleep() calls from PHP unit tests; no production change.
各字段的具体填写内容——阅读对象、长度要求和审核标准——请参阅仓库根目录 AGENTS.md 的 Changelog Entries 部分。
不要将 Comment: 与拉取请求模板中的 “Comment required below” 字段混淆。前者属于 PR 表单,与更新日志文件无关。
未涉及任何包的更改(例如 .ai/skills/ 或 AGENTS.md)无需添加条目。
约束
- 不添加 Co-Authored-By 行或自我署名
- 绝不推送到远程仓库
- 绝不使用
git add -A或git add . - 不要运行提交前的 lint/测试检查——这些由
woocommerce-dev-cycle技能处理。应在调用此技能之前运行 lint,而不是之后。对于 PHP 更改,必须等此技能的 PHP lint 通过后才能提交(警告会导致 CI 失败)。