К основному содержанию
скилл CX Codex

release-core-test — скилл для Claude Code: тестовый релиз cyrus-core

Публикует cyrus-core как пререлиз под npm-тегом test, чтобы хостед-GUI ставил нерелизную версию и не трогал latest.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add cyrusagents/cyrus --skill release-core-test -a claude-code
Открыть на GitHub

Что делает release-core-test

Скилл нужен, когда правка в Cyrus затрагивает сразу CYPACK (edgeworker и CLI) и CYHOST — GUI на Vercel, которому надо смотреть на ещё не выпущенный cyrus-core из этого репозитория. Вместо полного релизного цикла вы получаете версию вида -test.N под dist-тегом test, и хостед-GUI ставит её через cyrus-core@test. Тег latest при этом не двигается, так что продакшн-установки не задеты.

Работа идёт по шагам: pnpm install и pnpm build из корня репозитория, затем проверка, надо ли перепубликовать claude-runner. Он зависит от cyrus-core через workspace:*, и если его локальная версия ещё не на npm или в packages/claude-runner/src есть незакоммиченные правки, установка cyrus-core@test упадёт на неразрешённой зависимости. Дальше патч-версия cyrus-core получает суффикс -test.N, публикация идёт с --tag test и --no-git-checks, а npm view cyrus-core dist-tags подтверждает, что latest на месте.

Скилл намеренно ничего не коммитит: бамп в packages/core/package.json остаётся локальной правкой рабочего дерева. Ни CHANGELOG.md, ни git-тег, ни GitHub-релиз, ни пул-реквест он не создаёт. Учтите, что pnpm install вместе с pnpm build на чистом дереве занимают около 3 минут — таймауты команд стоит выставить с запасом.

Какие задачи решает

  • выпустить тестовую версию cyrus-core, не задев тег latest
  • проверить, надо ли перепубликовать claude-runner перед сборкой
  • подобрать следующий свободный номер -test.N для текущего патча
  • убедиться, что dist-тег latest не сдвинулся после публикации
  • дать разработчику готовые команды установки тестовой версии

Примеры запросов агенту

  • Запусти скилл release-core-test и опубликуй тестовую версию cyrus-core
  • Проверь, нужен ли републиш claude-runner, и собери пакеты из корня
  • Опубликуй cyrus-core под тегом test и покажи команды установки

Как установить release-core-test

1Через Skills CLI (Vercel)

npx skills add cyrusagents/cyrus --skill release-core-test -a claude-code

2Вручную: положить файлы

~/.claude/skills/release-core-test/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/release-core-test/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о release-core-test

Как установить release-core-test в Claude?

Выполните npx skills add cyrusagents/cyrus --skill release-core-test -a claude-code. После этого скилл лежит в ~/.claude/skills/release-core-test/SKILL.md.

Что делает release-core-test?

Публикует cyrus-core (и при необходимости claude-runner) как пререлиз -test.N под npm-тегом test, чтобы хостед-GUI мог поставить нерелизную версию через cyrus-core@test.

Он коммитит бамп версии или создаёт релиз?

Нет. Бамп в packages/core/package.json остаётся локальной правкой рабочего дерева, а CHANGELOG, git-тег, GitHub-релиз и пул-реквест скилл не трогает.

Исходный текст

SKILL.md · Apache-2.0
---
name: release-core-test
description: Invoke when dev-testing a Cyrus change that spans CYPACK (edgeworker + CLI) and CYHOST (Vercel-hosted GUI) and the hosted GUI needs to point at an unreleased `cyrus-core` from this repo. Publishes `cyrus-core` (and `claude-runner` if needed) as a `-test.N` prerelease under the npm `test` dist-tag so CYHOST can install it via `cyrus-core@test` without affecting the `latest` dist-tag or shipping a real release.
---

# Release Core (Test)

Publish ONLY the `cyrus-core` package (and `claude-runner` if needed) as a dev/test prerelease to npm under the `test` dist-tag. This is a developer convenience for iterating on `cyrus-core` without going through the full release flow.

## What this skill does NOT do

This skill is intentionally minimal. It does **NOT**:

- Update `CHANGELOG.md` or `CHANGELOG.internal.md`
- Create a git tag
- Create a GitHub release
- Move any Linear issues
- Open a pull request
- Commit the version bump (the bumped `package.json` is left as a local working-tree change)

It also does NOT publish any other workspace package (no `edge-worker`, no `cyrus` CLI, no `linear-event-transport`, etc.). The only exception is `claude-runner`, which is republished if and only if its `workspace:*` reference would otherwise resolve to an unpublished version (see step 3 below).

## Workflow

### 1. Install dependencies from repo root

```bash
pnpm install
```

### 2. Build all packages from repo root

```bash
pnpm build
```

Building all packages ensures `workspace:*` dependencies are resolved before publishing.

### 3. Determine whether `claude-runner` needs republishing

`cyrus-core` depends on `claude-runner` via `workspace:*`. When `cyrus-core` is published, that `workspace:*` is rewritten to the version currently in `packages/claude-runner/package.json`. If that version isn't actually on npm yet (because `claude-runner` has local changes since its last publish), consumers installing `cyrus-core@test` will fail to resolve the dependency.

Run both of these deterministic checks:

