← ClaudeAtlas

pybumplisted

升级 Python 项目版本号,更新 pyproject.toml,提交代码并打 tag
pkulijing/claude-code-global · ★ 0 · AI & Automation · score 56
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`