Skip to main content

create-release-checklist

Generate a GitHub release-checklist issue for a full (non-RC) release of the Smelter server and/or the TypeScript SDK. Reads the changelog, extracts the actual new/changed options to verify, and opens the issue with gh.

소스 정보

저장소
software-mansion/smelter
최근 소스 활동
2026년 6월 3일 08:15
감지된 SKILL.md 언어
영어
스타
732
포크
46

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
create-release-checklist
description
Generate a GitHub release-checklist issue for a full (non-RC) release of the Smelter server and/or the TypeScript SDK. Reads the changelog, extracts the actual new/changed options to verify, and opens the issue with gh.
disable-model-invocation
false
allowed-tools
Bash, Read, Grep, Glob
Create a GitHub issue that tracks a **full, non-RC release** of the Smelter server and the TypeScript SDK, following the structure and ordering of the process documented in `RELEASE.md`. This skill is for **non-RC releases only**. Do not add any "if non-RC" hedging, RC tags, or `.pre-release.json`-creation steps — assume the release promotes to `latest`. ## What to gather first 1. **Current versions and last released tags** (so you can propose the next versions): - Server: `version` in the workspace `Cargo.toml`; last released `git tag --list 'v0.*'`. - SDK: `version` in `ts/smelter/package.json` and `ts/smelter-node/package.json`; last released `git tag --list 'ts-sdk/*'`. 2. **The changelog**: read the `## unreleased` section of `CHANGELOG.md`. This is the source of truth for what needs to be verified — do not invent or generalize it. 3. **The server↔SDK coupling**: `ts/smelter-node/src/manager/locallySpawnedInstance.ts` defines `VERSION` and `REPO`. The SDK downloads the server binary from there, so the SDK release depends on the server release. Propose the next versions to the user and confirm before creating the issue: - Server uses a `0.MAJOR.MINOR` scheme. If the `## unreleased` section has a `💥 Breaking changes` block, bump the major segment (e.g. `0.5.0` → `0.6.0`); otherwise bump the patch. - All SDK packages share a major; pick the matching SDK version. Do **not** add a "Decide versions" checklist item to the issue itself — bake the chosen versions directly into the title and steps. ## Extracting options from the changelog Go through every entry under `## unreleased` (`💥 Breaking changes`, `✨ New features`, plus any input/output-relevant `🔧 Others`) and turn each new or changed **input / output / encoder option, endpoint, WebSocket event, or shader requirement** into one leaf checklist item. Quote the actual field/option/env-var names from the changelog. Classify each one: - **Maps to a TS SDK field** (input/output registration options, encoder options, input-update operations, events, shader requirements) → goes in **both** Phase A (server) and Phase B (SDK). The server options map ~one-to-one to TS SDK fields. - **Server-config only** (anything configured via an env var, e.g. `SMELTER_RTMP_SERVER_PORT`, the `SMELTER_WEBRTC_*` ICE vars) → goes in Phase A only. In Phase B, list these once as a single note saying they are server-config, not SDK fields, and were verified in Phase A. ## Issue structure (reproduce exactly) These conventions come from real corrections — keep them: - **Checkboxes on leaf tasks only.** Structural/grouping lines (phase headers, `A1.`/`B2.` step groups, the "Temporarily modify examples…" lead-in) are plain text. Only the smallest actionable items get `- [ ]`. - **Verification before version bump, always.** In each phase the verification step comes first; the version-bump PR step is explicitly gated "only after verification passes". Never bump versions before testing. - **Server first; SDK depends on it.** Phase A is the server and is labeled as release-first. Phase B is gated on the server being published, and its first step points `locallySpawnedInstance.ts` at the freshly released server tag — this is done *before* SDK verification so the `create-smelter-app` templates test the right binary. It is not a version bump. - **Ordering/dependency warnings are inline ordered points, not global blockquotes.** Put them in the step where they apply (a leading `⚠️` is fine). Do not stack notes at the top of the issue. - **No obvious/self-evident items.** Skip filler like "discard temporary example edits" or "decide versions" — only list real, non-trivial actions. Use this body as the template (substitute the real versions and the changelog-derived option lines): ```markdown Release checklist for **Smelter server `vX.Y.Z`** and **TypeScript SDK `A.B.C`**. **Phase A — Smelter server** (release this first — Phase B depends on it) - A1. Pre-release verification (on `master`, before any version bump) - [ ] Start demo server (`cargo run --example demo_server` + `cargo run --example demo`) and exercise every input and output type - [ ] Run the other examples in the `integration-tests` crate - ⚠️ Temporarily modify examples to test the new/changed options below (extracted from the `## unreleased` section of `CHANGELOG.md`): - [ ] <one leaf per new/changed option, quoting the real names> - [ ] ... - A2. 📌 Create release PR (only after verification passes) - [ ] Bump `version` in workspace `Cargo.toml` (`<old>` → `<new>`) - [ ] In `CHANGELOG.md`, rename `## unreleased` → `## [vX.Y.Z](…/releases/tag/vX.Y.Z)` and add a fresh empty `## unreleased` - [ ] Review + merge to `master`; create `v0.Y` branch per versioning policy - A3. Release process (after PR merged) - [ ] Trigger `rust_release_build` and `docker_publish` GitHub Actions - [ ] `gh run list --workflow "package for release"` → get `WORKFLOW_RUN_ID` - [ ] Run `WORKFLOW_RUN_ID={ID} RELEASE_TAG=vX.Y.Z COMMIT_HASH={merged commit} ./tools/release.sh` **Phase B — TypeScript SDK** (only after the server from Phase A is released and published) - B1. Point the SDK at the released server (needed so verification tests the right binary, not a version bump) - [ ] ⚠️ `@swmansion/smelter-node` downloads the server binary, so update `ts/smelter-node/src/manager/locallySpawnedInstance.ts` to the freshly released tag: `VERSION = 'vX.Y.Z'`, `REPO = 'software-mansion/smelter'` (remove the RC-repo lines) - B2. Pre-publish verification (against the workspace SDK, before bumping versions) - [ ] Test every `create-smelter-app` template (scaffold, build, run — confirms the new binary URL resolves) - [ ] Run all `ts/examples` projects (already use the workspace SDK) - The changelog options map ~one-to-one to TS SDK fields — modify an example to exercise the new/changed ones through the SDK: - [ ] <the SDK-field-mapping options, mirroring Phase A> - [ ] (server-config only, not SDK fields) <env-var options> — verified in Phase A - B3. 📌 Create version-bump PR (only after verification passes) - [ ] Run `pnpm bump-version` (sets package versions to `A.B.C` and removes `.pre-release.json` — commit that removal) - [ ] Commit (including the `locallySpawnedInstance.ts` change from B1) - [ ] Review + merge to `master`; create `ts-sdk/v0.B` branch - B4. Publishing process - [ ] Push the `ts-sdk/vA.B.C` tag → triggers `ts_publish` workflow (publishes all packages with `next` dist-tag) - [ ] Re-test `create-smelter-app` templates against the published `next` packages - [ ] Promote to latest — `npm dist-tag add @swmansion/smelter@A.B.C latest` (and each other package) ``` ## Creating the issue Write the rendered body to a temp file and create the issue: ```bash gh issue create --repo software-mansion/smelter \ --title "Release: Smelter server vX.Y.Z + TypeScript SDK A.B.C" \ --body-file /tmp/release-issue.md ``` Report the created issue URL back to the user. If the user is releasing only the server or only the SDK, include just that phase, and drop the server↔SDK ordering/`locallySpawnedInstance.ts` coupling (it only matters when both are released together).
GitHub에서 보기