用途:open-pr 负责围绕拉取请求的外围操作,PR 正文由 pr 技能撰写。适用于用户想打开、推送或更新 GitHub PR 时。
主要能力与用法:
- 定位 PR 与基分支:先执行 git fetch origin --prune 和 gh pr view --json number,url,baseRefName,不要假设基分支;无 PR 时用 gh repo view --json defaultBranchRef --jq .defaultBranchRef.name 取默认分支,或使用堆叠的上一分支。
- 获取 issue:从分支名解析编号,分支名格式为 {issue_number}-{description}。issue 编号按仓库区分,需先解析仓库,默认当前仓库,可用 gh issue view <issue_number> --repo "$ISSUE_REPO" --json title,body,url。若 issue 与 diff 不匹配,应询问而非硬写。
- 阅读改动:git status、git log --oneline "origin/<base>"...HEAD、git diff "origin/<base>"...HEAD。
- 体积检查:git diff --shortstat <base>...HEAD,与 issue-tracker 技能中的上限比较,超限时提示并建议简化拆分,但不阻塞。
- 撰写正文:由 pr 技能完成,合并前后任务写入 Merge Danger 的可选描述,结尾用 Closes #<issue_number> 或 Part of #<issue_number>;跨仓库需写 Closes owner/repo#N。标题格式为 {issue_number}: {issue_title}。
- 创建 PR:git push -u origin HEAD,gh pr create --base "<base>" --title "<issue_number>: <issue_title>" --body-file <body-file>,gh pr edit --add-reviewer <maintainer>。--base 不可省略,否则会指向默认分支。默认就绪并请求评审,草稿仅用于被阻塞或出错等结束状态。
- 更新 PR:git push,gh pr edit --body-file <body-file>,正文应针对整体 diff 重写而非追加;标题变化时用 gh pr edit --title 更新。
- 检查链接:gh pr view --json baseRefName,closingIssuesReferences,确认 Closes 行出现在 closingIssuesReferences 中;堆叠 PR 在父 PR 合并前不显示链接,Part of 永不建立链接。
限制:资料未提供收费、平台支持范围、具体性能或效果数据;部分步骤依赖 pr、issue-tracker 等外部技能与 AGENTS.md 约定。