bug-reproduce
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
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.
$ npx -y skills add Prismer-AI/PrismerCloud --skill sdk-release --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sdk-releaseContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
name: sdk-release description: 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. allowed-tools: Bash, Read, Write, Edit
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/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/
All development happens in prismer-cloud-next/sdk/. This includes:
# 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
# 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
**prismer-cloud suite:** | File | Pattern | |------|---------| | `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.ts` | `version: '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.toml` | `version = "X.Y.Z"` | | `sdk/prismer-cloud/python/prismer/__init__.py` | `__version__ = "X.Y.Z"` | | `sdk/prismer-cloud/rust/Cargo.toml` | `version = "X.Y.Z"` | | `sdk/prismer-cloud/golang/README.md` | version reference |
**aip suite:** | File | Pattern | |------|---------| | `sdk/aip/typescript/package.json` | `"version": "X.Y.Z"` | | `sdk/aip/python/pyproject.toml` | `version = "X.Y.Z"` | | `sdk/aip/golang/go.mod` | module path | | `sdk/aip/rust/Cargo.toml` | `version = "X.Y.Z"` |
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.
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:
| What | Where | Command | | ---------
Repo: Prismer-AI/PrismerCloud
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
Review a diff against its acceptance criteria in four segments (convention adherence, bug…
Five-dimension design audit (frontend UI/UX · server data-model & flow · endpoint spec ·…
Before merge, mechanize Documentation-First — derive the code delta from git diff, then…
Diagnose the local dev machine before any APC loop step — run apc env doctor, classify each…
Close out a local coding task on the bound daemon — stage, commit, branch, merge, push via…