pybumplisted
Install: claude install-skill pkulijing/claude-code-global
用户调用此 skill 表示要发布 Python 项目的新版本。
## 参数说明
调用时可附带参数(args),支持以下几种形式:
| 参数 | 含义 | 示例 |
|---|---|---|
| (无) | patch +1 | `1.2.3` → `1.2.4` |
| `X.Y.Z` 等显式版本号 | 直接作为新版本号 | `/pybump 2.0.0` |
| `alpha` / `beta` [+ 修饰符] | 生成预发布版本 | 见下文 |
| `fix` | 生成 post-release 修正版 | `1.2.3` → `1.2.3.post1` |
### alpha / beta 详细规则
PEP 440 中 `X.Y.ZaN` / `X.Y.ZbN` 表示"某个正式版 X.Y.Z 的预发布",排序上 `X.Y.ZaN < X.Y.ZbN < X.Y.Z`。因此生成预发布时,要先确定"目标正式版"。
**当前是正式版**(如 `0.5.2`)时,根据修饰符确定目标:
| 参数 | 目标正式版 | 新版本 |
|---|---|---|
| `alpha` 或 `alpha patch` | 下一个 patch | `0.5.2` → `0.5.3a1` |
| `alpha minor` | 下一个 minor | `0.5.2` → `0.6.0a1` |
| `alpha major` | 下一个 major | `0.5.2` → `1.0.0a1` |
| `alpha 0.6.0` | 显式目标版本 | `0.5.2` → `0.6.0a1` |
| `beta ...` | 同上,换成 `bN` | `0.5.2` → `0.5.3b1` 等 |
**当前已是预发布**(如 `0.6.0a2`)时,不接受 `patch` / `minor` / `major` / 显式目标,只做序号或级别变更:
| 当前 | 参数 | 新版本 |
|---|---|---|
| `0.6.0a2` | `alpha` | `0.6.0a3` |
| `0.6.0a2` | `beta` | `0.6.0b1` |
| `0.6.0b1` | `beta` | `0.6.0b2` |
| `0.6.0b1` | `alpha` | ❌ 报错(不允许从 beta 降级回 alpha) |
如需切换目标正式版,请改用显式版本号,例如 `/pybump 1.0.0a1`。
### fix 详细规则
`.postN` 用于已发布版本的小修正(如文档、打包问题),不含功能变更,排序上 `X.Y.Z < X.Y.Z.post1 < X.Y.Z.post2 < X.Y.(Z+1)`。
| 当前 | 参数 | 新版本 |
|---|---|---|
| `1.2.3` | `fix` | `1.2.3.post1` |
| `1.2.3.post1` | `fix` | `1.2.3.post2` |
| `1.2.3a1` | `fix` | ❌ 报错(预发布版不应使用 post) |
---
执行以下步骤:
## 1. 读取当前版本号
读取项目根目录下 `pyproject.toml` 的 `version` 字段,解析出当前版本号。
## 2. 按参数规则确定新版本号
按"参数说明"一节的规则推导新版本号。建议用 `uv run python` + `packaging.version.Version`