---
name: combo-sdk-unity-release-manager
description: Combo SDK for Unity 版本发布管理器。当用户提到发布版本、更新版本号、准备下一版本、合并 CHANGELOG、bump、prepare、changelog-merge、SDK 版本管理等关键词时触发。处理所有与 Unity SDK 版本发布相关的任务。支持 Bump（发布新版本）、Prepare（准备下一版本）和 Changelog Merge（合并发布分支的 CHANGELOG）三种功能。
type: skill
---

# Combo SDK for Unity Release Manager

## 功能说明

Combo SDK for Unity 版本发布管理器，提供三种功能：

| 命令 | 用途 | 是否生成 CHANGELOG | 版本号规则 |
|------|------|-------------------|------------|
| `bump` | 发布新版本 | 是 | 用户指定或移除 `-dev` 后缀 |
| `prepare` | 准备下一版本 | 否 | minor 版本 +1，添加 `-dev` 后缀 |
| `changelog-merge` | 合并发布分支的 CHANGELOG 到 main | 是（合并现有内容） | 不涉及 |

## 目录结构

```
combo-sdk-unity-release-manager/
├── SKILL.md              # 本文件，主入口
├── references/           # 参考文档目录
│   ├── version.md        # 更新 Version.cs 和 package.json
│   └── changelog.md      # 生成并更新 CHANGELOG.md
└── commands/             # 功能目录
    ├── bump.md           # Bump 功能实现
    ├── prepare.md        # Prepare 功能实现
    └── changelog-merge.md # Changelog Merge 功能实现
```

## 使用方式

### Bump 命令 - 发布新版本

| 用户输入 | 说明 |
|----------|------|
| `/combo-sdk-unity-release-manager bump 2.19.0` | 发布正式版 2.19.0 |
| `/combo-sdk-unity-release-manager bump` | 自动从当前版本移除 `-dev` 后发布 |
| `/combo-sdk-unity-release-manager bump 2.19.0，更新内容：新增微信登录` | 发布时提供更新内容 |

### Prepare 命令 - 准备下一版本

| 用户输入 | 说明 |
|----------|------|
| `/combo-sdk-unity-release-manager prepare` | 准备下一版本（minor + 1，添加 `-dev`） |
| `/combo-sdk-unity-release-manager prepare 2.20.0` | 准备指定版本（添加 `-dev` 后缀） |

### Changelog Merge 命令 - 合并发布分支的 CHANGELOG

| 用户输入 | 说明 |
|----------|------|
| `/combo-sdk-unity-release-manager changelog-merge 2.19.0` | 将 v2.19.0 分支的 CHANGELOG 合并到 main |

## 执行流程

### 主入口判断逻辑

1. **判断用户意图**
   - 如果用户输入包含 "bump"、"发布"、"更新到" 等关键词 → 执行 `commands/bump.md`
   - 如果用户输入包含 "prepare"、"准备"、"下一个版本" 等关键词 → 执行 `commands/prepare.md`
   - 如果用户输入包含 "changelog-merge"、"合并 changelog" 等关键词 → 执行 `commands/changelog-merge.md`
   - 如果无法判断，询问用户

2. **调用对应功能**
   - Bump 模式：调用 `commands/bump.md`
   - Prepare 模式：调用 `commands/prepare.md`

3. **功能内部调用参考文档**
   - 两个功能都会调用 `references/version.md` 更新版本号
   - Bump 与 Changelog Merge 模式还会调用 `references/changelog.md` 生成 CHANGELOG

4. **git push 后创建 MR**
   - 所有命令在 git push 成功后，自动通过 `glab mr create` 创建 Merge Request

## 参考文档

### references/version.md

更新版本号到以下文件：
- `Combo/Plugins/Windows/ComboSDK/Runtime/Version.cs` 中的 `SDKVersion`
- `Combo/Plugins/Windows/SeayooAccount/Runtime/Constants.cs` 中的 `SDKVersion`
- `Combo/Runtime/Version.cs` 中的 `SDKVersion`
- `package.json` 中的 `"version"`

