mcpField
W
woocommerce-git-draft-pr

woocommerce-git-draft-pr

github.com/woocommerce开发10.6k116 次安装今天更新
代码仓库

关于 woocommerce-git-draft-pr

面向 WooCommerce 仓库的技能,可根据当前分支准备便于审阅的草稿拉取请求。它检查分支状态、分析变更,并按仓库规范生成内容后创建草稿。

主要功能

  1. 01检查分支与工作区状态
  2. 02分析变更和问题引用
  3. 03生成标题及模板化 PR 正文
  4. 04判断变更日志与里程碑要求
  5. 05通过 GitHub CLI 创建草稿 PR

适用场景

  1. 01为已完成的功能分支准备草稿 PR
  2. 02判断变更是否需要变更日志
  3. 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