SuperAPI AI 工具集

write-pr

编程与开发

查看项目

更新于 10-15 10:43

技能介绍

用途

write-pr 用于把当前分支的改动转化为一份可直接使用的 Pull Request 标题与正文,并使其符合项目已有的约定。它强调分析 git 历史与 diff 背后的意图,而不仅仅是罗列文件名。

主要能力

  • 自动检测基础分支:若提供 $ARGUMENTS 则以其为基础分支,否则依次通过 git symbolic-ref refs/remotes/origin/HEAD 提取分支名,或检查 main、master、develop 中存在的第一个。
  • 收集变更信息:按顺序运行 git log <base>..<HEAD> --oneline、git diff <base>...<HEAD> --stat、git diff <base>...<HEAD> --shortstat。根据 --shortstat 判断 diff 规模:变更文件 ≤ 20 且增删行数 ≤ 500 时读取完整 diff;否则不读取完整 diff,而是从 --stat 中按目录/模块挑选改动最多的代表性文件读取。
  • 查找 PR 模板(强制步骤):并行尝试读取 .github/PULL_REQUEST_TEMPLATE.md、.github/pull_request_template.md、docs/pull_request_template.md、PULL_REQUEST_TEMPLATE.md,并检查 .github/PULL_REQUEST_TEMPLATE/ 目录是否存在,读取其中第一个文件。使用第一个成功返回内容的路径。若读取到模板,则严格沿用其结构,保留所有章节、标题与 HTML 注释及其原始位置,无法从 diff 判断的章节保留原占位符或注释,不重排、不合并、不省略任何章节。若全部失败,则使用默认结构:## Summary、## Changes、## Test Plan。
  • 识别 PR 标题风格:运行 gh pr list --state merged --limit 10 --json title,分析标题模式(如 feat: ...、[PROJ-123] ...、Fix: ...)。若 gh 因未安装、认证错误或非 GitHub 仓库等原因失败,则回退到 git log --oneline -20 提取提交信息中的主导模式。若无清晰模式,则使用 Conventional Commits 格式(type: description)。
  • 撰写 PR 内容:标题在风格清晰一致时产出 1 个,风格模糊或混杂时产出 2–3 个候选并明确标注。正文按模板结构填写,聚焦“为什么改”而非仅“改了哪些文件”,并在 diff 中存在时显式标注破坏性变更(API/接口变更、移除字段)、新增依赖、架构或结构性变更。不把原始 diff 或文件列表粘贴进正文。无法填写的章节(如 Screenshots、Demo、Related Issues)保留模板原有的 HTML 注释或占位符,不删除该章节。

使用方式

该技能为只读,绝不运行任何修改状态的命令,包括 gh pr create、gh pr edit、git push 或其他写操作。输出按以下顺序呈现:

  1. Title:单个最佳标题;若风格模糊,则列出标注为 Alt 1、Alt 2 的备选。
  2. PR Body:填写后的 PR 正文,严格保留模板结构。
  3. 末尾附:Branch: <base> ← <current> · Commits: N · Files changed: N。

适用场景

  • 为当前分支撰写或起草 Pull Request 描述。
  • 生成符合项目提交/PR 风格的 PR 标题。
  • 基于实际代码变更填写 PR 模板。

限制

  • 不适用于实际打开或推送 Pull Request 的请求。
  • 当基础分支之前没有任何提交时不适用。
  • 当用户只想要提交信息而非 PR 描述时不适用。
  • 该技能为只读,不会执行任何写操作。