### references/changelog.md

生成并更新 CHANGELOG.md：
- 优化用户更新描述
- 分类为 FEATURES / IMPROVEMENTS / BUG FIXES
- 支持从 git log 自动提取更新内容（过滤 demo/ai/ci 相关 commit）

## Git 提交规则

所有命令都会在非 main 分支时自动执行 git 提交：

| 分支 | 操作 |
|------|------|
| `main` 或 `release-` 开头的分支 | 自动创建新分支（如 `bump-VERSION`、`prepare-VERSION`、`changelog-VERSION`），然后执行 git 操作 |
| 其他分支 | 直接执行 `git add`、`git commit`、`git push` |

## MR 创建规则

git push 成功后，自动通过 `glab` 创建 Merge Request：

| 命令 | MR 标题 | 目标分支规则 |
|------|---------|-------------|
| `bump` | `Bump version to TARGET_VERSION` | `z=0` → `main`，`z≠0` → `release-x.y` |
| `prepare` | `Prepare for next release CLEAN_VERSION` | `z=0` → `main`，`z≠0` → `release-x.y` |
| `changelog-merge` | `changelog: Merge release VERSION` | 始终 `main` |

> 版本号格式为 `x.y.z`，当补丁位 `z=0` 时目标为 `main`，`z≠0` 时目标为 `release-x.y`。

所有 MR 自动 assign 给当前用户（`--assignee @me`）。

## 执行要求

1. 严格按照步骤顺序执行
2. 缺少信息时先向用户询问
3. Git 操作安全规则：
   - `main` 分支和 `release-` 开头的分支禁止直接 git push，需先创建分支
   - 执行 git 操作前必须先确认分支名称
4. Prepare 前置检查：当前版本已是 `-dev` 时拒绝执行
5. MR 创建：git push 成功后自动创建，失败时提示用户但不影响已完成的 git 操作

## 示例

### 示例 1：Bump 模式

用户输入：
```
/combo-sdk-unity-release-manager bump 2.19.0
- 新增微信登录
- 优化登录 UI
- 修复 iPad 崩溃
```

执行流程：
1. 识别为 bump 命令
2. 调用 `commands/bump.md`
3. 调用 `references/version.md` 更新版本号为 2.19.0
4. 调用 `references/changelog.md` 生成 CHANGELOG
5. 执行 git 提交并推送
6. 创建 MR → `main`（z=0）

### 示例 2：Prepare 模式

用户输入：
```
/combo-sdk-unity-release-manager prepare
```

假设当前版本号是 "2.18.0"

执行流程：
1. 识别为 prepare 命令
2. 调用 `commands/prepare.md`
3. 检查当前版本不是 `-dev`，继续执行
4. 计算新版本号：2.19.0-dev
5. 调用 `references/version.md` 更新版本号
6. 执行 git 提交并推送
7. 创建 MR → `main`（z=0）

### 示例 3：Prepare 被拒绝

用户输入：
```
/combo-sdk-unity-release-manager prepare
```

假设当前版本号是 "2.19.0-dev"

执行流程：
1. 识别为 prepare 命令
2. 调用 `commands/prepare.md`
3. 检查当前版本已是 `-dev`，提示用户并终止

### 示例 4：Changelog Merge 模式

用户输入：
```
/combo-sdk-unity-release-manager changelog-merge 2.19.0
```

执行流程：
1. 识别为 changelog-merge 命令
2. 调用 `commands/changelog-merge.md`
3. 切换到 v2.19.0 分支，提取 `## 2.19.0` 下的更新内容
4. 切换回 main 分支，创建 changelog-2.19.0 分支
5. 调用 `references/changelog.md` 更新 CHANGELOG.md
6. 执行 git 提交并推送
7. 创建 MR：`changelog-2.19.0` → `main`
