发布技能Skill release-skills

这是一个通用发布工作流技能,自动检测项目配置和版本文件,支持多语言更新日志生成,用于软件版本管理、发布和DevOps自动化。关键词包括发布、版本控制、自动化工作流、多语言支持、CI/CD、Git、更新日志、项目维护。

DevOps 0 次安装 0 次浏览 更新于 3/9/2026

名称: 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: 检测项目配置

  1. 检查 .releaserc.yml(可选配置覆盖)
  2. 通过扫描自动检测版本文件(优先级顺序):
    • package.json(Node.js)
    • pyproject.toml(Python)
    • Cargo.toml(Rust)
    • marketplace.json.claude-plugin/marketplace.json(Claude Plugin)
    • VERSIONversion.txt(通用)
  3. 使用 glob 模式扫描更新日志文件:
    • CHANGELOG*.md
    • HISTORY*.md
    • CHANGES*.md
  4. 通过文件名后缀识别每个更新日志的语言
  5. 显示检测到的配置

语言检测规则:

文件名模式 语言
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: 确定版本升级

规则(按优先级顺序):

  1. 用户标志 --major/--minor/--patch → 使用指定的
  2. 检测到 BREAKING CHANGE → 主版本升级 (1.x.x → 2.0.0)
  3. 存在 feat: 提交 → 次版本升级 (1.2.x → 1.3.0)
  4. 其他情况 → 补丁版本升级 (1.2.3 → 1.2.4)

显示版本更改:1.2.3 → 1.3.0

步骤 4: 生成多语言更新日志

对于每个检测到的更新日志文件:

  1. 识别语言 从文件名后缀
  2. 检测第三方贡献者:
    • 检查合并提交: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 作者 ≠ 仓库所有者 → 第三方贡献者
  3. 以该语言生成内容:
    • 目标语言的分段标题
    • 更改描述以目标语言自然书写(不翻译)
    • 日期格式:YYYY-MM-DD(通用)
    • 第三方贡献:将贡献者归属 (by @username) 附加到更新日志条目
  4. 插入到文件头部(保留现有内容)

分段标题翻译(内置):

类型 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: 按技能/模块分组更改

分析自上次标签以来的提交,并按受影响的技能/模块分组:

  1. 识别每个提交更改的文件
  2. 按技能/模块分组:
    • skills/<skill-name>/* → 分组到该技能下
    • 根文件(CLAUDE.md 等) → 分组为“项目”
    • 一个提交中涉及多个技能 → 拆分为多个组
  3. 对于每个组,识别相关的 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: 分别提交每个技能/模块

对于每个技能/模块组(按更改顺序):

  1. 检查 README 更新需求:

    • 扫描 README*.md 中对该技能/模块的提及
    • 验证选项/标志是否正确记录
    • 如果语法更改,更新使用示例
    • 如果行为更改,更新功能描述
  2. 暂存和提交:

    git add skills/<skill-name>/*
    git add README.md README.zh.md  # 如果为该技能更新
    git commit -m "<type>(<skill-name>): <有意义的描述>"
    
  3. 提交消息格式:

    • 使用约定提交格式:<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: 生成更新日志并更新版本

  1. 生成多语言更新日志(如步骤 4 所述)
  2. 更新版本文件:
    • 读取版本文件(JSON/TOML/文本)
    • 更新版本号
    • 写回(保留格式)

版本路径按文件类型:

文件 路径
package.json $.version
pyproject.toml project.version
Cargo.toml package.version
marketplace.json $.metadata.version
VERSION / version.txt 直接内容

步骤 8: 用户确认

在创建发布提交前,请求用户确认:

使用 AskUserQuestion 有两个问题:

  1. 版本升级(单选):

    • 显示基于步骤 3 分析的推荐版本
    • 选项:推荐的(带标签)、其他 semver 选项
    • 示例:1.2.3 → 1.3.0(推荐)1.2.3 → 1.2.41.2.3 → 2.0.0
  2. 推送到远程(单选):

    • 选项:“是,提交后推送”、“否,仅保持本地”

确认前示例输出:

创建的提交:
  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: 创建发布提交和标签

用户确认后:

  1. 暂存版本和更新日志文件:

    git add <版本文件>
    git add CHANGELOG*.md
    
  2. 创建发布提交:

    git commit -m "chore: release v{VERSION}"
    
  3. 创建标签:

    git tag v{VERSION}
    
  4. 如果用户确认(步骤 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”并带未提交的更改,仍需首先遵循所有上述步骤。