pr-submit:智能 Pull Request 提交工具

2026-07-22 02:000

定位

一条命令走完完整 PR 工作流:分析改动 → 识别类型 → 生成分支名 → 提交 → 推送 → 创建 PR。支持 GitHub(gh)、GitLab(glab)、Gitee(API)。

对话里说「提 PR」「创建 PR」「submit PR」「发起 pull request」「给 xxx 项目提交代码」等即触发。

bash "${VFT_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-}}}/skills/pr-submit/scripts/pr-submit.sh"

和 git-auto-push 的区别(别选错)

git-auto-pushpr-submit(本 skill)
干什么绕过 hooks 的快速 add → commit → push完整 PR 工作流:分析 → 建分支 → 提交 → 建 PR
建分支否(推当前分支)是(自动规范分支名)
建 PR
场景hooks 卡住 / WIP 备份先推上去向开源项目贡献 / 功能分支正式提 PR

两者互补,覆盖不同场景。

三类典型场景

1. 向开源项目贡献

「给 chinese-independent-developer 提 PR,添加我的网站」→ 分析改动 → 建 feat/add-xxx 分支 → 提交生成描述 → 推送 → 创建 PR 到目标仓库。

2. 自己仓库的功能分支

「提个 PR 到 master」→ 检测改动类型 → 建 feature 分支 → 生成 commit message → 推送并建 PR。

3. Bug 修复提交

「修复完了,提 PR」→ 识别为 fix → 分支 fix/xxx-20260722 → 带改动统计的 PR 描述。

改动类型自动识别

脚本按下列规则判定类型与分支前缀:

改动特征识别为分支前缀
新增文件占比 > 60%featfeat/
只改 .md 文件docsdocs/
改动包含测试文件testtest/
少量文件修改(≤3 个)fixfix/
改配置 / package.json / CIchorechore/
新增行数 > 删除行数 × 2featfeat/
其他chorechore/

分支名格式:type/description-YYYYMMDD,冲突时自动追加时间戳。

安全特性

  • HTTPS → SSH 自动转换(仅 GitHub):macOS 上 HTTPS remote push 会触发 git-credential-osxkeychain 弹框并卡死进程,脚本检测到 https://github.com/... 自动 set-url 成 SSH。其它平台保持原样。
  • 敏感文件检测:检测到 .env*(含 secret)、*.pem / *.key 私钥、credentials.json 时停下警告。
  • 分支保护:总是建新分支,绝不在 main/master 直接提交,绝不自动 force push。

生成的内容

  • Commit message:<type>: <description> + 新增/删除行数、改动文件数统计。
  • PR 描述:变更说明 + git diff --stat 前 5 行 + 改动文件列表 + 测试清单 checkbox。
  • PR 标题:取 commit message 第一行。

依赖

工具用途
必需git / ghGit + GitHub CLI
可选glabGitLab 仓库
可选Gitee API tokenGitee 仓库
brew install gh glab
gh auth login          # 登录 GitHub
glab auth login        # 登录 GitLab(可选)

使用限制(当前版本)

  • 不会自动 fork —— 需你提前 fork 目标仓库。
  • 不读贡献指南 —— 用统一格式,不适配特定项目的 CONTRIBUTING.md。
  • 不关联 Issue —— 需手动在 PR 描述里加。
  • 不支持 Draft PR —— 总是建正式 PR。

许可

MIT。

💬留言板0

还没有留言,来发表第一条吧~