using-git-worktrees
OBobra/superpowers298k近 7 天新增 2,631 个 star
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.
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:
rm -rf PrismerCloud/sdk/ (clean slate)rsync -av --delete --exclude={node_modules,dist,target,...} sdk/ PrismerCloud/sdk/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:
sdk/golang/vX.Y.Z| What | Where | Command |
|---|---|---|
| Develop | prismer-cloud-next | (normal development) |
| Build | prismer-cloud-next | sdk/build/test.sh |
| Version bump | prismer-cloud-next | sdk/build/version.sh X.Y.Z |
| Sync | prismer-cloud-next | sdk/build/sync.sh |
| Verify | PrismerCloud | build/verify.sh |
| Pack | PrismerCloud | build/pack.sh --clean |
| Release | PrismerCloud | build/release.sh |
| Registry | Credential | Check |
|---|---|---|
| npm | npm login --scope=@prismer | npm whoami |
| PyPI | ~/.pypirc or TWINE_USERNAME/TWINE_PASSWORD | twine check dist/* |
| crates.io | CARGO_REGISTRY_TOKEN | cargo login |
| GitHub | gh auth login | gh auth status |
| Go Proxy | Automatic (git tag push) | — |
OBobra/superpowers298k近 7 天新增 2,631 个 star
OBobra/superpowers298k近 7 天新增 2,631 个 star
OBobra/superpowers298k近 7 天新增 2,631 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star
MAmattpocock/skills288k近 7 天新增 10,178 个 star