mcpField
R
release

release

github.com/s-hiraoku开发1976 次安装4 周前更新
代码仓库

关于 release

面向需要协调更新版本与变更日志的项目发布技能。它支持语义化版本升级,可依据 Conventional Commits 推断升级幅度,并同步插件和文档中的版本号。

主要功能

  1. 01支持 patch、minor、major 或指定版本
  2. 02依据 Conventional Commits 推断升级幅度
  3. 03同步插件和文档版本号
  4. 04生成并整理 Keep a Changelog 格式日志

适用场景

  1. 01执行补丁、次要或主要版本发布
  2. 02根据提交记录自动判定版本升级
  3. 03同步项目、插件和站点文档版本
  4. 04生成并审阅发布变更日志

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/s-hiraoku/synapse-a2a --skill release

安装后在 Claude Code 中输入/release确认已加载。

详细介绍

发布版本更新

此技能会更新项目版本、插件版本和变更日志。

用法

/release [version-type-or-number] [description]
版本类型
  • patch — 增加修订版本号(例如,0.2.12 → 0.2.13)
  • minor — 增加次版本号(例如,0.2.12 → 0.3.0)
  • major — 增加主版本号(例如,0.2.12 → 1.0.0)
  • X.Y.Z — 设置指定版本(例如,1.0.0)
版本类型为可选项 — 根据 Conventional Commits 自动检测

如果省略版本类型,则根据自最新标签以来的提交,使用标准的 Semantic Versioning + Conventional Commits 映射自动检测版本提升级别:

  • major — 任一提交的正文中包含 BREAKING CHANGE:,或主题中的冒号前有 !(例如,feat!:、refactor(core)!:)。
  • minor — 否则,至少有一个 feat:(或 feat(scope):)提交。
  • patch — 其他情况(修复、杂项、文档等)。

流程:

  1. git describe --tags --abbrev=0 → 最新标签。如果此命令因仓库尚无标签而以非零状态退出,则回退到完整历史记录:git log HEAD --pretty=%H%x00%s%x00%b(从初始提交到 HEAD),并将所有提交视为“未发布”。
  2. 否则,git log <tag>..HEAD --pretty=%H%x00%s%x00%b → 用于分类的提交。(以 NUL 分隔的字段可确保多行正文能够解析。)
  3. 如果范围为空,则中止并显示 No commits since <tag>; nothing to release。
  4. 打印检测到的版本提升类型和一行提交数量摘要,然后继续正常的版本提升流程。不要提示确认,以免阻塞 post-impl-codex 等非交互式工作流。

显式参数始终优先。 如果用户传入 patch/minor/major/X.Y.Z,则完全跳过自动检测。

描述(可选)

如果提供,则用作变更日志条目的描述。否则,分析近期提交以生成变更日志。

工作流

步骤 1:读取当前版本

读取 pyproject.toml 并提取当前版本:

# Look for: version = "X.Y.Z"
步骤 2:计算新版本

根据版本类型:

  • patch:major.minor.patch → major.minor.(patch+1)
  • minor:major.minor.patch → major.(minor+1).0
  • major:major.minor.patch → (major+1).0.0
  • specific:直接使用提供的版本

验证新版本高于当前版本(除非强制更新)。

步骤 3:更新 pyproject.toml

编辑 pyproject.toml:

version = "NEW_VERSION"
步骤 3.5:更新 plugin.json

编辑 plugins/synapse-a2a/.claude-plugin/plugin.json:

"version": "NEW_VERSION",

重要: 插件版本必须与 pyproject.toml 中的版本保持同步。

步骤 3.6:更新 site-docs 中的版本引用

更新 GitHub Pages 文档中的硬编码版本字符串:

  1. site-docs/getting-started/installation.md — 验证部分中的版本示例:

    You should see the version number (e.g., `NEW_VERSION`).
    
  2. site-docs/concepts/a2a-protocol.md — Agent Card JSON 示例:

    "version": "NEW_VERSION",
    
  3. site-docs/changelog.md — 在“Recent Highlights”顶部添加新版本条目(仅当在步骤 4–5 中更新了 CHANGELOG.md 时)。

  4. mkdocs.yml — repo_name 包含在 GitHub Pages 页眉中显示的版本:

    repo_name: s-hiraoku/synapse-a2a vNEW_VERSION
    

重要: site-docs 中的版本必须与 pyproject.toml 中的版本保持同步。

步骤 4:使用 git-cliff 生成变更日志

使用 git-cliff 根据 Conventional Commits 自动生成变更日志条目:

# Preview the generated changelog
python scripts/generate_changelog.py --unreleased --tag vNEW_VERSION --dry-run

# Write to CHANGELOG.md
python scripts/generate_changelog.py --unreleased --tag vNEW_VERSION
步骤 5:审核并调整 CHANGELOG.md

审核生成的条目,并在需要时手动调整:

  • 改写条目,使其更清晰
  • 补充缺失的背景信息或 PR 引用
  • 删除过滤时遗漏的无关条目
  • 确保日期正确:## [NEW_VERSION] - YYYY-MM-DD

如果没有 git-cliff,或需要手动覆盖,则直接使用 Keep a Changelog 格式编写条目(见下文)。

步骤 6:报告结果

显示:

  • 旧版本 → 新版本
  • 变更日志条目预览
  • 修改的文件

示例

提升修订版本号
/release patch
提升次版本号并添加描述
/release minor "Add new authentication system"
提升主版本号
/release major
设置指定版本
/release 1.0.0
简写
/version patch    # Same as /release patch

文件位置

  • 版本:pyproject.toml(包含 version = "..." 的行)
  • 插件版本:plugins/synapse-a2a/.claude-plugin/plugin.json(包含 "version": "..." 的行)
  • 站点文档版本:site-docs/getting-started/installation.md、site-docs/concepts/a2a-protocol.md
  • 站点页眉版本:mkdocs.yml(repo_name 字段)
  • 更新日志:CHANGELOG.md
  • 站点文档更新日志:site-docs/changelog.md

更新日志格式

遵循 Keep a Changelog 格式:

## [X.Y.Z] - YYYY-MM-DD

### Added
- New features

### Changed
- Changes in existing functionality

### Fixed
- Bug fixes

### Removed
- Removed features

### Documentation
- Documentation updates

### Tests
- Test updates

仅包含有条目的章节。章节顺序按上述所示排列。

评论

支持 Markdown