Publish @1sat/* packages from the 1sat-sdk monorepo. Use when publishing any package, bumping versions, or releasing. Triggers on 'publish', 'release', 'bump version', 'deploy package', 'npm publish', 'bun publish'. Enforces workspace:* resolution, dependency ordering, lockfile regeneration, and pre-1.0 semver rules.
From 1satnpx claudepluginhub b-open-io/claude-plugins --plugin 1satThis skill uses the workspace's default tool permissions.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Publish packages from the 1sat-sdk monorepo. This skill exists because workspace:* resolution, pre-1.0 semver, and bun's lockfile caching create subtle bugs that have caused broken publishes multiple times.
Pre-1.0 semver: ^0.0.x means EXACT PATCH only. ^0.0.20 resolves to 0.0.20, NOT 0.0.21+. Every consumer must be updated explicitly when a dependency bumps.
workspace: resolves from the lockfile*: If the lockfile is stale, bun publish will bake in the OLD version even though package.json has the new one. Always delete bun.lock and reinstall before publishing.
Publish in dependency order: Upstream packages must be published before downstream ones. A downstream package's workspace:* resolves at publish time.
ALL consumers must be updated: When bumping a package, find every package in the monorepo that depends on it (directly or transitively) and bump those too.
types → utils → client → templates → core → wallet → wallet-browser, wallet-node, wallet-remote → actions → connect → extension → react → cli
If you bump wallet, you MUST also bump and republish wallet-browser, wallet-node, wallet-remote, and actions (all depend on wallet). Then any external consumers (yours-wallet, bsv-mcp, etc.) must update their pinned versions.
# What packages have local changes?
git diff --name-only HEAD~1 | grep "^packages/" | cut -d/ -f2 | sort -u
# For each changed package, find all dependents:
grep -r '"@1sat/<pkg>": "workspace:' packages/*/package.json
Bump the changed package AND every package that depends on it (recursively up the dependency chain). Use patch bumps (0.0.x → 0.0.x+1).
cd /path/to/1sat-sdk
rm bun.lock
bun install
For each package being published, verify the lockfile resolved workspace:* correctly:
grep -A3 '"name": "@1sat/<pkg>"' bun.lock
rm -rf packages/<pkg>/dist
bun run --filter '@1sat/<pkg>' build
Do this for EVERY package being published.
git add packages/*/package.json
git commit -m "Release: <description of what changed>"
git push origin <branch>
Publish upstream packages first, wait for registry propagation, then publish downstream.
cd packages/<pkg> && bun publish --access public
After each publish, verify the published dependencies:
npm view @1sat/<pkg>@<version> dependencies
Confirm that @1sat/* dependencies point to the correct versions BEFORE publishing the next package.
For each external project (yours-wallet, bsv-mcp, sigma-auth, 1sat-website):
cd /path/to/consumer
# Update the pinned version in package.json
# Then:
rm bun.lock
bun install
bun run build
Symptom: Published package has old dependency versions.
Fix: Always rm bun.lock && bun install before publishing.
Symptom: Consumer installs old version of a transitive dep because an intermediate package still pins the old version. Fix: Trace the full dependency chain. If wallet changes, wallet-browser/node/remote AND actions all need bumps.
Symptom: Consumer doesn't pick up new patch version.
Fix: In pre-1.0 semver, ^0.0.x is exact. Must explicitly bump the consumer's dependency.
Symptom: Downstream package resolves to old upstream because npm registry hasn't propagated yet.
Fix: After publishing upstream, run npm view @1sat/<pkg>@<version> dependencies and wait until it returns the correct version before publishing downstream.