SuperAPI AI 工具集

core-commit

编程与开发

查看项目

更新于 10-15 10:31

技能介绍

用途

core-commit 用于为 WordPress 核心撰写符合官方规范的提交信息(commit message)。它依据 WordPress 官方提交信息指南(https://make.wordpress.org/core/handbook/best-practices/commit-messages/)起草提交信息,适用于向 WordPress 核心提交代码、起草 SVN 提交信息,或为 PR 做提交准备的场景。

主要能力

  • 按官方格式生成提交信息,包含工单号、组件前缀摘要、描述、Follow-up、Reviewed by/Merges、Props 与工单引用等部分。
  • 从 GitHub PR 的 props bot 评论(由 github-actions[bot] 发布)获取预构建的 Props 行作为基础。
  • 抓取 Trac 工单的全部参与者,合并两个来源的 Props 名单。
  • 根据 Trac 工单或 PR 标题前缀确定组件。
  • 生成后可将提交信息添加到 PR 描述底部。

使用方式

该技能需要以下 CLI 工具:gh(GitHub CLI,用于获取 PR 详情和 props bot 评论)、curl(用于抓取 Trac 工单页面)、python3(用于解析 Trac 工单页面的 HTML)。

工作流程:

  1. 确定 PR URL,无法自动确定时询问用户。
  2. 获取 PR 的标题、描述、diff 摘要和关联的 Trac 工单。
  3. 从 PR 获取 props bot 评论。
  4. 获取 Trac 工单以得到所有参与者。
  5. 合并两个来源的 Props 名单(尽量慷慨)。
  6. 从 Trac 工单或 PR 标题前缀确定组件。
  7. 按格式起草提交信息。
  8. 提交信息供审阅,并注明 Props 的不确定之处(例如未关联的 GitHub 账号可能需要手动查找 w.org 用户名)。
  9. 请求审阅并按需迭代。
  10. 批准后将提交信息添加到 PR 描述底部。

获取 props bot 评论的命令示例:

gh api repos/WordPress/wordpress-develop/issues/{PR_NUMBER}/comments --jq '.[] | select(.user.login == "github-actions[bot]") | .body'

提交信息格式

第 1 行:Trac 工单号,单独一行。

第 2 行:组件前缀加简要摘要,约 50 字符,最多 70 字符(含组件前缀),使用祈使语气,以句号结尾。组件前缀应与 Trac 组件匹配(如 Editor:、Media:、Comments:、Taxonomy:、REST API:)。

描述:与摘要之间空一行。需回答三个问题:为什么需要此更改、如何解决该问题、此更改有何副作用。代码引用使用反引号(如 function_name、hook_name、$variable)。不要手动换行。引用 GitHub issue 时使用完整 URL。描述中避免使用 "props"、"backport"、"backports"、"backporting" 等词。

Follow-up to(可选):与之前变更集直接相关时使用,前面空一行,变更集号用方括号包裹,如 Follow-up to [27195], [41062].

Reviewed by / Merges(仅 backport 时):前面空一行,Reviewed by committer1, committer2. 一行,下一行 Merges [NNNNN] to the X.X branch.(两行之间无空行)。

Props:前面空一行,格式为 Props username1, username2, username3.,"Props" 后无冒号,用户名无 @ 前缀,以句号结尾。应尽量慷慨,包含 bug 报告者、补丁作者、审阅者、测试者及有实质讨论贡献者。

工单引用:紧接 Props 下方(无空行)。Fixes #NNNNN. 会在 Trac 中关闭工单;See #NNNNN. 仅引用不关闭。多个时如 Fixes #19867, #9864. See #31696.

Props 收集规则

  • 从 props bot 评论获取基础名单,确认每个用户确实参与了 PR,否则移除。
  • 抓取 Trac 工单的所有参与者(报告、评论、确认、测试、审阅或贡献补丁者)。
  • 合并两个来源的用户名。
  • 移除仅请求状态更新的用户。
  • 使用 WordPress.org 用户名(非 GitHub 账号)。
  • Trac 用户的显示名即 w.org 用户名;若显示名含空格,使用其 w.org 个人资料 URL 中的 slug。
  • 不加 @ 前缀。
  • 提交者通常从 Props 中省略自己(除非是重大协作成果)。
  • 用户名以逗号加空格分隔,以句号结尾。

适用场景

  • 向 WordPress 核心提交代码。
  • 起草 SVN 提交信息。
  • 为 PR 做提交准备。

限制与注意事项

  • 需要环境中提供 gh、curl、python3 三个 CLI 工具。
  • 工单号 #NNNNN 和变更集号 [NNNNN] 在 Trac 和 Slack 中会自动链接;不要将 # 加数字用于 Trac 工单引用以外的用途。
  • 切勿在同一提交中提交到多个分支。
  • RC 阶段所有补丁必须由第二位提交者审阅。
  • 提交者的用户名通常应从 Props 中省略(提交归属已隐含)。
  • 描述中避免使用 "props"、"backport"、"backports"、"backporting" 等词。
  • 关于收费、价格、平台支持等具体信息,资料中暂未提供。