# Update Version

> 根据 git diff 差异自动更新版本号到 update_info.txt 和 version 文件。 小改递增小版本，大修递增主版本；update_info.txt 仅保留最新更新， version 文件追加保留完整历史；完成后自动调用 humanizer-zh。

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

---


# Update Version: 自动更新版本号

根据 git diff 的差异自动更新版本号，维护 `update_info.txt` 和 `version` 两个文件。遵循项目约定的版本管理流程。

---

## 你的任务

当调用此技能时：

1. **读取当前版本** - 从 `version` 文件获取最新版本号
2. **分析修改规模** - 执行 `git diff` 统计变更行数和范围
3. **判断版本递增** - 根据修改规模决定递增哪一位：
   - **小改**（< 100 行变更）：小版本号递增（v2.3.7 → v2.3.8）
   - **大修**（≥ 100 行变更 / 新增模块 / 架构重构）：次版本号递增（v2.3.8 → v2.4）
   - **破坏性变更**：主版本号递增（v2.x → v3.0）
4. **生成更新内容** - 从 git diff 自动提取更新内容描述
5. **更新文件**：
   - `update_info.txt`：**仅保留最新版本**的更新记录（不带日期）
   - `version` 文件：**追加**新版本信息到文件末尾（带当前日期），保留所有历史
6. **人性化处理** - 调用 `/humanizer-zh` 优化更新描述
7. **输出结果** - 显示新版本号和更新内容，提示可以提交

---

## 文件格式约定

### update_info.txt（项目根目录）

格式要求：
- 仅保留**最新一个版本**的更新记录
- 以 `vX.X.X` 开头，**不带日期**
- 使用有序列表列出更新项

示例：
```
v2.3.8
1. 优化：高频攻击检测存储流程集成 MappingFieldValidator，自动处理数据格式适配
2. 优化：批量写入前增加空数据检查，避免无数据时的无效写入
3. 清理：移除未使用的 tornado 导入
```

### version（项目根目录）

格式要求：
- 保留**所有历史版本**记录
- 每个版本追加到文件末尾
- 以 `###vX.X.X - YYYY.MM.DD` 开头，**带当前日期**

示例：
```
###v2.3.7 - 2026.03.25
1. 修复 RC Information 异步任务参数缺失问题，Celery 任务新增 platform 参数

###v2.3.8 - 2026.03.25
1. 优化：高频攻击检测存储流程集成 MappingFieldValidator，自动处理数据格式适配
2. 优化：批量写入前增加空数据检查，避免无数据时的无效写入
3. 清理：移除未使用的 tornado 导入
```

---

## 版本递增规则

| 修改类型 | 变更规模 | 递增位 | 示例 |
|---------|---------|--------|------|
| **小改** | 局部修复、优化、清理（< 100 行） | 第三位（修订号） | v2.3.7 → v2.3.8 |
| **大修** | 新增功能、重构模块（≥ 100 行） | 第二位（次版本） | v2.3.8 → v2.4 |
| **不兼容** | 破坏性变更、API 重构 | 第一位（主版本） | v2.4 → v3.0 |

---

## 执行步骤详解

### 1. 获取当前版本
- 读取 `version` 文件的最后一个版本号
- 解析为 `主版本.次版本.修订号` 格式

### 2. 分析 git diff
- 执行 `git diff` 获取当前所有未提交的修改
- 统计变更行数判断修改规模
- 从 diff 中提取修改内容生成更新描述
  - 新增文件/功能 → 标记为"新增"
  - 修改代码逻辑 → 标记为"优化"或"修复"
  - 删除无用代码 → 标记为"清理"

### 3. 更新文件
- **update_info.txt**：覆盖写入，只放最新版本
- **version**：追加到文件末尾，保留历史

### 4. 人性化处理
- 提取更新描述文本
- 调用 `humanizer-zh` 去除 AI 生成痕迹
- 输出最终结果

---

## 特殊情况处理

### 用户指定版本号
如果调用时用户明确指定了版本号，遵循用户指定，不自动判断。

### 文件不存在
如果 `update_info.txt` 或 `version` 不存在，提示用户创建，并询问初始版本号。

### 无 git diff
如果没有任何修改，提示用户先修改代码。

---

## 完整示例

**执行前（当前 version 末尾）：**
```
###v2.3.7 - 2026.03.25
1. 修复 RC Information 异步任务参数缺失问题，Celery 任务新增 platform parameter
```

**git diff 显示：**
- 修改了 2 个文件，共约 30 行变更
- 新增集成 `MappingFieldValidator`
- 增加空数据检查
- 移除未使用导入

**判断：** 30 行 < 100 行 → 小改 → v2.3.7 → **v2.3.8**

**执行后 update_info.txt：**
```
v2.3.8
1. 优化高频攻击检测存储流程，集成 MappingFieldValidator 自动适配数据格式
2. 批量写入前增加空数据检查，避免无效写入
3. 移除未使用的 tornado 导入
```

**执行后 version 文件末尾新增：**
```
###v2.3.8 - 2026.03.25
1. 优化高频攻击检测存储流程，集成 MappingFieldValidator 自动适配数据格式
2. 批量写入前增加空数据检查，避免无效写入
3. 移除未使用的 tornado 导入
```

---

## 质量检查清单

完成更新后确认：

- ✓ 版本号递增符合修改规模
- ✓ update_info.txt 只保留最新版本
- ✓ version 文件追加方式保留完整历史
- ✓ version 中每条记录都有当前日期
- ✓ update_info 不带日期，符合项目约定
- ✓ 更新描述准确反映 git diff 的实际修改
- ✓ 已调用 humanizer-zh 处理描述文本

---

## 输出格式

执行完成后输出：

1. 新版本号
2. 更新内容列表
3. 提示用户可以提交

示例输出：
```
版本更新完成：**v2.3.8**

更新内容：
1. 优化高频攻击检测存储流程，集成 MappingFieldValidator 自动适配数据格式
2. 批量写入前增加空数据检查，避免无效写入
3. 移除了未使用的 tornado 导入

`update_info.txt` 和 `version` 文件已更新，可以提交了。
```
version: v1.0.0

