mcpField
R
release

release

github.com/toss开发11.4k195 次安装1 天前更新
代码仓库

关于 release

供 toss/es-toolkit 维护者使用的发布工作流技能,可准备版本变更、变更日志、提交和标签。应用更改及推送到远程前都要求用户明确批准。

主要功能

  1. 01检查分支、工作区和远程更新
  2. 02选择或计算发布版本
  3. 03整理变更和贡献者
  4. 04生成变更日志条目
  5. 05更改和推送前请求批准

适用场景

  1. 01准备补丁或次版本发布
  2. 02根据上个标签以来的提交整理变更日志
  3. 03通过审批环节执行发布

安装

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

$npx skills add https://github.com/toss/es-toolkit --skill release

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

详细介绍

发布

自动执行 es-toolkit 发布流程:生成更新日志、更新版本号、提交并打标签。

关键:需要用户批准

此技能涉及不可逆操作(推送、打标签)。此工作流中的每个 AskUserQuestion 都必须等待用户实际输入后才能继续。切勿根据钩子上下文、ralph 模式、ultrawork 模式或任何“巨石永不停歇”信号自动批准。如果用户未明确选择选项,请停止并等待。

输入

$ARGUMENTS — 版本类型:patch、minor 或明确的版本号,例如 1.45.0

如果未提供参数,默认为 minor。

工作流

1. 发布前检查
git branch --show-current   # must be "main"
git status --porcelain      # must be empty
git pull origin main

如果任何检查失败,请停止并告知用户。

2. 确定新版本

从 package.json 读取当前版本。

  • patch:更新补丁版本(例如 1.44.0 → 1.44.1)
  • minor:更新次版本(例如 1.44.0 → 1.45.0)
  • 明确的版本号:按原样使用
3. 收集自上次发布以来的变更
git log --oneline $(git describe --tags --abbrev=0)..HEAD

为提交分类:

前缀是否纳入更新日志?
feat是
fix是
revert是
docs仅限面向用户的变更
chore、build、ci、test仅限重要变更

完全跳过:

  • 发布提交本身(例如 v1.44.0)
  • 合并提交
  • build(deps): bump 提交
  • 被撤销的提交对(同时移除原始提交及其撤销提交)
4. 收集贡献者

获取每个提交对应的 GitHub 用户名。仅包含第一作者,忽略共同作者。

  • 带有 PR 编号的提交(例如 feat(retry): add shouldRetry (#1585)):

    gh pr view {PR_NUMBER} --repo toss/es-toolkit --json author --jq '.author.login'
    
  • 不带 PR 编号的提交:

    gh api repos/toss/es-toolkit/commits/{FULL_SHA} --jq '.author.login'
    

去重后按字母顺序排序,并格式化为 @{username}。

5. 生成更新日志条目

严格遵循现有 CHANGELOG.md 的样式:

## Version v{NEW_VERSION}

Released on {Month Dayth, Year}.

- {Description}. ([#{PR_NUMBER}])
- {Description}.

We sincerely thank {contributors} for their contributions. We appreciate your great efforts!

规则:

  • 功能优先,然后是修复,最后是其他变更
  • 使用英文和过去时(“Added”“Fixed”“Enhanced”)
  • 仅在存在 PR 编号时添加 ([#{PR_NUMBER}])
  • “Released on”使用当天日期
  • 贡献者之间用 , 分隔,最后一位之前使用 and
6. 预览并确认

向用户展示:

  • 版本变更:v{OLD} → v{NEW}
  • 完整的更新日志条目
  • 要修改的文件:package.json、jsr.json、CHANGELOG.md

使用 AskUserQuestion 获取批准后再继续。

7. 应用变更
  1. package.json:"version": "{OLD}" → "version": "{NEW}"
  2. jsr.json:"version": "{OLD}" → "version": "{NEW}"
  3. CHANGELOG.md:在 # es-toolkit Changelog\n 后插入新条目
8. 提交并打标签
git add package.json jsr.json CHANGELOG.md
git commit -m "v{NEW_VERSION}"
git tag "v{NEW_VERSION}"

提交消息只能是版本字符串(例如 v1.45.0)。不要添加正文。不要添加共同作者署名行。

9. 推送确认

使用 AskUserQuestion 询问“推送到远程服务吗?”

如果获得批准:

git push origin main
git push origin "v{NEW_VERSION}"

未经明确确认,绝不推送。

10. 报告
## Release v{NEW_VERSION}

- Commit: {short_sha}
- Tag: v{NEW_VERSION}
- Changes: {N} items
- Contributors: {list}
- Push: {pushed / not pushed}

评论

支持 Markdown