Skip to content
FunCoding

sdk-release

SDK build, test, version bump, and release to open source repo + registries. Covers the full pipeline from development in prismer-cloud-next to publishing on npm/PyPI/crates.io/Go.

Star
1,553
License
MIT
Last commit
Oct 11, 2026

sdk/apc/skills/sdk-release/SKILL.md

View on GitHub

SDK Release Workflow

Architecture

prismer-cloud-next/sdk/          ← Source of truth (active development)
├── prismer-cloud/               ← Main SDK suite (8 packages)
│   ├── typescript/              @prismer/sdk
│   ├── python/                  prismer (PyPI)
│   ├── golang/                  prismer-sdk-go
│   ├── rust/                    prismer-sdk (crates.io)
│   ├── mcp/                     @prismer/mcp-server
│   ├── claude-code-plugin/      @prismer/claude-code-plugin
│   ├── opencode-plugin/         @prismer/opencode-plugin
│   └── openclaw-channel/        @prismer/openclaw-channel
│
├── aip/                         ← AIP identity suite (4 packages)
│   ├── typescript/              @prismer/aip-sdk
│   ├── python/                  prismer-aip
│   ├── golang/                  prismer-aip-go
│   └── rust/                    prismer-aip
│
└── build/                       ← Build scripts (NOT in open source)
    ├── sync.sh                  Whole-directory sync to PrismerCloud
    ├── test.sh                  Run all tests against production
    ├── verify.sh                Pre-release checks
    ├── pack.sh                  Create publishable artifacts
    ├── version.sh               Bump version across all packages
    └── release.sh               Orchestrate full release

        │
        ▼  sync.sh (rsync --delete)

PrismerCloud/                    ← Open source repo (github.com/Prismer-AI/PrismerCloud)
├── sdk/                         ← EXACT mirror, no residual files
│   ├── prismer-cloud/           (flattened or nested — matches source)
│   ├── aip/
│   └── ...
├── build/                       ← Release tooling (stays in open source)
│   ├── pack.sh
│   ├── release.sh
│   └── ...
└── docs/

Key Principle: WHOLE-DIRECTORY REPLACE, NOT COPY

The sync step uses rsync --delete to ensure the open source repo is an exact mirror of the source. This prevents residual files from deleted features, renamed packages, or restructured directories from lingering in the open source repo.

# This is correct — --delete removes files not in source
rsync -av --delete --exclude='...' source/sdk/ target/sdk/

