releaselisted
Install: claude install-skill YiftachCohen/token-tab
# Cutting a Token Tab release
The full process is `RELEASING.md`; this skill is the executable version with the
gotchas baked in. Two artifacts ship per tag: the notarized app zip (built LOCALLY —
the signing key never enters CI) and the npm tarball `@ycstudios/token-tab`.
## 0. Preflight
- Working tree clean, `main` up to date, CI green on `main`.
- Pick the version (SemVer; 0.x minor bumps may change behavior).
- Run the local gate before touching versions — a release should never be where you
discover red:
```sh
node --test
swift test --package-path app
bash .github/scripts/trust-audit.sh
node .github/scripts/rates-parity.mjs
bash .github/scripts/design-lint.sh
```
## 1. Bump the version — three places, or the tag fails CI
1. `package.json` → `"version"`.
2. `app/Bundle/Info.plist` → `CFBundleShortVersionString` (leave `CFBundleVersion` alone —
it's a build number, not the release version).
3. `CHANGELOG.md` → retitle `## [Unreleased]` to `## [x.y.z] — YYYY-MM-DD`, and start a
fresh empty `## [Unreleased]` above it. **Call out any trust-surface change explicitly**
(entitlements, parsed fields, rate table, network posture) — that honesty is the product.
Land this on `main` through the normal PR flow.
## 2. Tag → draft release
```sh
git tag vX.Y.Z && git push origin vX.Y.Z
```
Watch the `Release` workflow (`gh run watch`): it re-checks version stamps, re-runs the
trust audit and both engines' tests, proves the app assembles, and opens a **dr