writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
klaviyo-multi-env-setupConfigure Klaviyo across development, staging, and production environments. Use when setting up multi-environment deployments, configuring per-environment API keys, or implementing environment-specific Klaviyo configurations. Trigger with phrases like "klaviyo environments", "klaviyo staging", "klaviyo dev prod", "klaviyo environment setup", "klaviyo config…
Independent GitHub snapshot · Automated classification · Original documentation governs
name: klaviyo-multi-env-setup description: 'Configure Klaviyo across development, staging, and production environments.
Use when setting up multi-environment deployments, configuring per-environment API keys,
or implementing environment-specific Klaviyo configurations.
Trigger with phrases like "klaviyo environments", "klaviyo staging",
"klaviyo dev prod", "klaviyo environment setup", "klaviyo config by env".
' allowed-tools: Read, Write, Edit, Bash(aws:), Bash(gcloud:), Bash(vault:*) version: 1.7.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Configure Klaviyo across development, staging, and production with separate API keys, environment detection, secret management, and production safeguards. Every environment follows the same shape — detect the env, resolve its config, load its secret, guard destructive/send operations. The lean workflow and first skeleton live here; full step-by-step code lives in references/implementation.md.
klaviyo-api SDK installed| Environment | Klaviyo Account | API Key | Use Case |
|---|---|---|---|
| Development | Test account | pk_test_dev_*** | Local development, exploration |
| Staging | Test account | pk_test_staging_*** | Pre-prod validation, integration tests |
| Production | Production account | pk_live_*** | Real customer data, live sends |
Important: Klaviyo does not have a sandbox mode. Use a separate test account for dev/staging to avoid sending real emails.
The pattern is the same across all three environments; only the API key and the per-env flags change. Read the matching section in references/implementation.md, then:
src/config/klaviyo.ts
with a detectEnvironment() helper and a per-env ENV_CONFIGS map that flips
enableSending, cache, and rate-limit concurrency by environment.gcloud secrets create, aws secretsmanager create-secret, or
Vault). Never commit keys; local dev reads a git-ignored .env.local.guardCampaignSend, guardedProfileDeletion).staging→staging key and
main→prod key, verifies connectivity, then deploys.pk_live_*** key is detected outside production.// src/config/klaviyo.ts — see reference for the full ENV_CONFIGS + getSession
type Environment = 'development' | 'staging' | 'production';
function detectEnvironment(): Environment {
const env = process.env.NODE_ENV || 'development';
if (['production', 'staging'].includes(env)) return env as Environment;
return 'development';
}
// development/staging force enableSending:false; only production sends.
The full config module, per-platform secret commands, guard functions, the CI matrix, and the startup validator are in references/implementation.md.
src/config/klaviyo.ts resolving a typed config per environment| Issue | Cause | Solution |
|---|---|---|
| Wrong key for environment | Missing env-specific secret | Verify secret per environment |
| Production key in dev | Key leak risk | Add startup validation warning |
| Sends in staging | enableSending not checked | Add campaign send guard |
| Config merge fails | Invalid env value | Validate NODE_ENV on startup |
Block a campaign send outside production. The guard reads the resolved config and throws when sending is disabled, so a staging run can never email real customers:
guardCampaignSend(); // throws in dev/staging (enableSending:false), passes in prod
Catch a leaked production key in staging. Startup validation warns when a
pk_live_*** key is present outside production:
[Klaviyo] Environment: staging
[Klaviyo] Sending enabled: false
[Klaviyo] WARNING: Production API key detected in non-production environment!
The full config module, secret-store commands for each platform, the guard implementations, the CI matrix, and the startup validator are in references/implementation.md.
klaviyo-observability skill.