用途
Release Skills 是一个通用发布工作流技能,旨在为任意类型的项目提供标准化的版本发布流程。它能够自动检测项目配置,分析自上一个 Git 标签以来的变更,确定版本号递增规则,生成多语言变更日志,并完成发布提交、附注标签以及 GitHub Release 的创建。
主要能力
- 自动检测项目类型:支持 Node.js(package.json)、Python(pyproject.toml)、Rust(Cargo.toml)、Claude Plugin(marketplace.json 或 .claude-plugin/marketplace.json)以及通用 VERSION / version.txt 文件。
- 变更日志扫描:通过 glob 模式识别 CHANGELOG*.md、HISTORY*.md、CHANGES*.md,并根据文件名后缀判断语言(如 CHANGELOG.zh.md、CHANGELOG_CN.md、CHANGELOG.zh-CN.md)。
- GitHub Release 支持检测:检查 origin 是否指向 GitHub,以及 gh 是否已安装并认证。
- 变更分析与分类:基于约定式提交类型(feat、fix、docs、refactor、perf、test、style、chore)对提交进行分类,并检测破坏性变更(BREAKING CHANGE)。
- 版本号递增判定:按优先级规则确定 major、minor 或 patch 递增,并支持用户通过 --major、--minor、--patch 强制指定。
- 多语言变更日志生成:内置 en、zh、ja、ko、de、fr、es 的分节标题翻译,按目标语言自然撰写变更描述,日期格式统一为 YYYY-MM-DD。
- 第三方贡献者归属:识别非仓库所有者的 PR 作者,并在变更日志条目末尾追加 (by @username)。
- 按技能/模块分组提交:分析提交影响的文件,按 skills/<skill-name> 或 project 分组,分别生成符合约定式提交格式的提交。
- 发布提交与附注标签:创建 chore: release v{VERSION} 提交,并使用发布说明文件创建附注标签(支持签名标签)。
- GitHub Release 发布:使用 gh release create 或 gh release edit 创建或更新 Release,并支持 --backfill-releases 为已有标签补建 Release。
- 项目钩子机制:通过 .releaserc.yml 中的 release.hooks 定义 prepare_artifact 和 publish_artifact,将项目特定的打包与发布逻辑委托给钩子,保持技能通用性。
使用方式
快速开始:运行 /release-skills,技能会自动检测项目配置。
可用选项:
| 选项 | 说明 |
|---|---|
| --dry-run | 预览变更而不执行 |
| --major | 强制主版本号递增 |
| --minor | 强制次版本号递增 |
| --patch | 强制补丁版本号递增 |
| --backfill-releases | 为已有标签从变更日志章节创建缺失的 GitHub Release |
工作流步骤:
- 检测项目配置(版本文件、变更日志、GitHub 支持)。
- 分析自上一个标签以来的变更(git log、git diff)。
- 确定版本号递增。
- 生成多语言变更日志。
- 按技能/模块分组变更。
- 分别提交每个技能/模块。
- 生成变更日志并更新版本文件。
- 用户确认(版本递增、是否推送、是否发布 GitHub Release)。
- 创建发布提交与附注标签。
- 发布项目产物与 GitHub Release。
配置:可在项目根目录创建 .releaserc.yml 覆盖默认设置,包括版本文件路径、变更日志文件列表、分节映射、提交信息格式、标签前缀与签名、以及额外包含文件。
适用场景
- 需要规范化发布流程的多语言项目。
- 使用约定式提交并希望自动生成变更日志的团队。
- 需要同时维护多个语言版本变更日志的开源项目。
- 需要为历史标签补建 GitHub Release 的仓库。
- 希望通过钩子机制自定义打包与发布逻辑的项目。
限制
- 依赖 Git 仓库与标签历史;无标签时可能无法正确分析变更范围。
- GitHub Release 功能需要 gh 已安装并认证,且 origin 指向 GitHub。
- 多语言变更日志的生成质量取决于提交信息的清晰度与约定式提交的遵循程度。
- 破坏性变更检测基于提交信息中的 BREAKING CHANGE 标记或公共 API 变更,可能存在遗漏。
- 默认不重写已发布的轻量标签;将远程标签转换为附注标签需要用户明确确认。
- 在正常模式下,若无法找到发布说明,会停止而不是创建空标签或 GitHub Release。
- 具体收费、价格、平台支持范围等信息暂未提供。