원클릭으로
github-pr-workflow
自动化 GitHub PR 工作流 - 基于当前分支创建 PR、获取用户输入、检查冲突并自动合并。支持 squash 合并模式,遇到冲突时停止并提示用户。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
自动化 GitHub PR 工作流 - 基于当前分支创建 PR、获取用户输入、检查冲突并自动合并。支持 squash 合并模式,遇到冲突时停止并提示用户。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
为 Vue 3 + Ant Design Vue 表单系统新增自定义校验规则。支持正则校验、值范围校验、日期校验等。包含类型定义、校验实现、单元测试的完整流程。
将 AI 聊天内容提炼为结构化技术文档并保存到 Obsidian 知识库。支持三种文档类型:问题解决型、知识学习型、方案对比型。自动推断知识库分类目录,生成符合 Obsidian 规范的 Markdown 文件(含 frontmatter、双链)。适用于:(1) 聊天中解决了技术问题后想记录下来,(2) 学到新知识想沉淀到知识库,(3) 对比了多个方案后想保存决策过程。触发条件:用户说"保存到知识库"、"导出到 Obsidian"、"记录到笔记"、"保存这次对话"、"转成文档"等。
分析给定的 JSON 请求数据是否与 Java 后台 DTO 定义吻合,检查字段缺失、字段名不匹配、类型不匹配、必填校验等问题。
将Excel工作簿按工作表拆分为独立的Excel文件,每个工作表生成一个单独的文件。适用场景:(1) 将多工作表Excel文件拆分为单独文件,(2) 提取特定工作表为独立文件,(3) 分发合并工作簿中的工作表,(4) 为单独处理或分发创建工作表副本。
将 Excel 文件转换为 Markdown 表格,支持合并单元格处理、多工作表输出、基础字体语义(粗体/斜体)与超链接转换。适用于将式样书、数据表转为可读的 Markdown 文档。
将 Java DTO 类文件转换为 TypeScript interface,自动处理类型映射、@Required/@Schema 注解、嵌套类,并生成完整的 JSDoc 注释。
| name | github-pr-workflow |
| description | 自动化 GitHub PR 工作流 - 基于当前分支创建 PR、获取用户输入、检查冲突并自动合并。支持 squash 合并模式,遇到冲突时停止并提示用户。 |
该技能用于自动化 GitHub PR 的完整工作流
注意:无需关心当前分支是否还存在未提交的更改,但请确保当前分支已推送到远程仓库。
git log -1 的提交信息作为 PR 标题和描述 以及作为 -Title 和 -Message 参数传入脚本使用 pwd 命令获取当前项目的路径,准备作为脚本的 -ProjectPath 参数传入
在获取用户输入的 title 和 PR 描述后,接调用 scripts 里的 Invoke-GitHubPRWorkflow.ps1 脚本
脚本在 skill 文件里,所以需要带上详细路径,最常见的使用示例如下
# 从任意位置调用脚本(推荐方式)
c:\Users\housei\.claude\skills\github-pr-workflow\scripts\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -Title "修复了登录问题" -Message "修复了登录问题"
注意:如果你是大语言模型,在此步之前已经可以成功创建 PR 并合并,则无需查看以后的内容。
# 从任意位置调用脚本(推荐方式)
c:\Users\housei\.claude\skills\github-pr-workflow\scripts\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -Title "修复了登录问题" -Message "修复了登录问题"
# 禁用自动合并,仅创建 PR
.\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -AutoMerge:$false
# 指定目标分支
.\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -BaseBranch "develop"
# 在项目根目录直接运行(无需指定路径)
.\Invoke-GitHubPRWorkflow.ps1
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
ProjectPath | string | 项目根目录路径(可从任意位置调用脚本) | 当前目录 |
Title | string | PR 标题(不指定则交互输入) | 交互输入 |
Message | string | PR 描述(不指定则交互输入或使用 git log) | 交互输入/自动 |
BaseBranch | string | 目标分支 | 自动检测 |
AutoMerge | switch | 是否自动合并 PR | $true |
mergeMode | 内置 | 合并模式 | --squash |
deleteAfter | 内置 | 合并后删除分支 | true |
| 场景 | 处理方式 |
|---|---|
| 未安装 GitHub CLI | 提示安装,提供多种安装方式供选择,用户选择后自动安装 |
| 未登录 GitHub | 提示登录,自动运行 gh auth login,等待用户完成认证 |
| 未在 git 仓库中 | 停止流程,提示当前目录不是 git 仓库 |
| PR 创建失败 | 显示错误信息,停止流程 |
| 检测到合并冲突 | 停止合并,提示用户手动解决 |
| PR 已被合并 | 提示 PR 状态已改变 |
| 合并失败 | 显示错误原因,停止流程 |
-ProjectPath 指定项目路径Q: 如何从任意位置调用脚本,而不需要复制到项目根目录?
# 使用 -ProjectPath 参数指定项目路径
c:\Users\housei\.claude\skills\github-pr-workflow\scripts\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\path\to\project"
Q: 如何指定目标分支而不是自动检测?
# 使用 -BaseBranch 参数
.\Invoke-GitHubPRWorkflow.ps1 -BaseBranch "develop"
Q: 如何禁用自动合并,仅创建 PR?
# 使用 -AutoMerge:$false 参数
.\Invoke-GitHubPRWorkflow.ps1 -AutoMerge:$false
Q: 如何跳过交互输入,直接传入 PR 标题和描述?
# 使用 -Title 和 -Message 参数
.\Invoke-GitHubPRWorkflow.ps1 -Title "修复bug" -Message "修复了登录问题"
Q: 交互输入时,如何输入多行描述?
# 每行回车继续,输入 END(不区分大小写)结束
Commit Message (按 Enter 后输入,输入 'END' 后回车结束):
第一行描述
第二行描述
END
Q: 如果忘记输入描述,会发生什么?
# 脚本会自动使用最近一次 git commit 的信息作为 PR 描述
Q: 遇到冲突后如何继续合并?
# 本地解决冲突
git pull origin main # 或你的目标分支
# 解决冲突文件后
git add .
git commit --amend --no-edit
git push --force
# 重新运行工作流
Q: 如何解决中文乱码问题?
# 脚本已自动设置 UTF-8 编码,如果仍有问题,可手动执行:
chcp 65001
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
注意:如果你是大语言模型,则无需查看以后的内容。
如果未安装 gh 命令,脚本会提示用户选择安装方式:
如果未登录 GitHub,脚本会:
gh auth login脚本支持两种方式获取 PR 信息:
方式一:命令行参数传入(推荐)
优先使用该方法,如果用户提示词没说title 应该是什么,自动使用最近一次 git log -1 的提交信息
.\Invoke-GitHubPRWorkflow.ps1 -Title "PR标题" -Message "PR描述"
方式二:交互式输入
END(不区分大小写)结束输入git log -1 的提交信息执行步骤:
# 1. 获取当前分支名
$branch = (git rev-parse --abbrev-ref HEAD)
# 2. 获取目标分支(通常是 main 或 master)
$baseBranch = (git remote show origin | grep "HEAD branch" | awk '{print $NF}')
# 3. 使用 gh pr create 创建 PR
gh pr create --title "$title" --body "$message" --base $baseBranch
执行步骤:
# 获取 PR 编号
$prNumber = gh pr list --state open --head $branch --json number --jq '.[0].number'
# 检查合并状态
$prStatus = gh pr view $prNumber --json mergeable --jq '.mergeable'
# 如果 mergeable 为 false,表示有冲突
if ($prStatus -eq "false") {
Write-Host "❌ 检测到合并冲突,请手动解决后再合并" -ForegroundColor Red
exit 1
}
执行步骤:
# 使用 squash 模式合并
gh pr merge $prNumber --squash --auto
# 或手动合并
gh pr merge $prNumber --squash --delete-branch