Communitygithub.com

OxideTerm 发布管理技能

准备、发布或恢复已取消的 OxideTerm stable、beta 或 gpui-preview 版本发布流程。

OxideTerm 发布管理技能 是什么?

这个AI技能专为OxideTerm项目设计,自动化处理完整的发布流程。它从检查仓库状态开始,自动推导上一个版本的标签范围以生成变更日志,支持三种发布通道(stable、beta、gpui-preview)。技能会按预定格式编写双语(中文和英文)变更日志,包含PR引用和贡献者致谢,然后执行版本号更新脚本,验证变更,并创建带注释的Git标签。最后,它会将标签推送到远程仓库并触发Native Package工作流。当用户请求升级OxideTerm版本、准备发布、编写发布变更日志或恢复已取消的发布流程时使用。该技能还支持三种详细程度(minimal、medium、detailed),默认使用detailed。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AnalyseDeCircuit/oxideterm/tree/HEAD/.agents/skills/oxideterm-release

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

OxideTerm 发布

通过仓库自有的自动化流程发布 OxideTerm 版本。将用户完成的 GUI 运行视为发布门控,默认不运行 Cargo 测试。

必需的发布输入

在做出发布更改之前,先确定以下值:

  • 目标版本。
  • 目标通道:stable、beta 或 gpui-preview。
  • 用户已运行 GUI 应用并批准发布的明确确认。
  • 发布说明详细程度:当用户明确要求 minimal、medium 或 detailed 时使用;否则使用 detailed。

仅在版本明确无误时推断通道。如果缺少 GUI 批准,请在发布前询问。准备变更日志或进行 dry run 不需要批准。

通道约定

通道版本标签变更日志基础说明文件
StableX.Y.ZvX.Y.Z.github/release-notes/stable-changelog.md.github/release-notes/stable.md
BetaX.Y.Z-beta.NvX.Y.Z-beta.N.github/release-notes/beta-changelog.md.github/release-notes/beta.md
GPUI previewX.Y.Z-gpui-preview.Ngpui-vX.Y.Z-gpui-preview.N.github/release-notes/gpui-preview-changelog.md.github/release-notes/gpui-preview.md

不要发明其他标签前缀。Native Package 工作流通过其 release_tag 调度输入接收现有标签,并从该标签选择发布说明。

工作流程

1. 检查仓库状态

从 OxideTerm 仓库根目录开始工作。先阅读 AGENTS.md,然后检查:

git status --short --branch
git remote -v
git log -10 --oneline --decorate

在判断标签是否可用之前,先获取发布远程仓库和标签:

git fetch origin --tags

确认分支未落后于或偏离其上游,并检查本地和远程的目标标签:

git rev-list --left-right --count HEAD...@{upstream}
git tag --list <tag>
git ls-remote --tags origin refs/tags/<tag> refs/tags/<tag>^{}

保留用户无关的更改。如果预期的发布范围无法安全分离或分支已偏离,则停止。对于常规发布,当目标标签已存在时停止。仅通过下面显式的已取消发布恢复流程来移动现有标签。

2. 确定变更日志范围

在编写变更日志之前,运行附带的帮助工具:

python3 .agents/skills/oxideterm-release/scripts/release_context.py \
  --repo . --channel <channel> --version <version>

优先使用同一通道中上一个可达标签作为基准:

  • Stable 与上一个 stable 标签比较。
  • Beta 与上一个 beta 标签比较。
  • GPUI preview 与上一个 GPUI preview 标签比较。

对于某个通道的首次发布,使用三个通道中最新的可达发布标签作为引导基准。仅当仓库没有更早的可达发布标签时,才使用根提交。这可以确保第一个 beta 或 preview 变更日志的范围限定在实际前一个发布以来的工作,而不是总结整个仓库。

帮助工具会打印出精确的范围、提交和差异摘要。还要检查实际的更改,包括意图中未提交的更改:

git diff <previous-tag>..HEAD
git diff
git diff --cached

不要仅从提交主题推导发布说明。阅读有意义的实现和面向用户的差异。排除机械性的版本号更新、变更日志编辑、仅格式化的变动以及没有发布影响的内部细节。

解析拉取请求和贡献者

对于每个发布通道,在起草说明之前,将确切发布范围内的更改映射到它们的源拉取请求。帮助工具的提交列表排除了合并提交;也要检查合并历史和 GitHub 的提交到 PR 关联,以便合并、压缩和变基合并都能获得归属:

