create-release-notelisted
Install: claude install-skill fitlab-ai/agent-infra
# 创建发布说明
基于已合并的 PR 和提交,为指定版本生成全面的发布说明。
## 执行流程
### 1. 解析参数
从参数中提取:
- `<version>`:当前发布版本(必需),格式 `X.Y.Z`
- `<prev-version>`:上一版本(可选),如未提供则自动检测
### 2. 确定版本范围
**当前标签**:`v<version>`
**上一标签**(如未指定):
```bash
git tag --sort=-v:refname
```
查找 `v<version>` 之前最近的标签。
**验证标签存在**:
```bash
git rev-parse v<version>
git rev-parse v<prev-version>
```
### 3. 参考历史发布说明格式与分类
获取最近多条已发布的 Release Note 作为格式参考,并参考预定义的完整分类清单:
执行前先读取 `.agents/rules/release-commands.md`。
```bash
# Part A:按 `.agents/rules/release-commands.md` 的 release 查询命令逐条获取最近 3 条 Release 的 body
```
**Part B:完整分类清单**
- `🆕 Feature`
- `✨ Enhancement`
- `✅ Bugfix`
- `📚 Documentation`
**用途**:
- Part A:分析最近 3 条历史发布说明的章节结构、标题风格、emoji 使用、条目格式
- Part B:提供静态完整分类清单,确保后续生成时不遗漏已有分类
- 该静态清单用于确保变更分类时不遗漏已有类别名称;若当前版本无该类变更,仍按步骤 7 的格式规则省略空分类
- 后续步骤 7 生成发布说明时,**必须**同时参考步骤 3 的历史格式风格和完整分类清单,保持版本间的一致性
- 如果没有历史��布说明,则使用步骤 7 中定义的默认格式
### 4. 收集已合并的 PR 与贡献者
获取标签之间的日期范围,然后查询已合并的 PR:
```bash
# 获取标签日期
git log v<prev-version> --format=%aI -1
git log v<version> --format=%aI -1
# 获取范围内已合并的 PR(按 `.agents/rules/release-commands.md` 的 merged PR 查询命令执行)
```
同时收集没有 PR 的直接提交:
```bash
git log v<prev-version>..v<version> --format="%H %s" --no-merges
```
从 commit `Co-authored-by` trailer 中收集协作贡献者:
```bash
git log v<prev-version>..v<version> \
--no-merges \
--format='%(trailers:key=Co-authored-by,valueonly,unfold)' \
| grep -v '^$' | sort | uniq -c | sort -rn
```
输出每行一个 `Name <email>`(`uniq -c` 给出该身份在范围内作为 co-author 的 commit 数)。
### 5. 收集关联 Issue