mcpField
R
release-core-test

release-core-test

github.com/cyrusagents开发879718 次安装今天更新
代码仓库

关于 release-core-test

供开发者将 `cyrus-core` 作为 npm 测试预发布版发布的技能;仅在工作区依赖需要时重发 `claude-runner`。版本变更保留在本地,不走完整发布流程。

主要功能

  1. 01构建工作区软件包
  2. 02检查是否需要重发 `claude-runner`
  3. 03将 `cyrus-core` 升为测试预发布版
  4. 04使用 `test` dist-tag 发布
  5. 05核验 dist-tags 并输出安装命令

适用场景

  1. 01通过 npm 测试 `cyrus-core` 变更
  2. 02在不移动 `latest` 的情况下提供预发布版
  3. 03判断是否需要重发 `claude-runner`

安装

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

$npx skills add https://github.com/cyrusagents/cyrus --skill release-core-test

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

详细介绍

发布 Core(测试版)

仅将 cyrus-core 包(以及必要时的 claude-runner)作为开发/测试预发布版本发布到 npm,并使用 test dist-tag。此功能为开发者提供便利,便于迭代 cyrus-core,无需走完整的发布流程。

此技能不会执行的操作

此技能刻意保持精简。它不会:

  • 更新 CHANGELOG.md 或 CHANGELOG.internal.md
  • 创建 git 标签
  • 创建 GitHub 发布版本
  • 移动任何 Linear issue
  • 创建拉取请求
  • 提交版本号更新(更新后的 package.json 会保留为本地工作区改动)

它也不会发布其他任何工作区包(不包括 edge-worker、cyrus CLI、linear-event-transport 等)。唯一的例外是 claude-runner:仅当其 workspace:* 引用原本会解析到尚未发布的版本时,才会重新发布(见下方第 3 步)。

工作流

1. 在仓库根目录安装依赖
pnpm install
2. 在仓库根目录构建所有包
pnpm build

构建所有包可确保在发布前解析 workspace:* 依赖。

3. 判断是否需要重新发布 claude-runner

cyrus-core 通过 workspace:* 依赖 claude-runner。发布 cyrus-core 时,该 workspace:* 会被改写为 packages/claude-runner/package.json 中当前的版本。如果该版本尚未实际发布到 npm(因为 claude-runner 自上次发布后有本地改动),安装 cyrus-core@test 的用户将无法解析该依赖。

运行以下两项确定性检查:

# (a) Is the local claude-runner version already on npm?
LOCAL_CR=$(node -p "require('./packages/claude-runner/package.json').version")
npm view "cyrus-claude-runner@${LOCAL_CR}" version 2>/dev/null

# (b) Does claude-runner have uncommitted/unpushed source changes since its last publish?
git diff --quiet HEAD -- packages/claude-runner/src packages/claude-runner/package.json && echo "clean" || echo "dirty"

如果满足任一条件,则重新发布 claude-runner:(a) 检查没有返回内容(本地版本尚未发布到 npm),或 (b) 输出 dirty。如果两项检查均通过且结果干净,则跳过此步骤。如果不确定,请询问用户。

若要重新发布:

# Determine the next -test.N for claude-runner (same algorithm as cyrus-core below)
# Bump packages/claude-runner/package.json to e.g. 0.0.X-test.N
cd packages/claude-runner
pnpm publish --access public --no-git-checks --tag test
cd ../..
pnpm install   # refresh lockfile so cyrus-core picks up the new claude-runner

否则,完全跳过此步骤。

4. 将 cyrus-core 的版本号更新为下一个 -test.N 预发布版本

算法:

  1. 从 packages/core/package.json 读取当前版本号(例如 0.1.22)。
  2. 将补丁版本号加一(例如 0.1.23)。
  3. 添加 -test.N 后缀,从 N = 0 开始;如果 <bumped>-test.N 已存在于 npm(包括已中止或过期的先前尝试),则递增 N。

使用以下单行命令查找该补丁版本已有的 -test.N 版本,并选择下一个 N:

BUMPED=0.1.23   # the patch-bumped base, no suffix
npm view cyrus-core versions --json \
  | jq -r '.[]' \
  | grep -E "^${BUMPED}-test\.[0-9]+$" \
  | awk -F'test.' '{print $2}' \
  | sort -n | tail -1
# If empty, use N=0. Otherwise use (max + 1).

将选定的版本号(例如 0.1.23-test.0)写回 packages/core/package.json。不要提交此更改——将其保留为本地工作区修改,让开发者决定是否保留。

5. 使用 test dist-tag 发布 cyrus-core
cd packages/core
pnpm publish --access public --no-git-checks --tag test
cd ../..

使用 --tag test 意味着:

  • npm install cyrus-core@test 会安装此版本。
  • latest dist-tag 不会移动,因此不会影响生产环境的安装(npm install cyrus-core)。
6. 验证 dist-tag 是否设置正确
npm view cyrus-core dist-tags

确认 latest 与发布前一致,并且 test 现在指向刚发布的版本。如果 latest 发生变化,则说明有问题——停止操作并调查,然后再告知任何人安装。

7. 输出安装说明

发布后,输出以下两种形式,方便开发者复制/粘贴:

Published cyrus-core@<version> under dist-tag `test`.

Install with:
  npm install cyrus-core@test
or pinned:
  npm install cyrus-core@<version>

如果第 3 步也重新发布了 claude-runner,请一并提供其版本号。

重要说明

  • 始终使用 --no-git-checks,以便从功能分支和有未提交改动的工作区发布。
  • 始终使用 --tag test,确保真实发布所用的 latest dist-tag 保持不变。
  • 预发布版本(任何带 - 后缀的版本,例如 -test.0)不会在未指定标签或版本规格的情况下通过 npm install cyrus-core 自动安装,因此可以安全地重复运行。
  • 发布 claude-runner 后(如适用),运行 pnpm install,使锁文件在构建/发布 cyrus-core 前反映新的已发布版本。
  • 在干净的工作区中,从根目录运行 pnpm install 和 pnpm build 总共约需 3 分钟——请据此设置命令超时时间。

示例

  • “release core test”——运行 cyrus-core 的开发版发布
  • “/release-core-test”——调用此技能

评论

支持 Markdown