git log --format='%H %s' <previous-tag>..<target-ref>
gh api --paginate repos/<owner>/<repo>/commits/<commit-sha>/pulls \
  --jq '.[] | {number, title, url: .html_url, author: .user.login, merged_at, merge_commit_sha}'
gh pr view <number> --repo <owner>/<repo> \
  --json number,title,url,author,mergedAt,mergeCommit,commits

维护每个包含的 PR 的编号、URL、作者登录名和实际贡献的工作映射。对多个提交返回的 PR 去重。对照目标历史和差异确认包含关系;仅凭合并日期不能确定发布范围。验证 cherry-picked 更改的原始 PR 来源。完全还原的更改不得作为已发布的功能呈现。

使用 PR 作者,而不是合并它的人或机器人。对于贡献者致谢,排除已确认的项目维护者和机器人账户;不要仅仅因为 GitHub 将其标记为 COLLABORATOR 或 MEMBER 就假定人类贡献者是维护者。当维护者对外部 PR 工作进行了后续修复时,保留对外部 PR 工作的致谢。引用的 issue 编号不是 PR 或其作者的证据。如果 GitHub 查找失败,将未解决的归属保留在工作记录中,并在最终确定发布说明之前解决它;不要将查找失败视为没有贡献。

3. 编写通道变更日志

在选定的变更日志中插入 ## <version> 作为最新条目。标题必须与版本完全匹配,因为 .github/scripts/compose_release_notes.py 使用它来定位条目。标题是提取边界,不一定是已发布发布正文的一部分。

每个版本条目必须按此顺序写成两个完整的语言块(中文在前,英文在后)。组合器会在每个通道的双语发布说明最顶部添加语言跳转链接:

## <version>

### 中文

<中文摘要和章节>

### English

<English summary and sections>

保持两个块在结构上对齐:它们必须以相同的顺序描述相同的结果、限制、验证状态和升级要求。以自然的发布说明语言进行翻译,而不是逐字翻译,并在翻译会降低精确度时保持产品名称、命令、文件名和协议名称不变。不要将英文和中文合并到同一个列表项中。在英文中使用简洁的面向用户的过去时,在中文中使用简洁的已完成动作措辞。保持每种语言的开篇摘要段落在一行内,以便 GitHub Release 编辑器不显示人为的换行。将相关的提交合并为一个结果,避免原始提交标题转储、实现琐事、未经支持的性能声明和未经验证的声明。在每个主要 stable-release 章节标题的两个块中使用一个克制且语义相关的表情符号;不要在每一行上装饰或在一个章节内混合使用多种表情符号风格。

对于 fork 发布,每个语言块必须清晰地将从官方 OxideTerm 上游继承的更改与 fork 实现的更改分开。使用相当于 Upstream changes / 上游更新 和 Fork-specific changes / Fork 自有更新 的明确本地化标题;当所选详细程度需要时,子系统标题可以嵌套在它们下方。将合并或 cherry-picked 的官方工作归类为上游,无论提交作者是谁;将发布 fork 独有的行为归类为 fork 自有。当 fork 修改了上游功能时,在上游下方描述继承的能力,在 fork 自有更改下方描述 fork 的材料差异。如果任一类别在发布范围内没有更改,则明确说明,而不是省略该类别。绝不要让组合的摘要或列表项暗示 fork 撰写了上游工作。

PR 引用和贡献者致谢

