关于 woocommerce-git-draft-pr
面向 WooCommerce 仓库的技能,可根据当前分支准备便于审阅的草稿拉取请求。它检查分支状态、分析变更,并按仓库规范生成内容后创建草稿。
主要功能
- 01检查分支与工作区状态
- 02分析变更和问题引用
- 03生成标题及模板化 PR 正文
- 04判断变更日志与里程碑要求
- 05通过 GitHub CLI 创建草稿 PR
适用场景
- 01为已完成的功能分支准备草稿 PR
- 02判断变更是否需要变更日志
- 03创建符合 WooCommerce 仓库规范的 PR
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ woocommerce/ woocommerce --skill woocommerce-git-draft-pr安装后在 Claude Code 中输入/woocommerce-git-draft-pr确认已加载。
详细介绍
创建草稿 PR
从当前分支创建简洁、便于评审的草稿 PR。
动态上下文
- 当前分支:!
git branch --show-current - 提交:!
git log trunk..HEAD --format="%h %s" --reverse 2>/dev/null || echo "No commits ahead of trunk" - 差异统计:!
git diff trunk...HEAD --stat 2>/dev/null - 未提交的更改:!
git status --short - 现有变更日志:!
git diff trunk...HEAD --name-only -- '*/changelog/*' 2>/dev/null - PR 模板:!
cat .github/PULL_REQUEST_TEMPLATE.md
流程
1. 预检与分析
根据动态上下文确认:当前不在 trunk 分支上(如果是,则停止)、存在领先于 trunk 的提交(如果没有,则停止)、没有未提交的更改(如果工作区有更改,则停止)。
基准分支:如果当前分支是从 release/* 分支创建的,则使用该分支;否则使用 trunk。
根据上面的动态上下文(仅当统计摘要不明确时才查看完整差异),判断:
- 更改类型:修复、添加、更新、开发、微调、性能或增强
- 重要程度:补丁(最常见)、次要(新功能)、主要(破坏性更改,较少见)
- 是否为 Bug 修复? 查找提交或分支名中的问题引用(例如
#12345、fix/issue-12345) - 是否有 UI 更改? 检查
client/、templates/、CSS/SCSS、JSX/TSX 中的更改 - 是否影响插件? 面向用户发布的代码 = 是。CI/CD、工作流、工具、文档 = 否。这将决定第 3 步中的 Milestone 和变更日志处理方式。
2. 收集上下文
从提交和分支名中提取问题/PR 引用:
- 问题引用:如果提交或分支中有,则使用其中的引用;否则省略
Closes #(Linear 引用仅供内部使用,PR 中只能引用 GitHub issue)。 - Bug 修复的起因 PR:如果属于 Bug 修复,且差异/提交中没有 PR 引用,则搜索历史记录(对受影响行运行
git log -S),查找引入该问题的 PR;如果找不到,则省略Bug introduced in PR #XXXX. - 动机:根据差异和提交信息推断。尽可能给出有力的总结;不要因为缺少上下文而停滞。
3. 生成 PR 标题和正文
标题(少于 70 个字符,以动词开头,符合仓库惯例):
Fix <what was broken>、Add <what>或其他动词(Restore、Bump、Prepare 等)- 可选的领域前缀:
[Email Editor] Fix double margin-top in flex layout - 不要使用
fix:/feat:前缀。不要添加 Linear 工单引用——Linear 是内部系统,PR 是公开的。
正文——按顺序逐节填写 .github/PULL_REQUEST_TEMPLATE.md(已在上方的动态上下文中加载)。模板中的 HTML 注释说明了各节的用途,请将其作为对应章节的填写说明。以下仓库专属规则需在模板要求基础上额外遵守:
- Changes proposed:用 2–3 句话说明。先写 WHY,再写 WHAT。不要填充套话(例如 “This PR addresses...”)。如果没有 GitHub issue 引用,则删除
Closes # .行。如果不是 Bug 修复,或未知起因 PR,则删除Bug introduced in PR # .行。 - Milestone:仅插件相关更改勾选自动分配框。保留该章节——模板注明不得删除。
- Changelog entry:
- 影响插件,且差异中没有变更日志文件 → 勾选
Automatically create,并填写 Significance、Type 和面向用户的 Message。 - 影响插件,且差异中已有变更日志文件 → 勾选
does not require,并在 Comment 中填写 "Created manually." - 不影响插件 → 勾选
does not require,并在 Comment 中说明原因(例如,"Internal tooling, not shipped to merchants")。
- 影响插件,且差异中没有变更日志文件 → 勾选
填写完成后,保留模板中的 HTML 注释(``)——它们用于支持 PR 自动化和 GitHub 测试。仅删除未填写的占位行,且该行必须是实际可见的占位内容(例如 Closes # .、Bug introduced in PR # .)。
4. 预览
执行前展示生成的标题和正文。
5. 推送并创建
git push -u origin $(git branch --show-current)
gh pr create --draft --title "<title>" --base <base-branch> --body "$(cat <<'PRBODY'
<full PR body>
PRBODY
)"
输出 PR URL。如果有 UI 更改需要截图,请提醒用户。
约束
- 不得添加 Co-Authored-By 行或自我署名
- 绝不提交代码——可以推送
- 保留 PR 模板的章节标题和 HTML 注释原样不变;每个 PR 正文都必须包含 Milestone 章节,无论是否勾选——其中的 `` 标记用于驱动 PR 自动化
- Changelog 复选框必须符合 CI 自动化格式
评论
支持 Markdown