release-skills
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRelease Skills
版本发布技能
Universal release workflow supporting any project type with multi-language changelog.
支持多语言变更日志的通用版本发布工作流,适用于所有项目类型。
Quick Start
快速开始
Just run - auto-detects your project configuration.
/release-skills只需运行 - 自动检测你的项目配置。
/release-skillsSupported Projects
支持的项目类型
| Project Type | Version File | Auto-Detected |
|---|---|---|
| Node.js | package.json | ✓ |
| Python | pyproject.toml | ✓ |
| Rust | Cargo.toml | ✓ |
| Claude Plugin | marketplace.json | ✓ |
| Generic | VERSION / version.txt | ✓ |
| 项目类型 | 版本文件 | 自动检测支持 |
|---|---|---|
| Node.js | package.json | ✓ |
| Python | pyproject.toml | ✓ |
| Rust | Cargo.toml | ✓ |
| Claude Plugin | marketplace.json | ✓ |
| 通用项目 | VERSION / version.txt | ✓ |
Options
选项
| Flag | Description |
|---|---|
| Preview changes without executing |
| Force major version bump |
| Force minor version bump |
| Force patch version bump |
| 标识 | 描述 |
|---|---|
| 预览变更但不执行实际操作 |
| 强制升级主版本号 |
| 强制升级次版本号 |
| 强制升级修订版本号 |
Workflow
工作流
Step 1: Detect Project Configuration
步骤1:检测项目配置
- Check for (optional config override)
.releaserc.yml - Auto-detect version file by scanning (priority order):
- (Node.js)
package.json - (Python)
pyproject.toml - (Rust)
Cargo.toml - or
marketplace.json(Claude Plugin).claude-plugin/marketplace.json - or
VERSION(Generic)version.txt
- Scan for changelog files using glob patterns:
CHANGELOG*.mdHISTORY*.mdCHANGES*.md
- Identify language of each changelog by filename suffix
- Display detected configuration
Language Detection Rules:
| Filename Pattern | Language |
|---|---|
| en (default) |
| zh |
| ja |
| ko |
| de |
| fr |
| es |
| Corresponding language code |
Output Example:
Project detected:
Version file: package.json (1.2.3)
Changelogs:
- CHANGELOG.md (en)
- CHANGELOG.zh.md (zh)
- CHANGELOG.ja.md (ja)- 检查是否存在(可选的配置覆盖文件)
.releaserc.yml - 通过扫描自动检测版本文件(优先级顺序):
- (Node.js)
package.json - (Python)
pyproject.toml - (Rust)
Cargo.toml - 或
marketplace.json(Claude Plugin).claude-plugin/marketplace.json - 或
VERSION(通用项目)version.txt
- 使用通配符模式扫描变更日志文件:
CHANGELOG*.mdHISTORY*.mdCHANGES*.md
- 通过文件名后缀识别每个变更日志的语言
- 显示检测到的配置
语言检测规则:
| 文件名模式 | 语言 |
|---|---|
| en(默认) |
| zh |
| ja |
| ko |
| de |
| fr |
| es |
| 对应的语言代码 |
输出示例:
Project detected:
Version file: package.json (1.2.3)
Changelogs:
- CHANGELOG.md (en)
- CHANGELOG.zh.md (zh)
- CHANGELOG.ja.md (ja)Step 2: Analyze Changes Since Last Tag
步骤2:分析上次标签以来的变更
bash
LAST_TAG=$(git tag --sort=-v:refname | head -1)
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --statCategorize by conventional commit types:
| Type | Description |
|---|---|
| feat | New features |
| fix | Bug fixes |
| docs | Documentation |
| refactor | Code refactoring |
| perf | Performance improvements |
| test | Test changes |
| style | Formatting, styling |
| chore | Maintenance (skip in changelog) |
Breaking Change Detection:
- Commit message starts with
BREAKING CHANGE - Commit body/footer contains
BREAKING CHANGE: - Removed public APIs, renamed exports, changed interfaces
If breaking changes detected, warn user: "Breaking changes detected. Consider major version bump (--major flag)."
bash
LAST_TAG=$(git tag --sort=-v:refname | head -1)
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --stat按约定式提交类型分类:
| 类型 | 描述 |
|---|---|
| feat | 新功能 |
| fix | Bug修复 |
| docs | 文档更新 |
| refactor | 代码重构 |
| perf | 性能优化 |
| test | 测试变更 |
| style | 格式调整、样式优化 |
| chore | 维护工作(变更日志中跳过) |
破坏性变更检测:
- 提交信息以开头
BREAKING CHANGE - 提交正文/脚注包含
BREAKING CHANGE: - 移除了公共API、重命名导出、修改了接口
如果检测到破坏性变更,向用户发出警告:"检测到破坏性变更。建议升级主版本号(使用--major参数)。"
Step 3: Determine Version Bump
步骤3:确定版本号升级规则
Rules (in priority order):
- User flag → Use specified
--major/--minor/--patch - BREAKING CHANGE detected → Major bump (1.x.x → 2.0.0)
- commits present → Minor bump (1.2.x → 1.3.0)
feat: - Otherwise → Patch bump (1.2.3 → 1.2.4)
Display version change:
1.2.3 → 1.3.0规则(按优先级排序):
- 用户指定参数→ 使用指定的升级类型
--major/--minor/--patch - 检测到BREAKING CHANGE → 主版本号升级(1.x.x → 2.0.0)
- 存在类型的提交 → 次版本号升级(1.2.x → 1.3.0)
feat: - 其他情况 → 修订版本号升级(1.2.3 → 1.2.4)
显示版本变更:
1.2.3 → 1.3.0Step 4: Generate Multi-language Changelogs
步骤4:生成多语言变更日志
For each detected changelog file:
- Identify language from filename suffix
- Detect third-party contributors:
- Check merge commits:
git log ${LAST_TAG}..HEAD --merges --pretty=format:"%H %s" - For each merged PR, identify the PR author via
gh pr view <number> --json author --jq '.author.login' - Compare against repo owner ()
gh repo view --json owner --jq '.owner.login' - If PR author ≠ repo owner → third-party contributor
- Check merge commits:
- Generate content in that language:
- Section titles in target language
- Change descriptions written naturally in target language (not translated)
- Date format: YYYY-MM-DD (universal)
- Third-party contributions: Append contributor attribution to the changelog entry
(by @username)
- Insert at file head (preserve existing content)
Section Title Translations (built-in):
| Type | 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 |
Changelog Format:
markdown
undefined针对每个检测到的变更日志文件:
- 识别语言:通过文件名后缀
- 检测第三方贡献者:
- 检查合并提交:
git log ${LAST_TAG}..HEAD --merges --pretty=format:"%H %s" - 对于每个合并的PR,通过识别PR作者
gh pr view <number> --json author --jq '.author.login' - 与仓库所有者对比()
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 |
变更日志格式:
markdown
undefined{VERSION} - {YYYY-MM-DD}
{VERSION} - {YYYY-MM-DD}
Features
Features
- Description of new feature
- Description of third-party contribution (by @username)
- Description of new feature
- Description of third-party contribution (by @username)
Fixes
Fixes
- Description of fix
- Description of fix
Documentation
Documentation
- Description of docs changes
Only include sections that have changes. Omit empty sections.
**Third-Party Attribution Rules**:
- Only add `(by @username)` for contributors who are NOT the repo owner
- Use GitHub username with `@` prefix
- Place at the end of the changelog entry line
- Apply to all languages consistently (always use `(by @username)` format, not translated)
**Multi-language Example**:
English (CHANGELOG.md):
```markdown- Description of docs changes
仅包含有变更的章节,省略空章节。
**第三方署名规则**:
- 仅对非仓库所有者的贡献者添加`(by @username)`
- 使用带@前缀的GitHub用户名
- 放置在变更日志条目行的末尾
- 所有语言统一使用该格式(不翻译)
**多语言示例**:
英文(CHANGELOG.md):
```markdown1.3.0 - 2026-01-22
1.3.0 - 2026-01-22
Features
Features
- Add user authentication module (by @contributor1)
- Support OAuth2 login
- Add user authentication module (by @contributor1)
- Support OAuth2 login
Fixes
Fixes
- Fix memory leak in connection pool
Chinese (CHANGELOG.zh.md):
```markdown- Fix memory leak in connection pool
中文(CHANGELOG.zh.md):
```markdown1.3.0 - 2026-01-22
1.3.0 - 2026-01-22
新功能
新功能
- 新增用户认证模块 (by @contributor1)
- 支持 OAuth2 登录
- 新增用户认证模块 (by @contributor1)
- 支持 OAuth2 登录
修复
修复
- 修复连接池内存泄漏问题
Japanese (CHANGELOG.ja.md):
```markdown- 修复连接池内存泄漏问题
日文(CHANGELOG.ja.md):
```markdown1.3.0 - 2026-01-22
1.3.0 - 2026-01-22
新機能
新機能
- ユーザー認証モジュールを追加 (by @contributor1)
- OAuth2 ログインをサポート
- ユーザー認証モジュールを追加 (by @contributor1)
- OAuth2 ログインをサポート
修正
修正
- コネクションプールのメモリリークを修正
undefined- コネクションプールのメモリリークを修正
undefinedStep 5: Group Changes by Skill/Module
步骤5:按技能/模块分组变更
Analyze commits since last tag and group by affected skill/module:
- Identify changed files per commit
- Group by skill/module:
- → Group under that skill
skills/<skill-name>/* - Root files (CLAUDE.md, etc.) → Group as "project"
- Multiple skills in one commit → Split into multiple groups
- For each group, identify related README updates needed
Example Grouping:
baoyu-cover-image:
- feat: add new style options
- fix: handle transparent backgrounds
→ README updates: options table
baoyu-comic:
- refactor: improve panel layout algorithm
→ No README updates needed
project:
- docs: update CLAUDE.md architecture section分析上次标签以来的提交,并按受影响的技能/模块分组:
- 识别每个提交中变更的文件
- 按技能/模块分组:
- → 归到对应技能下
skills/<skill-name>/* - 根目录文件(如CLAUDE.md等)→ 归为“项目”组
- 一个提交涉及多个技能 → 拆分为多个组
- 针对每个组,识别是否需要更新对应的README
分组示例:
baoyu-cover-image:
- feat: add new style options
- fix: handle transparent backgrounds
→ README updates: options table
baoyu-comic:
- refactor: improve panel layout algorithm
→ No README updates needed
project:
- docs: update CLAUDE.md architecture sectionStep 6: Commit Each Skill/Module Separately
步骤6:单独提交每个技能/模块的变更
For each skill/module group (in order of changes):
-
Check README updates needed:
- Scan for mentions of this skill/module
README*.md - Verify options/flags documented correctly
- Update usage examples if syntax changed
- Update feature descriptions if behavior changed
- Scan
-
Stage and commit:bash
git add skills/<skill-name>/* git add README.md README.zh.md # If updated for this skill git commit -m "<type>(<skill-name>): <meaningful description>" -
Commit message format:
- Use conventional commit format:
<type>(<scope>): <description> - : feat, fix, refactor, docs, perf, etc.
<type> - : skill name or "project"
<scope> - : Clear, meaningful description of changes
<description>
- Use conventional commit format:
Example Commits:
bash
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"Common README Updates Needed:
| Change Type | README Section to Check |
|---|---|
| New options/flags | Options table, usage examples |
| Renamed options | Options table, usage examples |
| New features | Feature description, examples |
| Breaking changes | Migration notes, deprecation warnings |
| Restructured internals | Architecture section (if exposed to users) |
针对每个技能/模块组(按变更顺序):
-
检查是否需要更新README:
- 扫描中提及该技能/模块的内容
README*.md - 验证选项/参数是否已正确文档化
- 如果语法变更,更新使用示例
- 如果行为变更,更新功能描述
- 扫描
-
暂存并提交:bash
git add skills/<skill-name>/* git add README.md README.zh.md # 如果为该技能更新了文档 git commit -m "<type>(<skill-name>): <meaningful description>" -
提交信息格式:
- 使用约定式提交格式:
<type>(<scope>): <description> - : feat、fix、refactor、docs、perf等
<type> - : 技能名称或“project”
<scope> - : 清晰、有意义的变更描述
<description>
- 使用约定式提交格式:
提交示例:
bash
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章节 |
|---|---|
| 新增选项/参数 | 选项表格、使用示例 |
| 选项重命名 | 选项表格、使用示例 |
| 新增功能 | 功能描述、示例 |
| 破坏性变更 | 迁移说明、弃用警告 |
| 内部结构重构 | 架构章节(如果对用户可见) |
Step 7: Generate Changelog and Update Version
步骤7:生成变更日志并更新版本号
- Generate multi-language changelogs (as described in Step 4)
- Update version file:
- Read version file (JSON/TOML/text)
- Update version number
- Write back (preserve formatting)
Version Paths by File Type:
| File | Path |
|---|---|
| package.json | |
| pyproject.toml | |
| Cargo.toml | |
| marketplace.json | |
| VERSION / version.txt | Direct content |
- 生成多语言变更日志(如步骤4所述)
- 更新版本文件:
- 读取版本文件(JSON/TOML/文本)
- 更新版本号
- 写回文件(保留原有格式)
不同文件类型的版本号路径:
| 文件 | 路径 |
|---|---|
| package.json | |
| pyproject.toml | |
| Cargo.toml | |
| marketplace.json | |
| VERSION / version.txt | 直接修改内容 |
Step 8: User Confirmation
步骤8:用户确认
Before creating the release commit, ask user to confirm:
Use AskUserQuestion with two questions:
-
Version bump (single select):
- Show recommended version based on Step 3 analysis
- Options: recommended (with label), other semver options
- Example: ,
1.2.3 → 1.3.0 (Recommended),1.2.3 → 1.2.41.2.3 → 2.0.0
-
Push to remote (single select):
- Options: "Yes, push after commit", "No, keep local only"
Example Output Before Confirmation:
Commits created:
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
Changelog preview (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
Ready to create release commit and tag.在创建发布提交前,请求用户确认:
使用AskUserQuestion提出两个问题:
-
版本升级选择(单选):
- 显示基于步骤3分析的推荐版本
- 选项:推荐版本(带标签)、其他语义化版本选项
- 示例:,
1.2.3 → 1.3.0 (推荐),1.2.3 → 1.2.41.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
变更日志预览(英文):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
准备创建发布提交和标签。Step 9: Create Release Commit and Tag
步骤9:创建发布提交和标签
After user confirmation:
-
Stage version and changelog files:bash
git add <version-file> git add CHANGELOG*.md -
Create release commit:bash
git commit -m "chore: release v{VERSION}" -
Create tag:bash
git tag v{VERSION} -
Push if user confirmed (Step 8):bash
git push origin main git push origin v{VERSION}
Note: Do NOT add Co-Authored-By line. This is a release commit, not a code contribution.
Post-Release Output:
Release v1.3.0 created.
Commits:
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
Tag: v1.3.0
Status: Pushed to origin # or "Local only - run git push when ready"用户确认后:
-
暂存版本文件和变更日志:bash
git add <version-file> git add CHANGELOG*.md -
创建发布提交:bash
git commit -m "chore: release v{VERSION}" -
创建标签:bash
git tag v{VERSION} -
如果用户确认则推送(步骤8):bash
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
状态: 已推送到远程仓库 # 或“仅本地保留 - 准备就绪后运行git push”Configuration (.releaserc.yml)
配置文件(.releaserc.yml)
Optional config file in project root to override defaults:
yaml
undefined可选的配置文件,放置在项目根目录以覆盖默认设置:
yaml
undefined.releaserc.yml - Optional configuration
.releaserc.yml - 可选配置
Version file (auto-detected if not specified)
版本文件(未指定则自动检测)
version:
file: package.json
path: $.version # JSONPath for JSON, dotted path for TOML
version:
file: package.json
path: $.version # JSON文件使用JSONPath,TOML文件使用点分隔路径
Changelog files (auto-detected if not specified)
变更日志文件(未指定则自动检测)
changelog:
files:
- path: CHANGELOG.md
lang: en
- path: CHANGELOG.zh.md
lang: zh
- path: CHANGELOG.ja.md
lang: ja
Section mapping (conventional commit type → changelog section)
Use null to skip a type in changelog
sections:
feat: Features
fix: Fixes
docs: Documentation
refactor: Refactor
perf: Performance
test: Tests
chore: null
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 format
提交信息格式
commit:
message: "chore: release v{version}"
commit:
message: "chore: release v{version}"
Tag format
标签格式
tag:
prefix: v # Results in v1.0.0
sign: false
tag:
prefix: v # 结果为v1.0.0
sign: false
Additional files to include in release commit
发布提交中包含的额外文件
include:
- README.md
- package.json
undefinedinclude:
- README.md
- package.json
undefinedDry-Run Mode
试运行模式
When is specified:
--dry-run=== DRY RUN MODE ===
Project detected:
Version file: package.json (1.2.3)
Changelogs: CHANGELOG.md (en), CHANGELOG.zh.md (zh)
Last tag: v1.2.3
Proposed version: v1.3.0
Changes grouped by skill/module:
baoyu-cover-image:
- feat: add watercolor style
- feat: add minimalist style
→ Commit: feat(baoyu-cover-image): add watercolor and minimalist styles
→ README updates: options table
baoyu-comic:
- fix: panel layout for long dialogues
→ Commit: fix(baoyu-comic): improve panel layout for long dialogues
→ No README updates
Changelog preview (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
Changelog preview (zh):
## 1.3.0 - 2026-01-22
### 新功能
- 为 cover-image 添加水彩和极简风格
### 修复
- 改进 comic 长对话的面板布局
Commits to create:
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
No changes made. Run without --dry-run to execute.当指定参数时:
--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
变更日志预览(英文):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
变更日志预览(中文):
## 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参数以执行实际操作。Example Usage
使用示例
/release-skills # Auto-detect version bump
/release-skills --dry-run # Preview only
/release-skills --minor # Force minor bump
/release-skills --patch # Force patch bump
/release-skills --major # Force major bump (with confirmation)/release-skills # 自动检测版本升级类型
/release-skills --dry-run # 仅预览变更
/release-skills --minor # 强制升级次版本号
/release-skills --patch # 强制升级修订版本号
/release-skills --major # 强制升级主版本号(需确认)When to Use
触发场景
Trigger this skill when user requests:
- "release", "发布", "create release", "new version", "新版本"
- "bump version", "update version", "更新版本"
- "prepare release"
- "push to remote" (with uncommitted changes)
Important: If user says "just push" or "直接 push" with uncommitted changes, STILL follow all steps above first.
当用户提出以下请求时触发该技能:
- "release"、"发布"、"create release"、"new version"、"新版本"
- "bump version"、"update version"、"更新版本"
- "prepare release"
- "push to remote"(存在未提交变更时)
重要提示: 如果用户在存在未提交变更时说"just push"或"直接push",仍需先执行上述所有步骤。