```bash
# (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"
```

Republish `claude-runner` if **either**: (a) returns nothing (local version is not on npm), **or** (b) prints `dirty`. If both pass cleanly, skip this step. If you're unsure, ask the user.

To republish:

```bash
# 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
```

Otherwise, skip this step entirely.

### 4. Bump `cyrus-core` to the next `-test.N` prerelease version

Algorithm:

1. Read the current version from `packages/core/package.json` (e.g. `0.1.22`).
2. Bump the patch (e.g. `0.1.23`).
3. Append `-test.N`, starting at `N = 0` and incrementing while `<bumped>-test.N` already exists on npm (including aborted/stale prior attempts).

Use this one-liner to find existing `-test.N` versions for the bumped patch and pick the next N:

```bash
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).
```

Write the chosen version (e.g. `0.1.23-test.0`) back into `packages/core/package.json`. Do NOT commit this change — leave it as a local working-tree edit so the developer can decide whether to keep it.

### 5. Publish `cyrus-core` with the `test` dist-tag

```bash
cd packages/core
pnpm publish --access public --no-git-checks --tag test
cd ../..
```

Using `--tag test` means:

- `npm install cyrus-core@test` will install this version.
- The `latest` dist-tag is **not** moved, so production installs (`npm install cyrus-core`) are unaffected.

### 6. Verify the dist-tags landed correctly

```bash
npm view cyrus-core dist-tags
```

Confirm that `latest` is unchanged from before the publish and `test` now points to the version you just published. If `latest` moved, something is wrong — stop and investigate before telling anyone to install it.

### 7. Print install instructions

After publishing, print both forms so the developer can copy/paste:

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

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

If `claude-runner` was also republished in step 3, include its version too.

## Key Notes

- Always use `--no-git-checks` so you can publish from a feature branch with a dirty working tree.
- Always use `--tag test` so the `latest` dist-tag is preserved for real releases.
- Prerelease versions (anything with a `-` suffix like `-test.0`) are never auto-installed by `npm install cyrus-core` without an explicit tag or version spec, so this is safe to run repeatedly.
- Run `pnpm install` after publishing `claude-runner` (if applicable) so the lockfile reflects the new published version before `cyrus-core` is built/published.
- `pnpm install` + `pnpm build` from root takes ~3 minutes combined on a clean tree — plan command timeouts accordingly.

## Examples

- "release core test" - Run a dev release of cyrus-core
- "/release-core-test" - Invoke this skill

© cyrusagents · Apache-2.0 · cyrusagents/cyrus

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
release modelcontextprotocol Проводит один milestone-релиз от релизного issue до публикации GitHub Release: аудит, бампы версий, merge PR и release ledger. CX Codex +1 ★ 91 547звёзд репо check-npm grafana Проверяет конфигурацию пакетного менеджера в JS/TS-репозитории: версии инструментов, lifecycle-скрипты, опасные протоколы зависимостей и минимальный возраст релиза. CX Codex +1 2 800установок dependencies-audit cognitedata Скилл находит уязвимости, устаревшие и заброшенные пакеты, проблемы с лицензиями и чинит их, а не просто составляет отчёт. CX Codex +1 1 900установок aube-package-manager reason-machines Скилл подсказывает, как работать с пакетным менеджером aube в Node.js-проектах. Пригодится для зависимостей, workspaces, CI и миграции с pnpm. CX Codex +1 392установок github-release-management ruvnet Автоматизация релизов на GitHub: от черновика и changelog до сборки и развёртывания. Пригодится, когда версии выходят часто, а ручные шаги уже раздражают. CX Codex +1 1 200установок re0-release LilMGenius Проводит готовое изменение по чек-листу релиза репозитория, а потом по подтверждению ставит тег и публикует. Запускается вручную, когда вы решили выпускать. CX Codex +1 1 200установок

Из того же набора18

summarize Скилл готовит итоговый отчёт о задаче для сессии агента в Linear. Пригодится, когда нужно структурировать статус работы без ручной отправки сообщений. CX Codex +1 886установок investigate Ищет файлы и функции в репозитории, собирает контекст и готовит ответ в формате Markdown для Linear. Пригодится при разборе задач и багов. CX Codex +1 863установок implementation Направляет агента при написании рабочего кода: требует соблюдать архитектурные паттерны проекта, обрабатывать ошибки и не делать лишних правок. CX Codex +1 850установок verify-and-ship Скилл проводит изменения через проверку критериев задачи, тесты, обновление changelog, коммит и создание pull request. CX Codex +1 843установок release Скилл проводит релиз Cyrus CLI через trusted-publishing: подготовка, проверка, публикация и финал. Пригодится, когда нужно выпустить версию, не трогая пакеты руками. CX Codex +1 829установок debug Разбирает баг от воспроизведения до минимального исправления. Нужен, когда важно найти причину ошибки и проверить результат. CX Codex +1 826установок f1-test-drive Проверяет, нужна ли F1-валидация для изменений, и проводит тестовый сценарий для затронутых рабочих процессов. CX Codex +1 804установок cyrus-setup-gitlab Настраивает glab и git-идентичность, чтобы Cyrus мог создавать ветки, коммиты и merge request'ы в вашем проекте. CX Codex +1 785установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой