instantly-multi-env-setup
Configure Instantly across development, staging, and production environments. Use when setting up multi-environment deployments, configuring per-environment secrets, or implementing environment-specific Instantly configurations. Trigger with phrases like "instantly environments", "instantly staging", "instantly dev prod", "instantly environment setup", "instantly config by env".
- License 许可
- MIT
- 最近更新
- 2026-05-26
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- instantly-multi-env-setup
- author
- Jeremy Longshore <jeremy@intentsolutions.io>
- license
- MIT
- version
- 1.0.0
- description
- Configure Instantly across development, staging, and production environments. Use when setting up multi-environment deployments, configuring per-environment secrets, or implementing environment-specific Instantly configurations. Trigger with phrases like "instantly environments", "instantly staging", "instantly dev prod", "instantly environment setup", "instantly config by env".
- allowed-tools
- Read, Write, Edit, Bash(aws:*), Bash(gcloud:*), Bash(vault:*)
- compatible-with
- claude-code, codex, openclaw
03 SKILL.md 正文
Instantly Multi-Environment Setup
Overview
Configure Instantly across development, staging, and production environments with isolated API keys, environment-specific settings, and proper secret management. Each environment gets its own credentials and configuration to prevent cross-environment data leakage.
Prerequisites
- Separate Instantly API keys per environment
- Secret management solution (environment variables, Vault, or cloud secrets)
- CI/CD pipeline with environment-aware deployment
- Application with environment detection logic
Environment Strategy
| Environment | Purpose | API Key Source | Settings |
|---|---|---|---|
| Development | Local development | .env.local |
Debug enabled, relaxed limits |
| Staging | Pre-production testing | CI/CD secrets | Production-like settings |
| Production | Live traffic | Secret manager | Optimized, hardened |
Instructions
Step 1: Configuration Structure
config/
instantly/
base.ts # Shared defaults
development.ts # Dev overrides
staging.ts # Staging overrides
production.ts # Prod overrides
index.ts # Environment resolver
Step 2: Base Configuration
// config/instantly/base.ts
export const baseConfig = {
timeout: 30000, # 30000: 30 seconds in ms
maxRetries: 3,
cache: {
enabled: true,
ttlSeconds: 300, # 300: timeout: 5 minutes
},
};
Step 3: Environment-Specific Configs
// config/instantly/development.ts
import { baseConfig } from "./base";
export const developmentConfig = {
...baseConfig,
apiKey: process.env.INSTANTLY_API_KEY_DEV,
debug: true,
cache: { enabled: false, ttlSeconds: 60 },
};
// config/instantly/staging.ts
import { baseConfig } from "./base";
export const stagingConfig = {
...baseConfig,
apiKey: process.env.INSTANTLY_API_KEY_STAGING,
debug: false,
};
// config/instantly/production.ts
import { baseConfig } from "./base";
export const productionConfig = {
...baseConfig,
apiKey: process.env.INSTANTLY_API_KEY_PROD,
debug: false,
timeout: 60000, # 60000: 1 minute in ms
maxRetries: 5,
cache: { enabled: true, ttlSeconds: 600 }, # 600: timeout: 10 minutes
};
Step 4: Environment Resolver
// config/instantly/index.ts
import { developmentConfig } from "./development";
import { stagingConfig } from "./staging";
import { productionConfig } from "./production";
type Environment = "development" | "staging" | "production";
const configs = {
development: developmentConfig,
staging: stagingConfig,
production: productionConfig,
};
export function detectEnvironment(): Environment {
const env = process.env.NODE_ENV || "development";
if (env === "production") return "production";
if (env === "staging" || process.env.VERCEL_ENV === "preview") return "staging";
return "development";
}
export function getInstantlyConfig() {
const env = detectEnvironment();
const config = configs[env];
if (!config.apiKey) {
throw new Error(`INSTANTLY_API_KEY not set for environment: ${env}`);
}
return { ...config, environment: env };
}
Step 5: Secret Management
# Local development (.env.local - git-ignored)
INSTANTLY_API_KEY_DEV=your-dev-key
# GitHub Actions
# Settings > Environments > staging/production > Secrets
# Add INSTANTLY_API_KEY_STAGING and INSTANTLY_API_KEY_PROD
# AWS Secrets Manager
aws secretsmanager create-secret \
--name instantly/production/api-key \
--secret-string "your-prod-key"
# GCP Secret Manager
echo -n "your-prod-key" | gcloud secrets create instantly-api-key-prod --data-file=-
# .github/workflows/deploy.yml
jobs:
deploy-staging:
environment: staging
env:
INSTANTLY_API_KEY_STAGING: ${{ secrets.INSTANTLY_API_KEY_STAGING }}
deploy-production:
environment: production
env:
INSTANTLY_API_KEY_PROD: ${{ secrets.INSTANTLY_API_KEY_PROD }}
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Wrong environment | Missing NODE_ENV | Set environment variable in deployment |
| Secret not found | Wrong secret path | Verify secret manager configuration |
| Cross-env data leak | Shared API key | Use separate keys per environment |
| Config validation fail | Missing field | Add startup validation with Zod schema |
Examples
Quick Environment Check
const config = getInstantlyConfig();
console.log(`Running in ${config.environment}`);
console.log(`Cache enabled: ${config.cache.enabled}`);
Startup Validation
import { z } from "zod";
const configSchema = z.object({
apiKey: z.string().min(1, "INSTANTLY_API_KEY is required"),
environment: z.enum(["development", "staging", "production"]),
timeout: z.number().positive(),
});
const config = configSchema.parse(getInstantlyConfig());
Resources
Next Steps
For deployment, see instantly-deploy-integration.
Output
- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale
04 同仓库更多 Skills
zustand-store-ts
Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state/action separation. Use when building React state management, creating global stores, or implementing reactive state patterns with Zustand.
zustand-store-creator
Zustand Store Creator - Auto-activating skill for Frontend Development. Triggers on: zustand store creator, zustand store creator Part of the Frontend Development skill category.
zero-trust-config-helper
Zero Trust Config Helper - Auto-activating skill for Security Advanced. Triggers on: zero trust config helper, zero trust config helper Part of the Security Advanced skill category.
zapier-integration-helper
Zapier Integration Helper - Auto-activating skill for Business Automation. Triggers on: zapier integration helper, zapier integration helper Part of the Business Automation skill category.
zai-cli
Execute z.AI CLI providing vision, search, reader, and GitHub exploration via CLI and MCP. Use when user needs image/video analysis, OCR, UI-to-code conversion, error diagnosis, real-time web search, web page to markdown extraction, or GitHub code exploration. Trigger with phrases like "analyze this image", "search the web for", "read this page", "explore this repo", or "use zai". Requires Z_AI_API_KEY.
yt-research
Research competitor YouTube channels, niches, and trending topics for your content strategy. Use this skill whenever the user says "research channels", "analyze competitors", "find trending topics", "niche analysis", "competitive research", "what are other creators doing", "scrape YouTube channels", or wants to understand the competitive landscape for a specific tool or topic area. Use when working with yt research. Trigger with 'yt', 'research'.