名称: release-skills 描述: 通用发布工作流。自动检测版本文件和更新日志。支持 Node.js、Python、Rust、Claude Plugin 和通用项目。当用户说“release”、“发布”、“new version”、“bump version”、“push”、“推送”时使用。
发布技能
通用发布工作流,支持任何项目类型,包含多语言更新日志。
快速开始
只需运行 /release-skills - 自动检测您的项目配置。
支持的项目
| 项目类型 | 版本文件 | 自动检测 |
|---|---|---|
| Node.js | package.json | ✓ |
| Python | pyproject.toml | ✓ |
| Rust | Cargo.toml | ✓ |
| Claude Plugin | marketplace.json | ✓ |
| 通用 | VERSION / version.txt | ✓ |
选项
| 标志 | 描述 |
|---|---|
--dry-run |
预览更改而不执行 |
--major |
强制主版本升级 |
--minor |
强制次版本升级 |
--patch |
强制补丁版本升级 |
工作流
步骤 1: 检测项目配置
- 检查
.releaserc.yml(可选配置覆盖) - 通过扫描自动检测版本文件(优先级顺序):
package.json(Node.js)pyproject.toml(Python)Cargo.toml(Rust)marketplace.json或.claude-plugin/marketplace.json(Claude Plugin)VERSION或version.txt(通用)
- 使用 glob 模式扫描更新日志文件:
CHANGELOG*.mdHISTORY*.mdCHANGES*.md
- 通过文件名后缀识别每个更新日志的语言
- 显示检测到的配置
语言检测规则:
| 文件名模式 | 语言 |
|---|---|
CHANGELOG.md(无后缀) |
en(默认) |
CHANGELOG.zh.md / CHANGELOG_CN.md / CHANGELOG.zh-CN.md |
zh |
CHANGELOG.ja.md / CHANGELOG_JP.md |
ja |
CHANGELOG.ko.md / CHANGELOG_KR.md |
ko |
CHANGELOG.de.md / CHANGELOG_DE.md |
de |
CHANGELOG.fr.md / CHANGELOG_FR.md |
fr |
CHANGELOG.es.md / CHANGELOG_ES.md |
es |
CHANGELOG.{lang}.md |
对应语言代码 |
输出示例:
检测到的项目:
版本文件:package.json (1.2.3)
更新日志:
- CHANGELOG.md (en)
- CHANGELOG.zh.md (zh)
- CHANGELOG.ja.md (ja)
步骤 2: 分析自上次标签以来的更改
LAST_TAG=$(git tag --sort=-v:refname | head -1)
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --stat
按约定提交类型分类:
| 类型 | 描述 |
|---|---|
| feat | 新功能 |
| fix | 错误修复 |
| docs | 文档 |
| refactor | 代码重构 |
| perf | 性能改进 |
| test | 测试更改 |
| style | 格式化、样式 |
| chore | 维护(跳过在更新日志中) |
重大更改检测:
- 提交消息以
BREAKING CHANGE开头 - 提交正文/页脚包含
BREAKING CHANGE: - 移除的公共 API、重命名的导出、更改的接口
如果检测到重大更改,警告用户:“检测到重大更改。考虑主版本升级(–major 标志)。”
步骤 3: 确定版本升级
规则(按优先级顺序):
- 用户标志
--major/--minor/--patch→ 使用指定的 - 检测到 BREAKING CHANGE → 主版本升级 (1.x.x → 2.0.0)
- 存在
feat:提交 → 次版本升级 (1.2.x → 1.3.0) - 其他情况 → 补丁版本升级 (1.2.3 → 1.2.4)
显示版本更改:1.2.3 → 1.3.0
步骤 4: 生成多语言更新日志
对于每个检测到的更新日志文件:
- 识别语言 从文件名后缀
- 检测第三方贡献者:
- 检查合并提交:
git log ${LAST_TAG}..HEAD --merges --pretty=format:"%H %s" - 对于每个合并的 PR,通过
gh pr view <number> --json author --jq '.author.login'识别 PR 作者 - 与仓库所有者对比 (
gh repo view --json owner --jq '.owner.login') - 如果 PR 作者 ≠ 仓库所有者 → 第三方贡献者
- 检查合并提交:
- 以该语言生成内容:
- 目标语言的分段标题
- 更改描述以目标语言自然书写(不翻译)
- 日期格式:YYYY-MM-DD(通用)
- 第三方贡献:将贡献者归属
(by @username)附加到更新日志条目
- 插入到文件头部(保留现有内容)
分段标题翻译(内置):
| 类型 | en | zh | ja | ko | de | fr | es |
|---|---|---|---|---|---|---|---|
| feat | Features | 新功能 | 新機能 | 새로운 기능 | Funktionen | Fonctionnalités | Características |
| fix | Fixes | 修复 | 修正 | 수정 | Fehlerbehebungen | Corrections | Correcciones |
| docs | Documentation | 文档 | ドキュメント | 문서 | Dokumentation | Documentation | Documentación |
| refactor | Refactor | 重构 | リファクタリング | 리팩토링 | Refactoring | Refactorisation | Refactorización |
| perf | Performance | 性能优化 | パフォーマンス | 성능 | Leistung | Performance | Rendimiento |
| breaking | Breaking Changes | 破坏性变更 | 破壊的変更 | 주요 변경사항 | Breaking Changes | Changements majeurs | Cambios importantes |
更新日志格式:
## {VERSION} - {YYYY-MM-DD}
### 新功能
- 新功能描述
- 第三方贡献描述 (by @username)
### 修复
- 修复描述
### 文档
- 文档更改描述
仅包含有更改的部分。省略空部分。
第三方归属规则:
- 仅为非仓库所有者的贡献者添加
(by @username) - 使用带
@前缀的 GitHub 用户名 - 放置在更新日志条目行末
- 一致应用于所有语言(始终使用
(by @username)格式,不翻译)
多语言示例:
英文 (CHANGELOG.md):
## 1.3.0 - 2026-01-22
### Features
- Add user authentication module (by @contributor1)
- Support OAuth2 login
### Fixes
- Fix memory leak in connection pool
中文 (CHANGELOG.zh.md):
## 1.3.0 - 2026-01-22
### 新功能
- 新增用户认证模块 (by @contributor1)
- 支持 OAuth2 登录
### 修复
- 修复连接池内存泄漏问题
日文 (CHANGELOG.ja.md):
## 1.3.0 - 2026-01-22
### 新機能
- ユーザー認証モジュールを追加 (by @contributor1)
- OAuth2 ログインをサポート
### 修正
- コネクションプールのメモリリークを修正
步骤 5: 按技能/模块分组更改
分析自上次标签以来的提交,并按受影响的技能/模块分组:
- 识别每个提交更改的文件
- 按技能/模块分组:
skills/<skill-name>/*→ 分组到该技能下- 根文件(CLAUDE.md 等) → 分组为“项目”
- 一个提交中涉及多个技能 → 拆分为多个组
- 对于每个组,识别相关的 README 更新需求
示例分组:
baoyu-cover-image:
- feat: add new style options
- fix: handle transparent backgrounds
→ README 更新:选项表
baoyu-comic:
- refactor: improve panel layout algorithm
→ 无需 README 更新
项目:
- docs: update CLAUDE.md architecture section
步骤 6: 分别提交每个技能/模块
对于每个技能/模块组(按更改顺序):
-
检查 README 更新需求:
- 扫描
README*.md中对该技能/模块的提及 - 验证选项/标志是否正确记录
- 如果语法更改,更新使用示例
- 如果行为更改,更新功能描述
- 扫描
-
暂存和提交:
git add skills/<skill-name>/* git add README.md README.zh.md # 如果为该技能更新 git commit -m "<type>(<skill-name>): <有意义的描述>" -
提交消息格式:
- 使用约定提交格式:
<type>(<scope>): <description> <type>:feat、fix、refactor、docs、perf 等<scope>:技能名称或“项目”<description>:清晰、有意义的更改描述
- 使用约定提交格式:
示例提交:
git commit -m "feat(baoyu-cover-image): add watercolor and minimalist styles"
git commit -m "fix(baoyu-comic): improve panel layout for long dialogues"
git commit -m "docs(project): update architecture documentation"
常见 README 更新需求:
| 更改类型 | 需检查的 README 部分 |
|---|---|
| 新选项/标志 | 选项表、使用示例 |
| 重命名选项 | 选项表、使用示例 |
| 新功能 | 功能描述、示例 |
| 重大更改 | 迁移说明、弃用警告 |
| 重构的内部结构 | 架构部分(如果暴露给用户) |
步骤 7: 生成更新日志并更新版本
- 生成多语言更新日志(如步骤 4 所述)
- 更新版本文件:
- 读取版本文件(JSON/TOML/文本)
- 更新版本号
- 写回(保留格式)
版本路径按文件类型:
| 文件 | 路径 |
|---|---|
| package.json | $.version |
| pyproject.toml | project.version |
| Cargo.toml | package.version |
| marketplace.json | $.metadata.version |
| VERSION / version.txt | 直接内容 |
步骤 8: 用户确认
在创建发布提交前,请求用户确认:
使用 AskUserQuestion 有两个问题:
-
版本升级(单选):
- 显示基于步骤 3 分析的推荐版本
- 选项:推荐的(带标签)、其他 semver 选项
- 示例:
1.2.3 → 1.3.0(推荐)、1.2.3 → 1.2.4、1.2.3 → 2.0.0
-
推送到远程(单选):
- 选项:“是,提交后推送”、“否,仅保持本地”
确认前示例输出:
创建的提交:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. docs(project): update architecture documentation
更新日志预览(en):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
准备创建发布提交和标签。
步骤 9: 创建发布提交和标签
用户确认后:
-
暂存版本和更新日志文件:
git add <版本文件> git add CHANGELOG*.md -
创建发布提交:
git commit -m "chore: release v{VERSION}" -
创建标签:
git tag v{VERSION} -
如果用户确认(步骤 8):
git push origin main git push origin v{VERSION}
注意:不要添加 Co-Authored-By 行。这是发布提交,不是代码贡献。
发布后输出:
发布 v1.3.0 已创建。
提交:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. docs(project): update architecture documentation
4. chore: release v1.3.0
标签:v1.3.0
状态:已推送到 origin # 或“仅本地 - 准备时运行 git push”
配置 (.releaserc.yml)
项目根目录中的可选配置文件以覆盖默认值:
# .releaserc.yml - 可选配置
# 版本文件(如果未指定则自动检测)
version:
file: package.json
path: $.version # JSON 的 JSONPath,TOML 的点路径
# 更新日志文件(如果未指定则自动检测)
changelog:
files:
- path: CHANGELOG.md
lang: en
- path: CHANGELOG.zh.md
lang: zh
- path: CHANGELOG.ja.md
lang: ja
# 分段映射(约定提交类型 → 更新日志分段)
# 使用 null 跳过在更新日志中的类型
sections:
feat: Features
fix: Fixes
docs: Documentation
refactor: Refactor
perf: Performance
test: Tests
chore: null
# 提交消息格式
commit:
message: "chore: release v{version}"
# 标签格式
tag:
prefix: v # 结果如 v1.0.0
sign: false
# 发布提交中要包含的附加文件
include:
- README.md
- package.json
干运行模式
指定 --dry-run 时:
=== 干运行模式 ===
检测到的项目:
版本文件:package.json (1.2.3)
更新日志:CHANGELOG.md (en), CHANGELOG.zh.md (zh)
上次标签:v1.2.3
建议版本:v1.3.0
按技能/模块分组的更改:
baoyu-cover-image:
- feat: add watercolor style
- feat: add minimalist style
→ 提交:feat(baoyu-cover-image): add watercolor and minimalist styles
→ README 更新:选项表
baoyu-comic:
- fix: panel layout for long dialogues
→ 提交:fix(baoyu-comic): improve panel layout for long dialogues
→ 无需 README 更新
更新日志预览(en):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
更新日志预览(zh):
## 1.3.0 - 2026-01-22
### 新功能
- 为 cover-image 添加水彩和极简风格
### 修复
- 改进 comic 长对话的面板布局
要创建的提交:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. chore: release v1.3.0
未进行更改。运行不带 --dry-run 以执行。
示例用法
/release-skills # 自动检测版本升级
/release-skills --dry-run # 仅预览
/release-skills --minor # 强制次版本升级
/release-skills --patch # 强制补丁版本升级
/release-skills --major # 强制主版本升级(带确认)
何时使用
当用户请求时触发此技能:
- “release”、“发布”、“create release”、“new version”、“新版本”
- “bump version”、“update version”、“更新版本”
- “prepare release”
- “push to remote”(带未提交的更改)
重要:如果用户说“just push”或“直接 push”并带未提交的更改,仍需首先遵循所有上述步骤。