release-skills

🏷️ 全自动多语言版本发布工作流

支持 Node/Python/Rust 等项目的全自动版本发布工具,基于语义化版本规范智能生成多语言变更日志,dry-run 预览确保发布安全可靠。

收藏
16.7k
安装
3.4k
版本
1.2.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

release-skills 是一款通用型项目版本发布自动化工具,专为简化软件发布流程而设计。它能够智能识别 Node.js、Python、Rust 及 Claude Plugin 等多种项目类型,自动处理版本号更新、多语言变更日志生成及 Git 标签创建等繁琐任务,让开发者专注于代码本身而非机械性发布操作。

该工具的核心工作流程分为七个步骤:首先自动检测项目配置与版本文件,识别多语言变更日志;接着分析自上次标签以来的提交记录,依据常规提交规范自动分类为 Features、Fixes 等类别;随后基于变更内容智能推荐语义化版本号,支持 major、minor、patch 三级跃迁;为每种语言生成格式化的发布说明并自动识别贡献者;最终执行前展示完整变更预览,经用户确认后才执行 Git 提交、打标签和推送。

显著优点包括强大的多语言支持能力,可同时维护中英文、日文等变更日志;智能化的项目类型自动检测,无需手动配置即可识别主流配置文件;完善的 --dry-run 模式允许零风险预览;严格的 NEVER 规则明确禁止强制推送、跳过确认等危险操作,内置多重安全机制。

潜在局限性在于仅适用于 Git 版本控制项目,且功能高度标准化,难以满足复杂定制需求。作为 T3 级别个人开发者作品,虽通过安全审计,但长期维护稳定性仍需观察。

适合开源项目维护者、国际化团队、遵循语义化版本规范的开发团队,以及希望减少人为错误的 DevOps 工程师。

使用风险主要集中在 Git 操作层面,尽管有用户确认机制,仍会实际执行 git commit、tag 和 push。建议首次使用务必通过 --dry-run 预览,确保工作区已提交或备份。执行环境需确保 Git 凭证配置正确,避免误推送到错误仓库。

安全解读

核心用法

release-skills 是一个通用的项目发布自动化工具,能够自动检测项目类型(Node.js/Python/Rust/Claude Plugin),基于 conventional commits 分析变更并生成多语言变更日志,执行语义化版本 bump 和 Git 标签管理。

典型工作流
1. 自动检测:识别 package.json/pyproject.toml/Cargo.toml 等版本文件

2. 变更分析:解析 feat:/fix:/BREAKING CHANGE 等提交信息

3. 版本决策:按语义化版本规则自动推荐 major/minor/patch

4. 多语言日志:生成 CHANGELOG.md(英文)、CHANGELOG.zh.md(中文)、CHANGELOG.ja.md(日文)等

5. 安全发布:用户确认后执行 commit → tag → push

关键特性

  • --dry-run 模式零风险预览
  • 强制 --major/--minor/--patch 覆盖
  • 多语言章节标题自动翻译
  • 第三方贡献者自动归因(by @username

显著优点

  • 零依赖安全架构:纯 Python 标准库实现,无供应链攻击风险
  • 多语言原生支持:自动生成国际化变更日志,适合开源项目
  • 智能变更分类:conventional commits 自动归类,减少手动维护
  • 防御性设计:强制用户确认后才 push,禁止 force push,保护主分支

潜在局限

  • Git 依赖:需系统预装可信 git 可执行文件
  • 提交规范依赖:需团队遵循 conventional commits 才能获得最佳效果
  • 无 CI/CD 集成:定位为本地开发工具,非 GitHub Actions 替代方案
  • 正则解析边界:frontmatter 解析在极端边缘情况下可能不完善

适合人群

  • 维护多语言开源项目的开发者
  • 需要标准化发布流程的小型团队
  • 重视供应链安全、希望零依赖工具的用户
  • 使用 monorepo 结构需要按模块分组变更的项目

常规风险

  • 权限风险:文件写入需适当权限控制,建议在版本控制下运行
  • Git 配置风险git push 可能触发网络操作,需确保远程配置正确
  • 版本冲突:多分支并行开发时可能产生 tag 冲突,建议线性发布节奏

release-skills 内容

scripts文件夹
手动下载zip · 17.1 kB
prepare_release.pytext/plain
请选择文件