From dlaw
Deploy ssmd components to GKE prod. Handles git tagging, GitHub Actions image builds, manifest updates, and Flux reconciliation. Use when deploying connector, archiver, parquet-gen, DQ, data-ts, CLI, operator, worker, or other ssmd images after code changes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dlaw:ssmd-deployThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Deploy ssmd components from code change through to running in GKE prod.
Deploy ssmd components from code change through to running in GKE prod.
ssmd images are built by GitHub Actions on tag push. Deployments are GitOps via Flux: update image tags in clusters/gke-prod/ manifests, push, and Flux reconciles.
There are two repos involved:
899bushwick/ssmd/) — source code, where tags trigger image builds| Component | Tag Format | Image | Manifest Path(s) |
|---|---|---|---|
| connector | v* (e.g. v0.9.11) | ghcr.io/aaronwald/ssmd-connector | clusters/gke-prod/apps/ssmd/generated/connector-{crypto,kraken-futures,polymarket}.yaml |
| archiver | v* (same tag as connector) | ghcr.io/aaronwald/ssmd-archiver | clusters/gke-prod/apps/ssmd/generated/archiver-{kalshi-crypto,kraken-futures,polymarket}.yaml |
| parquet-gen | parquet-gen-v* | ghcr.io/aaronwald/ssmd-parquet-gen | clusters/gke-prod/apps/ssmd/archiver/cronjob-parquet-gen.yaml |
| operator | operator-v* | ghcr.io/aaronwald/ssmd-operator | clusters/gke-prod/apps/ssmd/operator/deployment.yaml |
| data-ts | data-ts-v* | ghcr.io/aaronwald/ssmd-data-ts | clusters/gke-prod/apps/ssmd/data-ts/deployment.yaml |
| cli-ts | cli-ts-v* | ghcr.io/aaronwald/ssmd-cli-ts | (used in CronJobs: secmaster-crypto, kraken-sync, polymarket-sync, fees-daily, health-daily) |
| worker | worker-v* | ghcr.io/aaronwald/ssmd-worker | clusters/gke-prod/apps/ssmd/worker/deployment.yaml |
| signal-runner | signal-runner-v* | ghcr.io/aaronwald/ssmd-signal-runner | clusters/gke-prod/apps/ssmd/signals/ |
| Component | Tag Format | Image | Manifest Path |
|---|---|---|---|
| dq | dq-v* | ghcr.io/aaronwald/ssmd-dq | clusters/gke-prod/apps/ssmd/cronjobs/dq-daily.yaml |
Identify which components changed. Common groupings:
v*), parquet-gen (parquet-gen-v*)v*)dq-v*)parquet-gen-v*)operator-v*), also copy CRDs to clusters/gke-prod/apps/ssmd/operator/crds.yamlCheck the latest tags:
# For ssmd repo components
git -C <ssmd-path> tag --sort=-creatordate | grep "^v[0-9]" | head -3 # connector/archiver
git -C <ssmd-path> tag --sort=-creatordate | grep "^parquet-gen-v" | head -3
git -C <ssmd-path> tag --sort=-creatordate | grep "^operator-v" | head -3
git -C <ssmd-path> tag --sort=-creatordate | grep "^data-ts-v" | head -3
# For 899bushwick components
git -C <899bushwick-path> tag --sort=-creatordate | grep "^dq-v" | head -3
Increment the patch version (e.g. v0.9.10 -> v0.9.11).
# ssmd repo
git -C <ssmd-path> add <changed-files>
git -C <ssmd-path> commit -m "<type>: <description>"
git -C <ssmd-path> push origin main
# 899bushwick repo (for DQ/data changes)
git -C <899bushwick-path> add <changed-files>
git -C <899bushwick-path> commit -m "<type>: <description>"
git -C <899bushwick-path> push origin main
# ssmd repo tags
git -C <ssmd-path> tag <tag>
git -C <ssmd-path> push origin <tag>
# 899bushwick tags
git -C <899bushwick-path> tag <tag>
git -C <899bushwick-path> push origin <tag>
Multiple tags can be pushed at once: git push origin v0.9.11 parquet-gen-v0.7.0
gh run list --repo aaronwald/ssmd --limit 5 --json name,status,conclusion,headBranch
gh run list --repo aaronwald/899bushwick --limit 3 --json name,status,conclusion,headBranch
Poll until all relevant builds show "conclusion":"success". Rust builds take 3-5 minutes; Python/Deno builds take 1-2 minutes.
Update image tags in the manifest files listed in the Component Registry table above.
The image: field format is: ghcr.io/aaronwald/<image-name>:<version-without-prefix>
v0.9.11 -> image tag 0.9.11parquet-gen-v0.7.0 -> image tag 0.7.0dq-v0.8.0 -> image tag 0.8.0Important: Connector and archiver share the same version number (same v* tag triggers both builds).
git -C <899bushwick-path> add <manifest-files> ssmd # include ssmd submodule if updated
git -C <899bushwick-path> commit -m "deploy: <component> <version>[, <component> <version>...]"
git -C <899bushwick-path> push origin main
Flux auto-reconciles on git push. To force or check:
flux reconcile kustomization ssmd --with-source
kubectl get pods -n ssmd -w # watch for rolling restarts
v* tag). Even if only one changed, both get rebuilt.kubectl apply directly — all changes go through git + Flux.Components: connector v0.9.11, parquet-gen v0.7.0
Tags: v0.9.11, parquet-gen-v0.7.0 (in ssmd repo)
Manifests: 3 connector yamls, 3 archiver yamls, 1 parquet-gen cronjob
Components: dq v0.8.0
Tags: dq-v0.8.0 (in 899bushwick repo)
Manifests: 1 dq-daily cronjob
Components: operator v0.5.6
Tags: operator-v0.5.6 (in ssmd repo)
Extra step: copy CRDs from ssmd-operators to clusters/gke-prod/apps/ssmd/operator/crds.yaml
Manifests: 1 operator deployment + 1 crds.yaml
npx claudepluginhub aaronwald/dlawskillz --plugin dlawConstructs GitOps workflows using ArgoCD or Flux for Kubernetes. Generates manifests, sync policies, multi-environment promotion, RBAC, notifications, and CI updates for secure continuous deployment.
Generates complete deployment configurations—Dockerfile, manifests, environment config, rollback procedures—for Node.js, Python, Go, Rust, Java services. Useful for deployment setup, strategy, or rollback queries.
Orchestrates multi-stage deployment pipelines with Kubernetes, CI/CD platforms, and strategies like blue-green, canary, rolling updates across dev/staging/prod.