To PR 是一个面向 Git/GitHub 的智能体工作流技能,用于把本地分支的改动经过校验、推送,并依据仓库的 PR 模板创建 GitHub Pull Request,随后监视 CI 结果。它以斜杠命令方式调用,参数为 $ARGUMENTS。
主要能力与流程:
一、前置检查。先运行 gh auth status 确认已登录 GitHub CLI,未登录时停止并提示先执行 gh auth login 再重新调用。随后并行获取三项信息:基分支(通过 git remote show origin 的 HEAD branch)、票号(从分支名中匹配 [A-Z]+-[0-9]+ 模式,或从匹配的 spec 的 ticket: frontmatter 获取)、以及 PR 模板(依次查找 .github/pull_request_template.md、.github/PULL_REQUEST_TEMPLATE.md、.github/PULL_REQUEST_TEMPLATE/、docs/pull_request_template.md、pull_request_template.md)。同时并行获取 git diff <base>...HEAD 和完整提交列表,要求审查每个提交而非只看最新一个。
二、门禁检查(Gate)。调用 Skill 工具的 check;失败则报告并停止。ADR 检查:若 diff 新增依赖或模块、修改公开 API、或新增迁移,而 docs/adr/ 下没有对应记录,则建议在推送前调用 to-adr 技能。存在未提交工作时调用 commit 技能,绝不在脏工作区上开 PR。
三、--safe 选项。推送前扫描分支的密钥与敏感数据,调用 safe-repo 技能并传入 --diff <base>。发现问题时逐条报告 file:line,然后询问是先修复(推荐)还是仍然推送。
四、推送。使用 -u 推送;若位于默认分支需先确认;被拒绝为非快进时执行 git pull --rebase 并重试一次;从不强制推送。--skip-ci 选项会先执行一次空提交 git commit --allow-empty -m "chore: [skip ci]",使 HEAD 携带跳过标记。
五、生成 PR 内容。根据 diff、提交和对话内容起草标题和简洁正文,自行填写所有字段而不询问用户。标题需匹配 ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)((.*))?: .+$。找到模板时以其为正文并保持原有结构:填写每个章节与占位符、勾选适用复选框、不在模板之外添加内容;摘要章节放置可视化,测试章节放置证据,风险章节填写合并风险。无模板则使用 assets/pr-template.md 同样填写。无法展示的证据要说明未验证,不得编造。摘要中引用票号(如 Resolves TICKET-123);分支提交中引用且仍开放的票按 .specs/issue-tracker.md 的约定链接(GitHub 用 Closes #n),无配置则不处理。用 HEREDOC 正文执行 gh pr create 并返回 URL。
六、CI 监视。执行 gh pr checks --watch(--skip-ci 时跳过)。红灯时对失败检查调用 debug 技能,修复、提交、推送,最多两轮;仍失败则停止并报告失败的检查。
七、正文写作要求。简洁、可被没看过 diff 的人读懂;每节 1–4 句或简短列表;先讲为何再做何事,diff 已体现如何做。使用对话中用户说过的内容,不要复述 diff。摘要用一两句说明缘由,再配最小可视化;拼写错误、配置或仅版本号变更不需要可视化,除非使用 --diagram。证据采用 Before/After,视觉变更用截图,其余用先失败后通过的测试输出。合并风险包含 Door(单向:破坏性迁移、移除公开 API、删除数据;双向:回滚可撤销)与 Blast Radius(一个词)。
八、可视化规则。按变更类型选择:逻辑或算法用伪代码;运行时控制流用调用树;UI 结构用组件树;文件布局用浅层文件树;既有结构内的改动用 diff 草图;请求/响应、处理器、集成用 sequenceDiagram;流水线、分支逻辑、数据迁移用 flowchart;模型、类型、schema 用 classDiagram/erDiagram;UI 或流程状态用 stateDiagram-v2;模块重构用前后对比 flowchart 或依赖图。规则:一个可视化,最多两个,紧跟所支持的句子;节点约不超过 12 个;只画 PR 涉及的路径;标记变更处(草图用 +/-,mermaid 用 classDef 变更样式)。
九、选项汇总。--safe 推送前扫描密钥敏感数据;--skip-ci 标记跳过 CI 并跳过监视(仅在 CI 无可检查内容如文档、散文时使用,且需在 PR 正文说明原因,因必需检查会保持 pending 阻塞合并,squash merge 可能把标记带入基分支);--diagram[=flow|sequence|class|state] 让摘要可视化使用 mermaid 图,未指定类型时按变更选择 Visuals 行,否则用 flow。
规则:仅使用 gh CLI;从不强制推送;不在未确认的情况下从 main/master 推送。
限制:依赖 GitHub CLI 与 gh 登录状态;依赖仓库中存在 PR 模板或内置 assets/pr-template.md;自动 CI 修复最多两轮;部分辅助行为(如 to-adr、safe-repo、debug、commit 等技能)需在相应技能环境中可用。运行环境、安装方式与授权信息暂未提供。