← ClaudeAtlas

create-release-notelisted

从 PR 和 commit 生成版本发布说明
fitlab-ai/agent-infra · ★ 57 · AI & Automation · score 79
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