# This is WRONG — leaves deleted files behind
cp -r source/sdk/* target/sdk/

Pipeline

Step 1: Develop in prismer-cloud-next

All development happens in prismer-cloud-next/sdk/. This includes:

  • Code changes
  • New packages
  • Directory restructuring
  • Version bumps
  • Build verification
  • Local testing

Step 2: Build & Test (in prismer-cloud-next)

# Build all packages
cd sdk/prismer-cloud/typescript && npm run build
cd sdk/prismer-cloud/mcp && npm run build
cd sdk/prismer-cloud/opencode-plugin && npm run build
cd sdk/prismer-cloud/python && pip install -e ".[dev]" && pytest
cd sdk/prismer-cloud/golang && go build ./... && go test ./...
cd sdk/prismer-cloud/rust && cargo build

# Build AIP packages
cd sdk/aip/typescript && npm run build
cd sdk/aip/python && pip install -e ".[dev]" && pytest
cd sdk/aip/golang && go build ./...
cd sdk/aip/rust && cargo build

# Integration tests against production
npx tsx scripts/test-all-apis.ts --env prod

Step 3: Version Bump (in prismer-cloud-next)

# Bump all packages to target version
# This updates all version files listed in the Version File Map
sdk/build/version.sh 1.7.4

# Or use semver shortcuts
sdk/build/version.sh --patch   # 1.7.3 → 1.7.4
sdk/build/version.sh --minor   # 1.7.3 → 1.8.0
Version File Map

prismer-cloud suite:

FilePattern
sdk/prismer-cloud/typescript/package.json"version": "X.Y.Z"
sdk/prismer-cloud/mcp/package.json"version": "X.Y.Z"
sdk/prismer-cloud/mcp/src/index.tsversion: 'X.Y.Z'
sdk/prismer-cloud/opencode-plugin/package.json"version": "X.Y.Z"
sdk/prismer-cloud/claude-code-plugin/package.json"version": "X.Y.Z"
sdk/prismer-cloud/claude-code-plugin/.claude-plugin/plugin.json"version": "X.Y.Z"
sdk/prismer-cloud/openclaw-channel/package.json"version": "X.Y.Z"
sdk/prismer-cloud/python/pyproject.tomlversion = "X.Y.Z"
sdk/prismer-cloud/python/prismer/__init__.py__version__ = "X.Y.Z"
sdk/prismer-cloud/rust/Cargo.tomlversion = "X.Y.Z"
sdk/prismer-cloud/golang/README.mdversion reference

aip suite:

FilePattern
sdk/aip/typescript/package.json"version": "X.Y.Z"
sdk/aip/python/pyproject.tomlversion = "X.Y.Z"
sdk/aip/golang/go.modmodule path
sdk/aip/rust/Cargo.tomlversion = "X.Y.Z"

Step 4: Sync to Open Source (WHOLE-DIRECTORY REPLACE)

sdk/build/sync.sh

This does:

  1. rm -rf PrismerCloud/sdk/ (clean slate)
  2. rsync -av --delete --exclude={node_modules,dist,target,...} sdk/ PrismerCloud/sdk/
  3. Verify file count and structure

CRITICAL: This is a whole-directory replace. Any files that existed in PrismerCloud/sdk/ but not in prismer-cloud-next/sdk/ will be deleted. This is intentional — it prevents residual files from accumulating.

Step 5: Pack & Release (in PrismerCloud)

cd /Users/prismer/workspace/PrismerCloud

# Verify everything
build/verify.sh

# Package artifacts
build/pack.sh --clean

# Release to all registries
build/release.sh --version 1.7.4

This publishes to:

  • npm: @prismer/sdk, @prismer/mcp-server, @prismer/opencode-plugin, @prismer/claude-code-plugin, @prismer/openclaw-channel
  • PyPI: prismer
  • crates.io: prismer-sdk
  • Go Proxy: triggered by git tag sdk/golang/vX.Y.Z
  • GitHub Release: with all artifacts attached

Quick Reference

WhatWhereCommand
Developprismer-cloud-next(normal development)
Buildprismer-cloud-nextsdk/build/test.sh
Version bumpprismer-cloud-nextsdk/build/version.sh X.Y.Z
Syncprismer-cloud-nextsdk/build/sync.sh
VerifyPrismerCloudbuild/verify.sh
PackPrismerCloudbuild/pack.sh --clean
ReleasePrismerCloudbuild/release.sh

What NOT to Do

  • Do NOT edit code in PrismerCloud/sdk/ — it will be overwritten on next sync
  • Do NOT copy files instead of rsync --delete — residual files will accumulate
  • Do NOT publish from prismer-cloud-next — always sync to PrismerCloud first
  • Do NOT skip version bump — version mismatches break verify.sh
  • Do NOT publish without verify.sh passing — it catches version mismatches, missing builds, and auth issues

Registries & Credentials

RegistryCredentialCheck
npmnpm login --scope=@prismernpm whoami
PyPI~/.pypirc or TWINE_USERNAME/TWINE_PASSWORDtwine check dist/*
crates.ioCARGO_REGISTRY_TOKENcargo login
GitHubgh auth logingh auth status
Go ProxyAutomatic (git tag push)—

Similar Skills

using-git-worktrees

OBobra/superpowers298k2,631 new stars in the last 7 days

verification-before-completion

OBobra/superpowers298k2,631 new stars in the last 7 days

finishing-a-development-branch

OBobra/superpowers298k2,631 new stars in the last 7 days

wizard

MAmattpocock/skills288k10,178 new stars in the last 7 days

git-guardrails-claude-code

MAmattpocock/skills288k10,178 new stars in the last 7 days

triage

MAmattpocock/skills288k10,178 new stars in the last 7 days