◆
pr-submit:智能 Pull Request 提交工具
定位
一条命令走完完整 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-push | pr-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% | feat | feat/ |
只改 .md 文件 | docs | docs/ |
| 改动包含测试文件 | test | test/ |
| 少量文件修改(≤3 个) | fix | fix/ |
| 改配置 / package.json / CI | chore | chore/ |
| 新增行数 > 删除行数 × 2 | feat | feat/ |
| 其他 | chore | chore/ |
分支名格式: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 / gh | Git + GitHub CLI |
| 可选 | glab | GitLab 仓库 |
| 可选 | Gitee API token | Gitee 仓库 |
brew install gh glab
gh auth login # 登录 GitHub
glab auth login # 登录 GitLab(可选)
使用限制(当前版本)
- 不会自动 fork —— 需你提前 fork 目标仓库。
- 不读贡献指南 —— 用统一格式,不适配特定项目的 CONTRIBUTING.md。
- 不关联 Issue —— 需手动在 PR 描述里加。
- 不支持 Draft PR —— 总是建正式 PR。
许可
MIT。

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