@smbcloud / cli / commits / 66fec13

Update skills

Seto Elkahfi committed May 29, 2026 at 23:52 UTC 66fec13f74604c933c2ba5f723dbbe061f08ca5c
1 file changed +20 -1
.agents/skills/smbcloud-cli-release/SKILL.md
+20 -1
@@ -19,6 +19,7 @@ Use this skill when work touches any part of the smbCloud CLI distribution flow:
19 Use these files as the release source of truth:
20
21 - Rust crate version and binary name: `crates/cli/Cargo.toml`
22 +- Workspace crate dependency versions: `Cargo.toml` under `[workspace.dependencies]`
23 - SDK WASM crate version: `crates/smbcloud-auth-sdk-wasm/Cargo.toml`
24 - SDK npm package version: `sdk/npm/smbcloud-auth/package.json`
25 - SDK npm build script: `sdk/npm/smbcloud-auth/prepare-package.mjs`
@@ -27,6 +28,8 @@ Use these files as the release source of truth:
28 - npm platform package generator: `npm/scripts/render-platform-package.cjs`
29 - npm wrapper package generator: `npm/scripts/render-main-package.cjs`
30 - npm wrapper launcher: `npm/smbcloud-cli/src/index.ts`
31 +- npm wrapper committed package metadata: `npm/smbcloud-cli/package.json`
32 +- npm wrapper committed lockfile: `npm/smbcloud-cli/package-lock.json`
33 - PyPI package metadata: `pypi/pyproject.toml`
34 - PyPI package README: `pypi/README.md`
35 - SDK PyPI package metadata: `sdk/python/pyproject.toml`
@@ -39,8 +42,16 @@ Use these files as the release source of truth:
42
43 The SDK npm package `@smbcloud/sdk-auth` must have its version in `sdk/npm/smbcloud-auth/package.json` match the version in `crates/smbcloud-auth-sdk-wasm/Cargo.toml` exactly. The `prepare-package.mjs` script enforces this at build time and will fail CI if they diverge.
44
45 +When bumping workspace crate versions for a release, also update the version constraints in the root `Cargo.toml` under `[workspace.dependencies]` so every `smbcloud-*` path dependency points at the same release version.
46 +
47 When bumping workspace crate versions for a release, always update `sdk/npm/smbcloud-auth/package.json` in the same commit.
48
49 +The npm wrapper package is generated, but its checked-in files still need to match the release version before tagging:
50 +
51 +- rerender `npm/smbcloud-cli/package.json` with `node ../scripts/render-main-package.cjs ./package.json <version>`
52 +- refresh `npm/smbcloud-cli/package-lock.json` with `npm install`
53 +- commit both files so CI and local packaging agree on the wrapper version and optional dependency versions
54 +
55 The same applies to the Ruby gems in `sdk/gems/`. For each gem (`auth`, `model`):
56
57 - `lib/<gem>/version.rb` — the gem version constant
@@ -66,9 +77,16 @@ Workflow:
77 If a tag was placed on the wrong commit (e.g. before a last-minute fix), move it:
78
79 1. Merge the fix into `development`.
69 -2. Force-move the tag: `git tag -f v<version>`.
80 +2. Recreate the annotated tag on the correct commit: `git tag -fa v<version> -m "v<version>"`.
81 3. Force-push the tag: `git push origin v<version> --force`.
82
83 +When verifying the remote tag, remember that annotated tags have two refs. `git ls-remote --tags origin refs/tags/v<version>*` should show:
84 +
85 +- `refs/tags/v<version>` — the tag object
86 +- `refs/tags/v<version>^{}` — the peeled commit
87 +
88 +The peeled `^{}` ref is the one that must match the intended release commit.
89 +
90 The `release-crate.yml` orchestrator triggers on `push.tags: "v*.*.*"`, so the force-push will re-trigger the full release chain.
91
92 ## Release model
@@ -109,6 +127,7 @@ It is built from `pypi/pyproject.toml` with `maturin` and `bindings = "bin"`, so
127 1. Confirm npm auth with `npm whoami`.
128 2. Confirm the crate version in `crates/cli/Cargo.toml`.
129 3. Use the same version string for every npm package in that release.
130 +4. Rerender `npm/smbcloud-cli/package.json` and refresh `npm/smbcloud-cli/package-lock.json` before tagging if the wrapper version changed.
131
132 ### Build platform binaries
133