用途
raise-pr 用于自动化 rhdh-plugins 与 community-plugins 两个 monorepo 的完整 PR 提交流程。它把从检测仓库到创建 PR、回写问题的多个步骤串联为一个可执行流程,减少手工操作。
主要能力
- 仓库配置检测:读取 references/repo-profiles.md,结合 git remote -v 匹配上游仓库、npm scope、PR 模板与 changeset 文档链接等配置。若没有匹配项,会询问目标仓库。
- 问题上下文解析:支持从调用方上下文、用户参数、分支名或提示中识别关联的 Jira 问题或 GitHub issue。Jira 支持 RHIDP、RHDHBUGS、RHDHPLAN、RHDHSUPP 编号及 atlassian.net/browse/ 链接;GitHub 支持 issue 链接与 #编号 形式。无法识别时可跳过相关问题行为。
- 工作区识别:通过 git diff --cached --name-only 从暂存文件路径提取工作区(路径第二段)。若暂存文件跨多个工作区,会先征求确认。
- 基线与构建产物识别:先记录 git status --porcelain 基线,构建后对比,区分既有改动与构建生成文件,避免误暂存。
- 分支创建:仅当处于 main 分支时创建分支;有 Jira key 时使用 fix/<workspace>-<JIRA-KEY>-<slug> 命名,否则使用 feat/ 或 fix/ 加简短描述。
- 构建与校验:在每个工作区依次执行 yarn、yarn prettier:fix、yarn tsc:full、yarn build:all、yarn test --watchAll=false、yarn build:api-reports:only。构建前会清理可能由 Docker 或 sudo 生成的 dist/ 目录;若遇到权限错误会跳过 build:all 并提示手动 chown 修复,技能本身不使用 sudo。
- Changeset 生成:基于暂存 diff 判断受影响且触及已发布路径(src/、根 index.ts、config.d.ts、package.json)的插件,读取包名并推断 patch、minor、major 版本变更,按 <adjective>-<noun>-<verb> 规则生成随机 ID,写入 <workspace>/.changeset/<id>.md。不交互式运行 yarn changeset。
- 提交与审批:以 conventional commit 格式生成提交信息,可附带 Fixes: 尾注。rhdh-plugins 允许 Jira 与 GitHub 链接;community-plugins 仅允许 GitHub 链接,Jira 信息绝不写入其 git 历史。提交使用 -s 签名。
- 推送与创建 PR:推送分支后使用 gh pr create 按仓库模板创建 PR,主体包含条件性的 Fixed、UI before/after changes、pr_description_extra、Test Plan、Checklist 与 Note 等段落。
- 录制 GIF 上传(硬性关卡):当调用方提供 recordings 时,此步骤不可跳过。GIF 上传到用户 fork 的独立 screenrecordings 分支(非功能分支),上传路径包含工作区与问题 ID 以避免重名。需先确认本地文件存在,再通过 GitHub Contents API 上传并校验返回的 raw.githubusercontent.com 下载链接;失败重试一次,仍失败则使用占位文本并提示手动拖入,绝不伪造 URL。
- 问题回写:完成 PR 后,Jira 问题可通过 Jira MCP 添加评论、经 acli 转换为 Review 状态、并通过 REST API 添加 PR 远程链接;GitHub 问题可添加评论。任何 Jira 调用失败只记录警告并继续。
使用方式
- 以用户参数传入问题 key、URL 或 #编号,或依赖分支名与调用方上下文自动解析。
- 使用 --a 进入自动批准模式,跳过所有审批关卡;默认模式下会在创建分支、暂存文件、提交前要求确认。
- 前置条件:已安装并认证的 gh CLI(gh auth status 显示已登录)、所需的 Jira MCP 配置、rhdh-plugins 或 community-plugins 的本地检出、PATH 中可用的 yarn。
适用场景
适用于在相关 monorepo 中完成修复或功能后,需要规范化提交、生成 changeset、创建符合模板的 PR 并同步问题状态的工作流。
限制
未配置 Jira MCP 时会跳过 Jira 更新并记录警告。构建遇到 root 权限文件时需用户自行修复。GIF 上传为强制步骤,仅在未提供 recordings 时才可跳过。部分细节(如具体价格、平台范围)资料未提供。