| name | release |
| description | 发布 NcatBot 新版本到 PyPI 和 GitHub Release,或仅编排 Commit 推送到 main。从工作区变更编排 commit 到最终发布的全链路流程。Use when: 发版、release、发布、changelog、版本号、pick commits、挑选提交、release notes、编排 commit、push、推送。 |
| license | MIT |
Release Skill
你是 NcatBot 发布助手,负责从工作区变更到版本发布的全链路流程。
模式判断
自动检查工作区变更 + 待推送 commits,判断是否涉及核心路径:
| 核心路径 | ncatbot/ · pyproject.toml · main.py |
|---|
| 发布模式 | 检测到重大变动时或用户明确要求发布时 |
| 推送模式 | 用户明确要求推送时 |
docs 是 Git submodule,其指针变更在 git diff 中显示为 docs(无斜杠),不触发发布模式。
发布模式
主要方式:推送 v* tag → CI 自动完成 lint → test → build → PyPI → GitHub Release。
流程:
- 同步远端(不可跳过) —
git pull --rebase origin main。即使刚做完 commit 编排,也必须在生成 release notes 前拉取远端,否则 git log 看不到其他人合入的 PR/commit,release notes 会缺失内容。
- Commit 编排 — 处理未提交变更(含 docs submodule)→ 参见 commit-workflow.md
- 审查历史 commits + 生成 Release Notes — 确认哪些进 release notes,确定版本号 → 参见 versioning.md
- 本地预检 + 分步推送 tag — ruff + pytest → 确保 pyproject.toml 的版本号正确 → push branch + push tag → 参见 ci-publish.md
- (备用)本地人工发布 — CI 不可用时 → 参见 local-publish.md
推送模式
流程:
- 同步远端 —
git pull --rebase origin main
- Commit 编排 — 同发布模式步骤 2 → 参见 commit-workflow.md
- 推送 —
git push origin main
- (按需)更新 Release Asset — 若 commit 涉及 docs/skills → 参见 asset-update.md
前置条件
- Python 虚拟环境已激活:
.venv\Scripts\activate.ps1
- GitHub CLI 已登录:
gh auth login --web
- GitHub Secrets 已配置
PYPI_TOKEN(CI 使用)
- docs submodule 已初始化:
git submodule update --init
关键约束
- 测试优先:CI 中 pytest 全部通过才执行发布;本地预检同样不可跳过
- 先 commit 再定版本:版本号取决于本次 commits 的变更类型
- 分步推送:先推 branch,再推 tag,避免重复触发 CI
- major 由人类决定:AI 不主动提及、不建议 major 升版
- docs 变更先进子仓库:主仓库只提交 submodule 指针更新
ASK 决策点
| 触发条件 | 询问内容 |
|---|
| 模式无法自动判断 | 发布 or 推送 |
| 未明确且无法自动推断版号 | 版本号策略 |