用途:把本地改动变成针对他人 GitHub 仓库(无写权限)的规范 PR,覆盖 fork → 分支 → 提交 → 推送 → 开 PR 的完整流水线;当改动跨越不相关关注点时,会拆分为多个 PR。
适用场景:向无写权限的开源项目贡献;已有本地改动需要上游提交;用户要求“fork 该仓库并发 PR”;改动混合(如文档+功能+重构)需要合理拆分。
主要能力与流程(按顺序执行,不跳过确认):1) 确定上游 owner/repo、默认分支与用户登录名;2) 读取 CONTRIBUTING.md、CODE_OF_CONDUCT.md 与 PR 模板,提取提交格式、DCO/CLA、分支命名等约束;3) 用 git status/diff 调查改动并按关注点、子系统、依赖关系分类;4) 用 AskUserQuestion 提出单 PR、拆分为 N 个 PR 或中止的方案并等待确认;5) 幂等地 fork 并配置 fork remote;6) 基于最新默认分支建分支、按 PR 挑选文件、按上游风格提交(DCO 需要时 git commit -s);7) git push -u fork $BRANCH_NAME;8) 用 gh pr create 开 PR,正文含 Summary、Changes、Test plan、Related,多 PR 时互相交叉链接;9) 输出简洁结果汇总。
拆分启发式:改动服务同一用户可见结果、总 diff 约 300 行以内且不超过 5 个文件时倾向单 PR;文档与代码混在一起、重构+功能、触及不相关子系统、一部分显然正确另一部分需讨论时倾向拆分;不确定时询问用户。
限制与非目标:不编写代码改动,假定工作区已有目标修改;不审查项目自身 PR;仅支持 GitHub,不支持 GitLab/Gitea 镜像。禁止直接改上游默认分支、禁止推送到上游、禁止在已有评审评论的分支上强推(除非用户明确要求)、禁止绕过钩子或跳过签名(除非 CONTRIBUTING.md 要求或用户明确说明)、禁止把不相关关注点批量塞进一个 PR、禁止编造 PR 正文。
依赖:gh CLI(brew install gh;gh auth login 一次性登录),无 Python 依赖,纯 gh + git 编排。