بنقرة واحدة
merge
PR 合并 + 版本发布一体化流程(阶段 0-6),含本地验证、PR 合并、CI 等待、版本 bump、Release 创建、交付物验证。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
PR 合并 + 版本发布一体化流程(阶段 0-6),含本地验证、PR 合并、CI 等待、版本 bump、Release 创建、交付物验证。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
发布 llm-simple-router 预发布版本(beta dist-tag)用于测试。 创建 beta-* 分支,自动计算 prerelease 版本号,push 触发 CI 发布到 npm @beta tag + Docker :beta tag,轮询验证后还原代码。 触发词:"预发布"、"prerelease"、"发beta包"、"测试发布"。 仅用于 llm-simple-router 项目。不用于正式发布——那个用 merge skill。
Use when the user wants to publish a beta prerelease for llm-simple-router. Publishes both npm package (@beta dist-tag) and Docker image (:beta tag). Triggers: "beta 发布", "beta publish", "发beta包", "beta包", "docker beta". Not for official releases (use merge skill instead).
审查代码变更。触发词:"review"、"审查代码"、"code review"、 "帮我看看代码"。仅用于 llm-simple-router 项目。
提交 Pull Request。触发词:"提交 PR"、"创建 PR"、"push"、"提交代码"、 "pr-worktree"。仅用于 llm-simple-router 项目。
| name | merge |
| description | PR 合并 + 版本发布一体化流程(阶段 0-6),含本地验证、PR 合并、CI 等待、版本 bump、Release 创建、交付物验证。 |
执行 6+1 阶段合并发布流程。阶段 0-6 由 merge.sh 一体化完成,阶段 7(清理)由独立 cleanup.sh 执行,需 AI/用户确认。
llm-simple-router(Node.js monorepo,npm workspaces)npm run build(router + frontend,pi-extension 不构建)publish.yml)
workflow_dispatch 触发(gh workflow run publish.yml --ref main -f bump_type=patch|minor|major),由 scripts/publish.sh 发起.pi/skills/beta-publish/ 覆盖):push: branches: ['beta-*'] 触发,详见末尾"Beta 发布"小节llm-simple-router tag=latest)+ Docker image(ghcr.io)+ GitHub Release + dist archive asset1.0.3;子包独立版本(router 1.0.4 / pi-extension 0.1.0 / frontend 0.0.0)根据 worktree 状态选择入口:
| 场景 | 入口 | 说明 |
|---|---|---|
| feature worktree 还在(含 PR 已合并但未清理) | merge.sh <wt> patch | 阶段 2 幂等跳过已合并 PR,直接走发布流程;一站式完成发布+验证+清理 |
| worktree 已删 / 只想发布 main 上已合并的改动 | scripts/publish.sh patch | 不依赖 worktree,前置检查 main 是否有未发布改动,触发完整发布链路 |
禁止裸 gh pr merge [MANDATORY]:任何 PR 合并必须走上述两个入口之一。
裸合并(GitHub UI / gh pr merge)只产出 GHCR latest(由 ci.yml 在 push main 时推送),
不会发布 npm 包、不会打 GitHub Release、不会推阿里云 ACR,导致三处产物版本割裂。
两个入口都会验证交付物:
| 产物 | merge.sh 阶段 6 | publish.sh 步骤 4 |
|---|---|---|
| GitHub Release + Asset | ✅ | ✅ |
| npm 包 | ✅ | ✅ |
| Docker GHCR | ✅ | ✅ |
| 阿里云 ACR | ℹ️ 依赖 CI success | ℹ️ 依赖 CI success |
阿里云 ACR 无公开查询 API,与 GHCR 在同一 workflow 步骤(6.5)推送, workflow success 即保证 ACR 已推(CI 失败会让整条流水线失败)。
cd /Users/zhushanwen/Code/llm-simple-router-workspace
# 完整流程
bash .pi/skills/merge/merge.sh <worktree-dir> [patch|minor|major]
# 指定 release notes 文件
bash .pi/skills/merge/merge.sh <worktree-dir> patch --notes release-notes.md
# 创建 Draft Release(不自动发布)
bash .pi/skills/merge/merge.sh <worktree-dir> patch --draft
# 阶段 3 失败,修复后从阶段 3 继续(跳过已完成的 0-2)
bash .pi/skills/merge/merge.sh <worktree-dir> patch --from 3
# 阶段 5 失败,从阶段 5 重试
bash .pi/skills/merge/merge.sh <worktree-dir> patch --from 5
--from参数值 0-6,对应阶段号。阶段 0(初始化)总是会执行(很快且幂等)。
# 确认交付物无误后,清理 feature worktree
bash .pi/skills/merge/cleanup.sh <worktree-dir>
# 跳过同步其他 worktree
bash .pi/skills/merge/cleanup.sh <worktree-dir> --skip-sync
⚠️ 破坏性操作,需 AI/用户明确确认后再执行。
| 参数 | 必填 | 说明 |
|---|---|---|
<worktree-dir> | ✅ | feature worktree 目录路径 |
[patch|minor|major] | 否 | 版本类型,默认 patch |
--notes <file> | 否 | 指定 release notes 文件 |
--draft | 否 | 创建 Draft Release |
--from <N> | 否 | 从阶段 N 继续执行(1-6),阶段 0 始终执行 |
解析参数、检测环境(gh CLI、workspace root、main worktree、GitHub repo)、查找 PR、初始化日志。
幂等:总是执行(很快)。
调用 pre-merge-check.sh 执行完整验证:依赖检查 → TypeScript 类型检查 → Lint → 单元测试 → 构建 → Git 状态检查。
不可跳过:任何失败必须正面修复。
失败恢复:
# 修复后重跑
bash .pi/skills/merge/merge.sh <worktree-dir> patch --from 1
等待 PR CI 通过(最多 10 分钟),然后合并 PR。
幂等:PR 已合并则跳过。
等待 main 分支上的 CI workflow 通过。
特殊:如果项目无 CI workflow,自动跳过。
scripts/publish.sh → 调用它(通常是 gh workflow run publish.yml)幂等:当前版本 Release 已存在则跳过发布脚本。
从 conventional commits 自动生成 release notes,创建/更新 GitHub Release。
验证发布产物完整性:Release 存在 → 构建产物/npm 包 → 发布状态。
不可跳过:只有通过验证才能执行清理。
由 cleanup.sh 独立执行,不在 merge.sh 中:
git merge --no-ff main)cleanup.sh每个阶段独立,失败后修复 + --from N 重跑即可:
# 查看错误信息,定位问题
# 在 feature worktree 或 main worktree 中修复
# 从失败阶段继续
bash .pi/skills/merge/merge.sh <worktree-dir> patch --from <N>
AI: 我来帮你执行合并发布流程。
→ bash merge.sh feat-xxx patch
→ 阶段 0-6 顺序执行
如果失败:
→ AI 分析错误,修复代码
→ bash merge.sh feat-xxx patch --from <N>
阶段 6 通过后:
AI: 交付物验证通过!v1.0.5 已发布。
要清理 feat-xxx worktree 吗?
用户: 确认
AI: → bash cleanup.sh feat-xxx
.pi/skills/merge/
SKILL.md # 本文件
merge.sh # 主流程脚本(阶段 0-6)
cleanup.sh # 清理脚本(阶段 7,独立执行)
pre-merge-check.sh # 阶段 1 调用的本地验证脚本
wait-for-ci.sh # 阶段 3/4 调用的 CI 等待脚本
| 退出码 | 含义 | AI 行为 |
|---|---|---|
| 0 | 成功 | 继续下一步 |
| 1 | 失败 | 查看错误信息,修复后 --from N 重跑 |
本 skill 不覆盖 beta 发布。AI 收到 "发 beta" / "beta publish" 类指令时,应直接调用:
bash .pi/skills/beta-publish/beta-publish.sh -y
详见 .pi/skills/beta-publish/SKILL.md。
| 标记 | 含义 | 修改约束 |
|---|---|---|
[HISTORICAL] | 历史经验总结的规则 | 不允许删除或削弱 |
[MANDATORY] | 流程强制要求 | 必须严格遵守 |
[OPTIONAL] | 可选步骤 | 可根据项目需求调整 |