发布说明生成器Skill release-notes

这是一个用于软件开发发布流程的自动化工具,专门为Context CLI项目生成结构化的发布说明文档。它通过分析Git提交历史,自动提取版本变更、新功能、错误修复等关键信息,并按照标准格式整理成Markdown文件,是DevOps和CI/CD流程中的重要环节。关键词:发布说明生成,自动化文档,Git提交分析,版本管理,DevOps工具,CI/CD集成。

DevOps 0 次安装 0 次浏览 更新于 2/27/2026

name: release-notes description: “为 dist/RELEASE_NOTES.md 生成发布说明。在准备发布或当 hack/release.sh 需要发布说明时使用。”

为 Context CLI 的下一个版本生成发布说明。

开始撰写前

  1. “自上次标签后是否有新的提交?” 如果 HEAD 等于最新的标签,则无需发布。
  2. “VERSION 文件中的版本号是否与预期发布版本一致?” 如果 VERSION 仍显示旧版本,请要求用户先更新它。

何时使用

  • 在运行 hack/release.sh 之前(该脚本需要 dist/RELEASE_NOTES.md 文件)
  • 当用户要求准备或起草发布说明时

何时不使用

  • 用于撰写关于发布的博客文章(请使用 /ctx-blog-changelog
  • 当自上次标签后没有新的提交时

流程

  1. 读取版本号并确定基线
cat VERSION
git describe --tags --abbrev=0 2>/dev/null
  1. 收集自上次标签以来的提交(过滤掉无关信息):
# 实质性提交(跳过 "docs." 和 "minor" 单行提交)
git log <tag>..HEAD --oneline --no-merges \
  | grep -v "^[a-f0-9]* docs\.$" \
  | grep -v "^[a-f0-9]* Doc update\.$" \
  | grep -v "^[a-f0-9]* minor"

# 变更文件统计
git diff --stat <tag>..HEAD | tail -5

# Go 代码变更
git log <tag>..HEAD --oneline --no-merges -- '*.go'

# CI 变更
git log <tag>..HEAD --oneline --no-merges -- '.github/**'

# 依赖项变更
git log <tag>..HEAD --oneline --no-merges -- 'go.mod' 'go.sum'
  1. 读取每个实质性提交的详细提交信息
git show <hash> --format="%B" --stat | head -30
  1. 查看之前的发布说明作为格式参考:
gh release view <tag> --json body -q '.body' | head -60
  1. 综合撰写发布说明
  • 撰写摘要(2-3 句话),说明此版本实现了什么
  • 将变更按逻辑分组
  • 撰写易于理解的描述,而非直接复制提交信息
  • 突出显示破坏性变更
  • 跳过琐碎的变更(拼写错误修复、小的重构)
  1. 写入 dist/RELEASE_NOTES.md 并确认。

输出格式

<img src="https://ctx.ist/images/ctx-banner.png" />

# Context CLI v<版本号>

<摘要段落>

## 亮点

- **加粗标签**: 1-2 句描述

## 新功能

- 功能描述

## 错误修复

- 修复描述

## 重构

- 重构描述(仅在改动显著时列出)

## CI

- CI 变更描述(仅在存在时列出)

## 文档

- 文档变更描述

---

完整更新日志:https://github.com/ActiveMemory/ctx/compare/<上一个标签>...v<版本号>

质量检查清单

  • [ ] VERSION 文件中的版本号与标题一致
  • [ ] 每个实质性提交都有所体现
  • [ ] 仅在有内容时显示对应章节
  • [ ] 正文中不包含原始提交哈希值
  • [ ] 顶部包含横幅图片
  • [ ] 更新日志 URL 使用了正确的标签范围
  • [ ] 输出已写入 dist/RELEASE_NOTES.md
  • [ ] 以 “发布说明已写入 dist/RELEASE_NOTES.md” 结尾

风格

  • 主动语态:使用 “添加 X” 而非 “X 被添加”
  • 不使用破折号;使用 :; 或重新组织句子
  • 仅使用直引号 (", ')
  • 尽可能每条要点占一行