# T Release

> Bump project version, create git tag, and push release commit to remote.

- Skill: `timzaak/t-release` (Agent Skill)
- Install (CLI): `npx skillmds@latest add timzaak/t-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/timzaak/t-release/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: timzaak (https://skillmd.com/u/timzaak)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/timzaak/t-release

---


# 版本发布

发布项目版本，更新版本文件，验证后创建 release commit 和 git tag，并推送到远程。

版本号使用语义化版本，如 `0.2.0`、`1.0.0`。版本文件写入纯版本号 `X.Y.Z`，最终 git tag 必须使用 `vX.Y.Z` 格式。用户输入 `0.2.0` 或 `v0.2.0` 时，都按版本号 `0.2.0` 发布，并创建 tag `v0.2.0`。

## 执行流程

使用发布脚本，不要手工拼接 release 命令。优先用项目自带的脚本，仓库没有才用插件的：

1. 仓库根目录存在 `scripts/release.py` → 用项目脚本：
   ```bash
   python scripts/release.py [版本号]
   ```
2. 没有项目脚本 → 用插件脚本：
   ```bash
   uv run ${CLAUDE_PLUGIN_ROOT}/scripts/release.py [版本号]
   ```

如果用户未提供版本号，先不带参数运行脚本获取推荐版本（在报错输出里），用户确认后再带版本号执行。

两个脚本接口一致，都负责：
- 检查 `main` 分支、干净工作区、远程可访问、tag 不冲突。
- 更新各自清单内的版本文件（项目脚本以仓库实际为准）。
- 运行验证，创建 commit `chore: bump version to <版本号>`，创建并推送 tag `v<版本号>`。

## 失败处理
- 按脚本错误输出处理。
- 验证失败时终止，不创建 commit/tag。
- 推送失败时提示用户本地 commit/tag 状态和手动推送命令。

## Forbidden
- 绕过上述发布脚本手工执行发布。
- 创建或推送不带 `v` 前缀的 release tag。
- 使用 `--force` 推送。

