Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Configure CoreWeave across development, staging, and production environments. Use when setting up multi-environment GPU infrastructure, separating namespaces, or managing per-environment GPU quotas. Trigger with phrases like "coreweave environments", "coreweave staging", "coreweave multi-env", "coreweave namespace setup".
.claude/skills/jeremylongshore-coreweave-multi-env-setup/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -7% | 0% |
> Community-contributed. Not affiliated with, endorsed by, or sponsored by CoreWeave, Inc. CoreWeave is a registered trademark of CoreWeave, Inc.
CoreWeave GPU cloud requires strict environment separation to control infrastructure costs and prevent resource contention. Each environment maps to an isolated Kubernetes namespace with its own GPU quota, scaling policy, and access controls. Development uses cheaper GPU tiers for iteration speed, staging mirrors production GPU types for accurate benchmarking, and production runs full-scale with no scale-to-zero to guarantee inference latency SLAs.
typescriptconst coreweaveConfig = (env: string) => ({ development: { namespace: "app-dev", apiEndpoint: process.env.CW_API_ENDPOINT_DEV!, token: process.env.CW_TOKEN_DEV!, gpuType: "L40", scaleToZero: true, replicas: [0, 1], }, staging: { namespace: "app-staging", apiEndpoint: process.env.CW_API_ENDPOINT_STG!, token: process.env.CW_TOKEN_STG!, gpuType: "A100_PCIE_40GB", scaleToZero: true, replicas: [0, 2], }, production: { namespace: "app-prod", apiEndpoint: process.env.CW_API_ENDPOINT_PROD!, token: process.env.CW_TOKEN_PROD!, gpuType: "A100_PCIE_80GB", scaleToZero: false, replicas: [2, 10], }, }[env]);
text# Per-env files: .env.development, .env.staging, .env.production CW_API_ENDPOINT_{DEV|STG|PROD}=https://k8s.{ord1|ord1|las1}.coreweave.com CW_TOKEN_{DEV|STG|PROD}=<service-account-token> CW_NAMESPACE={app-dev|app-staging|app-prod} CW_GPU_TYPE={L40|A100_PCIE_40GB|A100_PCIE_80GB}
typescriptfunction validateCoreWeaveEnv(env: string): void { const required = ["CW_API_ENDPOINT", "CW_TOKEN", "CW_NAMESPACE", "CW_GPU_TYPE"]; const suffix = { development: "_DEV", staging: "_STG", production: "_PROD" }[env]; const missing = required .map((k) => (k.includes("NAMESPACE") ? k : `${k}${suffix}`)) .filter((k) => !process.env[k]); if (missing.length) throw new Error(`Missing env vars for ${env}: ${missing.join(", ")}`); }
bash# 1. Validate model in dev namespace kubectl -n app-dev get inferenceservice my-model -o jsonpath='{.status.conditions}' # 2. Apply staging overlay with production GPU type kustomize build k8s/overlays/staging | kubectl apply -f - # 3. Run inference benchmarks against staging endpoint curl -X POST https://staging.myapp.coreweave.cloud/v1/predict -d @test-payload.json # 4. Promote to production (blue-green via namespace switch) kustomize build k8s/overlays/prod | kubectl apply -f - kubectl -n app-prod rollout status deployment/my-model
| Setting | Dev | Staging | Prod | |---------|-----|---------|------| | GPU Type | L40 | A100 40GB | A100 80GB | | Scale-to-Zero | Yes | Yes | No | | Replicas | 0-1 | 0-2 | 2-10 | | Namespace | app-dev | app-staging | app-prod | | Region | ord1 | ord1 | las1 | | Spot Instances | Yes | No | No |
| Issue | Cause | Fix | |-------|-------|-----| | GPU quota exceeded | Namespace limit reached | Request quota increase via CW support portal | | Pod stuck Pending | GPU type unavailable in region | Check kubectl describe node for capacity; switch region | | Scale-to-zero not waking | HPA misconfigured | Verify minReplicas: 0 and KEDA scaler settings | | Namespace access denied | RBAC not applied to overlay | Apply RoleBinding in kustomize overlay |
See coreweave-deploy-integration.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 15,947 | 9,648 | -39% | 1 | 1 | 0% | 3,423 | 3,346 | -2% | 0 | 0 | — |
case-02 | fail→pass | 13,947 | 10,702 | -23% | 1 | 1 | 0% | 2,926 | 3,384 | +16% | 0 | 0 | — |
case-03 | fail→fail | 15,898 | 4,293 | -73% | 1 | 1 | 0% | 2,672 | 2,040 | -24% | 0 | 0 | — |
case-04 | fail→pass | 15,408 | 5,244 | -66% | 1 | 1 | 0% | 2,760 | 2,091 | -24% | 0 | 0 | — |
case-05 | fail→pass | 7,012 | 1,891 | -73% | 1 | 1 | 0% | 1,165 | 1,440 | +24% | 0 | 0 | — |
case-06 | pass→pass | 13,930 | 4,938 | -65% | 1 | 1 | 0% | 2,637 | 2,016 | -24% | 0 | 0 | — |
case-07 | fail→pass | 9,843 | 2,000 | -80% | 1 | 1 | 0% | 1,557 | 1,441 | -7% | 0 | 0 | — |
case-08 | fail→pass | 10,434 | 1,843 | -82% | 1 | 1 | 0% | 1,745 | 1,382 | -21% | 0 | 0 | — |
case-13 | fail→pass | 8,881 | 2,058 | -77% | 1 | 1 | 0% | 1,655 | 1,460 | -12% | 0 | 0 | — |
case-09 | fail→pass | 12,883 | 1,971 | -85% | 1 | 1 | 0% | 2,247 | 1,467 | -35% | 0 | 0 | — |
case-10 | fail→pass | 12,228 | 4,089 | -67% | 1 | 1 | 0% | 2,288 | 1,935 | -15% | 0 | 0 | — |
case-11 | fail→pass | 9,400 | 1,574 | -83% | 1 | 1 | 0% | 1,706 | 1,400 | -18% | 0 | 0 | — |
case-12 | pass→pass | 7,522 | 2,459 | -67% | 1 | 1 | 0% | 1,334 | 1,515 | +14% | 0 | 0 | — |
case-14 | fail→pass | 11,455 | 6,779 | -41% | 1 | 1 | 0% | 2,118 | 2,484 | +17% | 0 | 0 | — |
case-15 | fail→pass | 11,551 | 1,657 | -86% | 1 | 1 | 0% | 1,959 | 1,371 | -30% | 0 | 0 | — |
case-16 | fail→pass | 7,552 | 1,585 | -79% | 1 | 1 | 0% | 1,337 | 1,307 | -2% | 0 | 0 | — |
case-17 | fail→pass | 6,855 | 1,251 | -82% | 1 | 1 | 0% | 1,205 | 1,258 | +4% | 0 | 0 | — |
case-18 | fail→pass | 4,076 | 1,739 | -57% | 1 | 1 | 0% | 720 | 1,310 | +82% | 0 | 0 | — |
case-19 | fail→pass | 3,719 | 6,440 | +73% | 1 | 1 | 0% | 621 | 1,447 | +133% | 0 | 0 | — |
case-20 | fail→pass | 9,856 | 2,612 | -73% | 1 | 1 | 0% | 1,561 | 1,681 | +8% | 0 | 0 | — |
case-21 | pass→pass | 12,416 | 10,264 | -17% | 1 | 1 | 0% | 2,370 | 2,955 | +25% | 0 | 0 | — |
case-22 | pass→fail | 13,637 | 10,107 | -26% | 1 | 1 | 0% | 2,670 | 3,276 | +23% | 0 | 0 | — |
case-23 | fail→pass | 15,363 | 12,815 | -17% | 1 | 1 | 0% | 3,055 | 3,832 | +25% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +74 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.