遵循 NyaTerm v1.2.12 中的归属模式:PR 引用在其引入的更改旁边,外加专门的贡献者章节。从 OxideTerm 的发布范围推导实际条目。

  • 将链接的 PR 编号附加到通过 PR 引入的每个发布说明项,包括维护者撰写的 PR。在中文中使用 (PR [#<number>](<pr-url>)),在英文中使用 (PR [#<number>](<pr-url>))。将引用放在相关列表项或功能段落末尾,而不是仅放在贡献者列表或完整变更日志链接中。保持 issue 链接与 PR 链接不同。直接提交没有发明的 PR 编号。
  • 当多个 PR 贡献给一个分组项时,在该项中包含所有相关的 PR 编号,仅一次。仅归属每个 PR 支持的结果;当分组会归错作者时,将维护者的独立后续更改分开。对于来自其他仓库的 PR,使用 owner/repo#number 限定链接标签。
  • 每当发布包含外部 PR 贡献时,在中文块中添加 #### 👥 贡献者,在英文块中添加 #### 👥 Contributors,放在更改章节之后和升级说明之前(如果有)。感谢其贡献包含在此版本中的每位外部 PR 作者,包括回归贡献者以及其工作可能不值得独立功能列表项的文档、翻译、构建或打包贡献者。
  • 使用其经过验证的 GitHub @login、对其贡献的简要描述以及链接的 PR 编号,在每个语言块中列出每位作者一次。在两种语言中匹配作者和 PR 引用。通用的感谢或 GitHub 的自动头像条不能替代这些条目。如果识别首次贡献者,请验证之前的仓库贡献;New Contributors 列表补充完整的致谢章节。
  • 在每个详细级别和每个通道中应用归属。如果验证的范围不包含外部 PR 贡献,则省略贡献者章节,而不是添加空标题。不在发布范围内的 PR 不被视为本版本的新贡献。

贡献者条目示例(用验证的发布数据替换占位符):

#### 👥 贡献者

感谢以下外部贡献者参与本次更新:

- @<login>:<具体贡献>(PR [#<number>](<pr-url>))。

#### 👥 Contributors

Thank you to the external contributors to this release:

- @<login>: <specific contribution> (PR [#<number>](<pr-url>)).

将两个示例章节放在各自的语言块中,而不是一起作为第三个双语章节。

发布说明详细程度

对英文和中文块使用相同的级别。这些级别控制覆盖范围和分组,而不是强制性的字数。绝不能为了满足更短的级别而省略破坏性更改、安全边界、升级要求、已知限制或重大兼容性问题。

级别要求密度
minimal仅在用户明确要求时使用。写一个简短的摘要,后面跟着大约 2-5 个高度整合的结果列表项,最多有一两个标题,如果它们能显著提高可扫描性。仅覆盖发布中定义性的用户可见更改和必需的警告。
medium仅在用户明确要求时使用。写一个摘要、少量有用的章节和分组的列表项,覆盖主要功能、修复和安全或兼容性结果。合并相关的工作流,而不是单独列举每个工作流。
detailed除非用户明确选择其他级别,否则为默认值。按有意义的子系统或工作流组织说明,并为每个不同的用户可见能力、行为更改、兼容性修复、支持的限制和经过验证的性能或验证结果提供足够的空间,以便在不阅读差异的情况下理解。当它们实质上影响用户理解或使用更改时,包括支持的工作流,但当发布实际更改较少时,不要添加 filler。

将这些级别视为覆盖范围和分组指南,而不是固定模板。首先确定完整的事实差异,然后将其整合到所选级别。如果用户只说“编写发布说明”或“准备发布”,则使用 detailed。

应用通道特定的重点:

  • Stable: 总结自上一个 stable 标签以来的完整差异。在每个语言块中,从一个简短的发布摘要开始,然后仅使用有用的章节,如 #### ✨ Highlights / #### ✨ 重点更新、#### 🛠️ Fixes / #### 🛠️ 修复、#### 🔒 Security / #### 🔒 安全 或 #### 🧰 Release Maintenance / #### 🧰 发布维护。强调用户可见的行为和兼容性。组成的 GitHub Release 正文必须以 [中文](#中文) | [English](#english) 导航开头,然后是完整的 ### 中文 块,然后是匹配的 ### English 块,省略类似 # OxideTerm 2.0 的产品主标题和类似 ## 2.0.7 的重复版本标题,然后将 ## 📥 Download for your system、安装提示和链接放在两个语言块之后。
  • Beta: 以完整的中英文块总结自上一个 beta 标签以来的差异。说明即将稳定、已更改以及需要验证的工作流。仅当差异或 issue 上下文支持时,才提及已知限制,并在两种语言中都包含它们。
  • GPUI preview: 以完整的中英文块总结自上一个 GPUI preview 标签以来的差异。专注于新可测试的原生 UI/运行时工作、对等性、粗糙边缘和具体的测试目标。应用选定的详细程度,同时保持写作以测试为导向,而不是将 preview 说明变成 stable 发布营销。

如果该通道没有更早的标签,请说明哪个前一个发布标签被用作引导基准。

4. 运行仓库版本脚本

始终使用仓库脚本;永远不要手动编辑工作区版本或锁定文件:

python3 scripts/release/bump_version.py <version>

这会验证 SemVer、更新 [workspace.package] 并离线刷新 Cargo.lock。README 徽章会自动显示最新的 GitHub 版本,不需要版本编辑。

5. 执行轻量级发布验证

不要运行 cargo test,

... [已截断]

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能