SuperAPI AI 工具集

create-pr

编程与开发

查看项目

更新于 10-16 06:04

技能介绍

用途

create-pr 用于为 Marshroom cart issue 创建 Pull Request,并自动关联当前分支所对应的 issue。它适合在完成某个 cart issue 的开发工作后,快速生成带有正确关闭关键字的 PR,并同步更新 Marshroom 的本地状态。

主要能力

  • 读取并解析 Marshroom 状态文件(默认路径为 ~/.config/marshroom/state.json,可通过 MARSHROOM_STATE 环境变量覆盖)。
  • 通过 git branch --show-current 获取当前分支名。
  • 根据当前分支和仓库匹配 cart 条目,支持宽松匹配:先尝试精确的 branchName 匹配,再尝试 /#N 后缀匹配(例如当前分支 HotFix/#20 可匹配 branchName 为 Feature/#20 的条目,因为两者都以 /#20 结尾)。
  • 若无法匹配,会提示用户当前不在 cart issue 分支上。
  • 提交当前改动,并在改动过大或可疑(如 100+ 变更、占位文件、数据库更新、日志等)时向用户请求许可。
  • 推送当前分支:git push -u origin HEAD。
  • 构建 PR 正文:包含改动简述;若匹配的 cart 条目存在非空 issueBody 字段,则加入 "## Original Issue" 段落供审查者参考;正文必须包含 close #<issueNumber> 以自动关闭 issue。
  • 使用 gh pr create 创建 PR,标题取自匹配条目的 issue 标题。
  • 创建后校验 PR 正文是否包含关闭关键字,若缺失则通过 gh pr edit 补充。
  • 获取 PR 的 URL 与编号。
  • 强制更新 issue 状态:优先使用 marsh pr;若 PATH 中找不到 marsh,则回退到使用 jq 的原子写入方式更新 state.json,将对应 issue 的 status 设为 pending,并写入 prNumber 与 prURL。
  • 更新后读取 state.json 确认状态为 pending。
  • 展示结果:PR URL、PR 编号、Issue 编号与标题、状态。

使用方式

该技能以步骤流程形式执行,关键命令包括:

git branch --show-current git push -u origin HEAD gh pr create gh pr view --json body -q '.body' gh pr edit --body "$(gh pr view --json body -q '.body')\n\nclose #<issueNumber>" gh pr view --json number,url -q '.number,.url'

状态更新回退命令:

STATE_FILE="${MARSHROOM_STATE:-~/.config/marshroom/state.json}" TMP="$(mktemp "${STATE_FILE}.XXXXXX")" jq --argjson n ISSUE_NUMBER --argjson prNum PR_NUMBER --arg prUrl "PR_URL"
'.cart |= map(if .issueNumber == $n then .status = "pending" | .prNumber = $prNum | .prURL = $prUrl else . end)'
"$STATE_FILE" > "$TMP" && mv -f "$TMP" "$STATE_FILE"

适用场景

  • 在 Marshroom 工作流中完成某个 cart issue 后,需要创建关联 PR 并自动关闭对应 issue。
  • 需要将 PR 编号与 URL 回写到 Marshroom 状态文件,以便后续跟踪。

限制

  • state.json 更新为强制要求;若更新失败,必须停止并报告错误,不得静默继续。
  • 若当前分支无法匹配任何 cart 条目,则不会创建 PR。
  • 提交前若改动过大或可疑,需要用户确认。
  • 依赖 git、gh、jq 等命令行工具;marsh 命令为可选,缺失时使用 jq 回退方案。
  • 关于收费、价格、平台支持范围等信息,资料中暂未提供。