From arn-infra
This skill should be used when the user says "manage environments", "arn infra env", "infra env", "environment setup", "configure environments", "set up staging", "set up production", "environment management", "create environment", "environment promotion", "promote to staging", "promote to production", "environment isolation", "configure dev staging prod", "environment-specific config", "tfvars per environment", "arn-infra-env", or wants to configure, create, or manage infrastructure environments (dev/staging/production) with isolation strategies, variable overrides, and promotion rules.
npx claudepluginhub appsvortex/arness --plugin arn-infraThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Configure and manage infrastructure environments (dev, staging, production) with provider-specific isolation strategies, environment-specific variable overrides, resource sizing, and promotion rules. This skill generates environment-specific IaC configurations and updates the environment promotion pipeline.
This skill is expertise-adaptive: beginner users get simplified environment setups with opinionated defaults, while expert users have full control over isolation strategies and promotion configurations.
Read ## Arness from the project's CLAUDE.md. If no ## Arness section exists or Arness Infra fields are missing, inform the user: "Arness Infra is not configured for this project yet. Run /arn-infra-wizard to get started — it will set everything up automatically." Do not proceed without it.
Check the Deferred field. If Deferred: yes, inform the user: "Infrastructure is in deferred mode. Environment management is not available until infrastructure is fully configured. Run /arn-infra-assess to un-defer." Stop.
Extract:
~/.arness/user-profile.yaml (or .claude/arness-profile.local.md if it exists — project override takes precedence). Apply the experience derivation mapping from ${CLAUDE_PLUGIN_ROOT}/skills/arn-infra-ensure-config/references/experience-derivation.md. If no profile exists, check for legacy Experience level in ## Arness as fallback.providers.md for per-provider detailsenvironments.mdRead the environment configuration:
Read <environments-config-path>
Extract the current state:
Read the provider configuration:
Read <providers-config-path>
Extract per-provider scope and IaC tool for environment-specific config generation.
Present current state: "Your current environment pipeline: [env1] --> [env2] --> [env3]
| Environment | Auto-deploy | Approval | Last deployed |
|---|---|---|---|
| [table of environments]" |
Ask (using AskUserQuestion):
"What would you like to do?"
Options:
If Full environment setup: proceed through Steps 2-5 sequentially, pausing for user confirmation at each decision point.
If Specific task:
Ask (using AskUserQuestion):
"Which task?"
Options:
Route each specific task to its corresponding step: Add environment maps to Step 2, Configure environment maps to Step 3, Configure promotion maps to Step 5, Generate configs maps to Step 4.
Read the local override or plugin default for
environment-patterns.md.
For each provider, recommend an isolation strategy based on experience level:
Expert: Present all isolation options with trade-offs and let the user choose:
Ask (using AskUserQuestion):
"For [provider], choose your isolation strategy:"
Options:
Intermediate: Present the recommended option with a brief alternative: "For [provider], I recommend [strategy] because [rationale]. An alternative would be [other option] which trades [trade-off]."
Beginner: Make the recommendation directly: "For [provider], I'll use [simplest appropriate strategy]. This gives you separate environments without extra complexity."
For each environment, configure:
Variable overrides:
t3.micro for dev, t3.medium for staging, t3.large for prod)db.t3.micro for dev, db.r6g.large for prod)Resource sizing guidance per experience level:
Expert: Ask for specific resource specifications per environment.
Intermediate: Suggest a sizing matrix and ask for approval: "Here's a recommended sizing matrix:
| Resource | Dev | Staging | Prod |
|---|---|---|---|
| Compute | [small] | [medium] | [large] |
| Database | [small] | [medium] | [large] |
| Replicas | 1 | 2 | 3 |
| Adjust as needed." |
Beginner: Apply defaults automatically: "I'll use small resources for dev, medium for staging, and appropriately sized resources for production. This keeps costs low during development."
Based on the IaC tool, generate environment-specific configuration files:
| IaC Tool | Config Format | Example |
|---|---|---|
| OpenTofu / Terraform | environments/<env>.tfvars | instance_type = "t3.small" |
| Pulumi | Pulumi.<env>.yaml stack config | config: app:instanceType: t3.small |
| CDK | Environment props in cdk.json or separate env file | { "env": { "account": "...", "region": "..." } } |
| Bicep | environments/<env>.parameters.json | { "parameters": { "instanceType": { "value": "..." } } } |
| Kubernetes | environments/<env>/kustomization.yaml or values-<env>.yaml | Kustomize overlays or Helm value overrides |
| PaaS (none) | Platform-native env config | Environment-specific sections in fly.toml, vercel.json |
Invoke the arn-infra-specialist agent via the Task tool with:
--- ENVIRONMENT CONTEXT --- Environments: [list in promotion order] [For each environment:] Environment: [name] Isolation strategy: [strategy] Variable overrides: [key-value pairs] Resource sizing: [specifications] --- END ENVIRONMENT CONTEXT ---
--- PROVIDER CONFIGURATION --- [For each provider:] Provider: [name] IaC tool: [tool] Scope: [components] --- END PROVIDER CONFIGURATION ---
--- INFRASTRUCTURE CONFIG --- Experience level: [derived from user profile] --- END INFRASTRUCTURE CONFIG ---
--- INSTRUCTIONS --- Generate environment-specific configuration files for each environment and provider combination.
For each environment:
Follow these rules:
Read the local override or plugin default for
promotion-patterns.md.
Configure the promotion pipeline between environments:
Default promotion rules:
For each promotion step, configure:
Expert: Present all strategy options and let the user choose per transition.
Intermediate: Recommend rolling updates with manual approval for production: "I recommend auto-deploying to staging on merge, with manual approval and rolling updates for production. Would you like to adjust?"
Beginner: Apply safe defaults: "I'll set up auto-deploy to staging when you merge code, and manual approval before deploying to production. This gives you a safety net."
Update environments.md with the configured environments:
# Environments
## Promotion Pipeline
[env1] --> [env2] --> [env3]
## [environment-name]
- **Isolation:** [strategy]
- **Auto-deploy:** [yes | no]
- **Approval required:** [yes | no]
- **Deploy strategy:** [rolling | blue-green | canary]
- **Rollback policy:** [auto | manual]
- **Last deployed:** --
- **Pending changes:** none
Update ## Arness in CLAUDE.md with the finalized environment list if it has changed:
Environment Configuration Summary:
Recommended next steps:
"Environments are configured. Here is the recommended path:
/arn-infra-pipeline to generate environment-aware deployment pipelines/arn-infra-secrets to configure per-environment secrets/arn-infra-deploy to deploy to your first environmentOr run /arn-infra-wizard for the full guided pipeline."
## Arness config missing: Suggest running /arn-infra-wizard to get started. Stop./arn-infra-init to configure providers. Stop.none and no per-provider IaC tools are configured, skip IaC config generation. Inform the user that platform-native environment configurations will be used.