关于 write-pr
write-pr 是只读技能,根据当前分支的变更起草 PR 标题和正文。它会分析提交历史、差异、项目惯例及可用的 PR 模板,但不会创建或推送 PR。
主要功能
- 01检测基准分支
- 02分析提交历史与差异
- 03查找项目 PR 模板
- 04匹配现有标题惯例
- 05起草标题和 PR 正文
适用场景
- 01为分支准备 PR 描述
- 02填写仓库的 PR 模板
- 03使 PR 标题符合项目风格
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ 2ykwang/ agent-skills --skill write-pr安装后在 Claude Code 中输入/write-pr确认已加载。
附带文件README.ko.mdREADME.md
详细介绍
编写 PR
将当前分支的更改整理为符合项目现有规范的 PR 标题和正文。分析 Git 历史记录和差异以判断更改意图,不要只看文件名。
适用场景
- 为当前分支编写或起草拉取请求描述
- 生成符合项目提交/PR 风格的 PR 标题
- 根据实际代码更改填写 PR 模板
不适用场景
- 用户要求实际创建或推送拉取请求
- 没有领先于基准分支的提交
- 用户只需要提交消息,而不是 PR 描述
此技能为只读。绝不要运行任何会修改状态的命令:gh pr create、gh pr edit、git push 或任何其他写入操作。
上下文
用户希望根据当前分支的更改,获得可直接使用的 PR 标题和正文。关注意图和影响,而不是原始差异输出。遵循项目现有的 PR 风格。
操作说明
第 1 步:检测基准分支
如果提供了 $ARGUMENTS,将其用作基准分支。
否则,按以下顺序自动检测:
- 运行
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null— 提取分支名称(例如,origin/main→main) - 如果失败,检查
main、master、develop中哪些分支存在:git branch -r | grep -E 'origin/(main|master|develop)' - 使用找到的第一个匹配项
第 2 步:收集更改信息
按顺序运行这些命令:
git log <base>..<HEAD> --oneline
git diff <base>...<HEAD> --stat
git diff <base>...<HEAD> --shortstat
使用 --shortstat 输出(例如,12 files changed, 340 insertions(+), 50 deletions(-))判断差异规模:
- 如果更改文件数 ≤ 20,且插入数与删除数之和 ≤ 500:读取完整差异
git diff <base>...<HEAD> - 如果更改文件数 > 20,或插入数与删除数之和 > 500:不要读取完整差异。根据
--stat输出,找出每个目录/模块中更改最多的文件,并且只读取这些代表性文件
第 3 步:查找 PR 模板
此步骤为必需步骤。不要跳过,也不要假定文件不存在。
使用文件读取工具并行尝试读取以下所有路径:
.github/PULL_REQUEST_TEMPLATE.md.github/pull_request_template.mddocs/pull_request_template.mdPULL_REQUEST_TEMPLATE.md
同时检查 .github/PULL_REQUEST_TEMPLATE/ 目录是否存在;如果存在,列出文件并读取第一个文件。
使用第一个成功返回内容的路径。
如果成功读取模板文件:
- PR 正文必须严格采用其原有结构
- 保留所有章节、标题和 HTML 注释(``),并保持其原有位置
- 在适当位置填写内容;对于无法根据差异确定的章节(例如,Screenshots、Related Issues),保留原有占位文本或 HTML 注释,不要删除或概述
- 不要调整顺序、合并或省略任何章节
**如果所有路径均无法读取(文件不存在):**使用以下默认结构:
## Summary
## Changes
## Test Plan
第 4 步:识别 PR 标题风格
运行:
gh pr list --state merged --limit 10 --json title 2>/dev/null
如果 gh 返回结果,分析标题模式(例如,feat: ...、[PROJ-123] ...、Fix: ...)。
如果 gh 因任何原因失败(未安装、身份验证错误、不是 GitHub 仓库),则回退到:
git log --oneline -20
从提交消息中提取主要模式。
如果没有明确的模式,使用 Conventional Commits 格式(type: description)。
步骤 5:撰写 PR 内容
标题:
- 如果步骤 4 中检测到的风格清晰且一致:生成 1 个标题
- 如果风格模糊或混杂:生成 2–3 个标题候选项,并清楚标注
PR 正文:
- 使用步骤 3 中的模板结构
- 根据步骤 2 中的变更分析填写各个部分
- 着重说明变更的原因,而不仅仅是变更了哪些文件
- 如果差异中存在以下内容,请明确标出:
- 破坏性变更(API/接口变更、移除字段)
- 新增依赖项
- 架构或结构变更
- 不要将原始差异或文件列表直接粘贴到正文中
- 对于无法填写的部分(例如截图、演示、相关议题):保留模板中的原始 HTML 注释或占位符,不要删除该部分
输出格式
按以下顺序呈现输出:
标题
<single best title>
(如果存在歧义,请列出备选项,并标注为 Alt 1、Alt 2)
PR 正文
<filled-in PR body — exact template structure preserved>
分支:
<base>←<current>· 提交:N · 变更文件:N