From fb01f3c0e740cb040de748c65442b50b34dcbe4d Mon Sep 17 00:00:00 2001 From: Chancellor Clark Date: Fri, 24 Jul 2026 14:22:46 -0600 Subject: [PATCH] docs: TRAC-1290 add integrations/b2b-makeswift stage to release-catalyst The release-catalyst skill released catalyst-core and catalyst-makeswift but had no stage for catalyst-b2b-makeswift, so nothing moved its @latest tag (which the CLI upgrade.ts resolves). Add a b2b sync-and-release stage mirroring the makeswift one (sourced from integrations/makeswift), and extend the @latest tag-push and cleanup stages to cover the b2b package. Note the large-catch-up cadence: one b2b release per makeswift minor tag. Refs TRAC-1290 Co-Authored-By: Claude --- .claude/skills/release-catalyst/SKILL.md | 73 ++++++++++++++++++++---- 1 file changed, 61 insertions(+), 12 deletions(-) diff --git a/.claude/skills/release-catalyst/SKILL.md b/.claude/skills/release-catalyst/SKILL.md index daabca03f4..f34b143cf7 100644 --- a/.claude/skills/release-catalyst/SKILL.md +++ b/.claude/skills/release-catalyst/SKILL.md @@ -1,11 +1,12 @@ --- name: release-catalyst description: > - Cut a new release of Catalyst (`@bigcommerce/catalyst-core` and `@bigcommerce/catalyst-makeswift`). + Cut a new release of Catalyst (`@bigcommerce/catalyst-core`, `@bigcommerce/catalyst-makeswift`, + and `@bigcommerce/catalyst-b2b-makeswift`). Use when the user says "/release-catalyst", "cut a release", "release catalyst", or asks to - publish new versions of the Catalyst packages. This skill orchestrates the full two-stage release - process: merging the Version Packages PR on canary, syncing integrations/makeswift, and pushing - @latest tags. + publish new versions of the Catalyst packages. This skill orchestrates the full release process: + merging the Version Packages PR on canary, syncing and releasing integrations/makeswift, then + integrations/b2b-makeswift, and pushing @latest tags. --- # Release Catalyst @@ -94,27 +95,75 @@ git fetch origin --tags gh release view @bigcommerce/catalyst-makeswift@ --json tagName,name,isDraft,isPrerelease ``` -## Stage 3: Push `@latest` tags +## Stage 3: Sync and release `integrations/b2b-makeswift` -Update both `@latest` tags to point to the new releases: +`integrations/b2b-makeswift` builds on `integrations/makeswift`, so it releases after Stage 2. If Stage 2 didn't cut a new makeswift release (no makeswift changes), skip this stage. + +### 3a. Sync branches + +Invoke the `/sync-integration-branch` skill with target `integrations/b2b-makeswift`, with one addition: during the sync (after merge, before pushing), also add a changeset for `@bigcommerce/catalyst-b2b-makeswift`: + +**Determine bump type**: Match the bump type from Stage 2 (the makeswift bump). + +**Create changeset file** (`.changeset/sync-makeswift-.md`, where `` uses hyphens instead of dots): + +```markdown +--- +"@bigcommerce/catalyst-b2b-makeswift": +--- + +Pulls in changes from the `@bigcommerce/catalyst-makeswift@` release. For more information, see the [changelog entry](https://github.com/bigcommerce/catalyst/blob//core/CHANGELOG.md#). +``` + +Where `` is the makeswift version released in Stage 2, `` is the Version Packages merge commit on `integrations/makeswift`, and `` is that version with dots removed. The b2b package keeps its **own** version line: the bump type mirrors makeswift's, but the resulting `@bigcommerce/catalyst-b2b-makeswift` version number is independent of makeswift's. + +Include this changeset in the merge commit (amend if needed) alongside the normal sync work. + +### 3b. Merge the Version Packages (`integrations/b2b-makeswift`) PR + +After the sync lands, the Changesets action opens a "Version Packages (`integrations/b2b-makeswift`)" PR. + +```bash +gh pr list --search "Version Packages (integrations/b2b-makeswift)" --state open --json number,title +``` + +Same flow as Stage 2b: +- If checks aren't running (bot PR), push an empty commit to trigger CI, then **drop it before merging** by resetting to the parent and force-pushing. +- Once approved and green, merge with `gh pr merge --squash`. + - Same caveat as makeswift: squash merging is normally disallowed on `integrations/b2b-makeswift` to preserve merge bases for sync PRs. Temporarily enable it for this step, then re-disable. + +### 3c. Verify the b2b release + +```bash +git fetch origin --tags +gh release view @bigcommerce/catalyst-b2b-makeswift@ --json tagName,name,isDraft,isPrerelease +``` + +> **Large catch-up:** when reviving a branch that's many makeswift releases behind, run this stage once per makeswift **minor** tag (see the one-time catch-up in `/sync-integration-branch`), cutting a b2b release per rung so `@latest` marches forward cleanly. + +## Stage 4: Push `@latest` tags + +Update the `@latest` tags to point to the new releases (skip any package that didn't get a new release this run): ```bash git fetch origin --tags -git tag @bigcommerce/catalyst-core@latest @bigcommerce/catalyst-core@ -f -git tag @bigcommerce/catalyst-makeswift@latest @bigcommerce/catalyst-makeswift@ -f +git tag @bigcommerce/catalyst-core@latest @bigcommerce/catalyst-core@ -f +git tag @bigcommerce/catalyst-makeswift@latest @bigcommerce/catalyst-makeswift@ -f +git tag @bigcommerce/catalyst-b2b-makeswift@latest @bigcommerce/catalyst-b2b-makeswift@ -f git push origin @bigcommerce/catalyst-core@latest -f git push origin @bigcommerce/catalyst-makeswift@latest -f +git push origin @bigcommerce/catalyst-b2b-makeswift@latest -f ``` -Confirm both tags were pushed successfully. +Confirm the tags were pushed successfully. -## Stage 4: Cleanup +## Stage 5: Cleanup ```bash git checkout canary git pull ``` -Delete any leftover local branches (`changeset-release/*`, `sync-integrations-makeswift`, `integrations/makeswift`). +Delete any leftover local branches (`changeset-release/*`, `sync-integrations-makeswift`, `integrations/makeswift`, `sync-integrations-b2b-makeswift`, `integrations/b2b-makeswift`). -Report the final state: both package versions released, tags updated, branches cleaned up. +Report the final state: which package versions released, tags updated, branches cleaned up.