mcpField
J
jackin-release-notes

jackin-release-notes

github.com/jackin-project开发3469 次安装4 周前更新
代码仓库

关于 jackin-release-notes

这项发布说明技能会分类上次发布以来合并的所有 PR,并起草 `CHANGELOG.md` 的 `[Unreleased]` 部分。它也会检查没有对应 PR 的提交,并在发布前提交结果供审核。

主要功能

  1. 01确定上次发布的边界
  2. 02收集已合并的 PR
  3. 03按变更类型分类
  4. 04记录未归组的提交
  5. 05起草并展示 `[Unreleased]`

适用场景

  1. 01准备发布前的变更日志
  2. 02预览下一版本的发布内容
  3. 03确认所有已合并 PR 均有记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jackin-project/jackin-dev --skill jackin-release-notes

安装后在 Claude Code 中输入/jackin-release-notes确认已加载。

附带文件agents/openai.yaml

详细介绍

jackin-release-notes

将自上次发布标签以来合并的每个 PR 分类到 Keep a Changelog 的类别中,然后编写 CHANGELOG.md 的 [Unreleased] 部分。要求完整无遗漏——每个已合并的 PR 都必须列出,不能漏掉,也不能重复。

适用场景

  • 发布前填充变更日志。
  • 操作者要求预览下一个版本将包含哪些内容时。

不适用场景

  • 实际执行发布 → jackin-release(它会在生成发布说明的步骤中运行此技能)。

流程

  1. 查找边界。 LAST_TAG=$(git describe --tags --abbrev=0);如果没有标签,则从初始提交开始(git rev-list --max-parents=0 HEAD)。TAG_DATE=$(git log -1 --format=%aI "$LAST_TAG")。

    完成标准:已确定边界提交及其日期。

  2. 收集合并的 PR。 gh pr list --state merged --base main --search "merged:>$TAG_DATE" --json number,title,labels,mergedAt。

    完成标准:所有标签之后合并的 PR 均已列出。

  3. 逐一分类。 按 Conventional Commits 前缀和标签分类:

    前缀 / 标签类别
    feat: / feature新增
    fix: / bug修复
    security:安全
    refactor:, chore:, docs:, ci:, build:变更
    deprecate:弃用
    remove:移除
    不匹配变更(默认)

    从标题中去掉前缀;将首词首字母大写(feat: add TUI launcher → Add TUI launcher)。

    完成标准:每个 PR 恰好归入一个类别。

  4. 查找未分组的提交。 git log <last-tag>..HEAD --oneline --no-merges;对每个提交运行 gh pr list --state merged --search "<sha>"。没有关联 PR 的提交归入 未分组的提交。

    完成标准:标签之后的每个非合并提交都已匹配到 PR,或已列出。

  5. 编写 [Unreleased]。 使用 Keep a Changelog 格式:每个非空类别单独列为一个部分,每条内容都链接到对应 PR([#N](…/pull/N))。替换现有的 [Unreleased] 区块(从 ## [Unreleased] 到下一个 ## [ 之间)——如果操作者已编辑其中的条目,覆盖前先征求同意。保留 `` 标记不变。

    完成标准:CHANGELOG.md 按正确类别列出了每个已合并的 PR,省略空类别,并保留标记。

  6. 提交审核。 展示该部分;允许操作者重新分类或修改措辞。获得批准前不要继续发布。

幂等性

可安全重复运行:每次都会重新读取 CHANGELOG.md,覆盖现有条目前会征求同意,并从 GitHub 实时获取 PR 数据。

常见错误

  • 漏掉没有 Conventional Commits 前缀的 PR——这类 PR 默认归入 变更,绝不能省略。
  • 列出空类别(“没有 移除条目”没有意义——应删掉该部分)。
  • 忘记在每条内容中添加 PR 链接。
  • 未经询问就覆盖操作者已编辑的 [Unreleased]。

评论

支持 Markdown