Arness Infra Init
Configure the Arness Infra plugin for a project by selecting cloud providers and IaC tools, establishing environment strategy, and persisting configuration to CLAUDE.md. This is optional — Arness Infra auto-configures with sensible defaults on first skill invocation. Use this to configure providers, environments, IaC tools, CI/CD platform, or review your current settings.
This skill does NOT require Arness Core. It writes infra configuration fields into the shared ## Arness section in CLAUDE.md, preserving any existing fields from arn-code or arn-spark. If no ## Arness section exists, it creates one.
The infra configuration written by this skill contains up to 25 fields that govern the behavior of all downstream infrastructure skills and agents. The configuration is expertise-adaptive: experience level is derived from your user profile (set during first Arness skill invocation) and governs conversational tone and recommendations. Beginner users get opinionated PaaS recommendations, while expert users have full control over provider and IaC tool selection.
Note: Experience level is now derived from your user profile and is no longer stored in
## Arnessconfig. The derivation mapping is at${CLAUDE_PLUGIN_ROOT}/skills/arn-infra-ensure-config/references/experience-derivation.md. If no profile exists when init runs, the welcome flow in ensure-config runs first to create one.
Workflow
Step 0: Existing Infrastructure Detection
Before any user interaction, scan the project for existing infrastructure artifacts.
Read the local override or plugin default for
existing-infra-detection.md.
Scan for:
- IaC files:
*.tf,*.hcl,Pulumi.*,cdk.json,*.bicep - Container configs:
Dockerfile,docker-compose.*,.dockerignore - CI/CD pipelines:
.github/workflows/,.gitlab-ci.yml,bitbucket-pipelines.yml - Platform configs:
fly.toml,railway.json,vercel.json,render.yaml,netlify.toml - Kubernetes:
kubernetes/,k8s/,helm/,Chart.yaml - Cloud-specific:
.aws/,gcloud/,azure/
If existing infrastructure is detected:
Present findings: "I found existing infrastructure in this project: [list detected artifacts]. I can adopt and manage these within Arness Infra."
Infer provider and IaC tool from detected artifacts (e.g., .tf files imply OpenTofu/Terraform, fly.toml implies Fly.io) and pre-populate the config suggestions in subsequent steps.
If no infrastructure is detected: Continue to Step 1 normally.
Step 1: Check Prerequisites and Existing Configuration
Read the project's CLAUDE.md.
Check for ## Arness section:
- If
## Arnesssection exists: read it and extract all fields. Note which fields are from other plugins (Plans directory, Specs directory, etc. from arn-code; Vision directory, etc. from arn-spark) -- these will be preserved when writing infra fields. - If
## Arnesssection does NOT exist: this is a standalone infra project. A new## Arnesssection will be created in Step 8.
Check for existing infra configuration within ## Arness:
Check for any infra-specific field within ## Arness (such as Deferred, Project topology, Providers, or Infra plans directory) -- these fields are only written by infra-init or infra-ensure-config and their presence indicates infra has been initialized. Note: the Experience level field is no longer used as the indicator since it has been removed from ## Arness config.
If infra fields do not exist (fresh init):
- Proceed to Step 1b
If infra fields exist:
-
Parse all infra config fields from the
## Arnesssection -
Show the user their current configuration
-
Ask (using
AskUserQuestion):"What would you like to do with your existing configuration?"
Options:
- Review -- Show current configuration summary, no changes
- Update -- Check for missing fields and fill them in
- Reconfigure -- Re-run the full setup flow from scratch
- Keep -- No changes
- If Review --> display a clean summary of all
## Arnessfields relevant to Arness Infra, then exit the skill - If Keep --> done, exit the skill
- If Reconfigure --> continue to Step 1b, pre-filling known values as defaults
- If Update --> check which fields are missing and only process those. Preserve all existing fields. Run Step U1 (Reference Upgrade) to check for reference version changes. Then proceed to Step 8 to write the updated config.
Step 1b: Timing and Deferral
Before any configuration:
Ask (using AskUserQuestion):
"When do you want to set up infrastructure?"
Options:
- Now -- Configure providers and start the infrastructure workflow
- Later -- Create a minimal config and defer infrastructure planning. Arness will accumulate infrastructure notes as you build features.
If deferred:
- Derive experience level from user profile (Step 2) and ask Step 4 (topology) only
- Write (or append to existing
## Arness) minimal infra config with:Deferred: yes,Project topology,Application path(if applicable) - Create
.arness/infra/directory:mkdir -p .arness/infra - Create
.arness/infra/deferred-backlog.mdwith empty structure:# Deferred Infrastructure Backlog Infrastructure observations accumulated during feature development. Run `/arn-infra-assess` when ready to produce a full infrastructure plan. - Present: "Infrastructure is deferred. As you build features with Arness Core, infrastructure observations will accumulate in
.arness/infra/deferred-backlog.md. When ready, run/arn-infra-assessto produce a full infrastructure plan from the accumulated notes." - Stop init here.
If now: Continue to Step 2.
Step 2: Derive Experience Level from User Profile
Experience level governs conversational tone and recommendations throughout the init flow. Instead of asking the user directly, derive the experience level from the user profile.
- Read the user profile from
~/.arness/user-profile.yamlor.claude/arness-profile.local.md(project override takes precedence) - If no user profile exists, run the welcome flow first by reading
${CLAUDE_PLUGIN_ROOT}/skills/arn-infra-ensure-config/references/step-0-fast-path.md-- the welcome flow creates the profile - Apply the experience derivation mapping at
${CLAUDE_PLUGIN_ROOT}/skills/arn-infra-ensure-config/references/experience-derivation.mdto determine the infrastructure experience level (expert, intermediate, or beginner) - If the derivation is ambiguous (the mapping indicates a follow-up is needed), ask one focused question: "For infrastructure specifically, would you say expert, intermediate, or beginner?"
- Use the derived experience level for all subsequent steps (provider recommendations, cost threshold defaults, etc.)
Note: Experience level is no longer stored in
## Arnessconfig. It is derived at runtime from the user profile. For backward compatibility, if a legacyExperience levelfield exists in## Arnessand no user profile exists, use the legacy value.
Step 3: Provider Configuration (Multi-Provider Aware)
Read the local override or plugin default for
provider-overview.md. Read${CLAUDE_PLUGIN_ROOT}/skills/arn-infra-init/references/recommendation-matrix.mdfor expertise-adaptive recommendations. (Static reference -- not part of the evolving reference set.) Read the local override or plugin default foriac-tool-guide.md.
Adapt the conversation based on experience level:
Expert:
"What cloud providers do you use? (You can specify multiple with their scope, e.g., 'AWS for backend, Vercel for frontend')"
Then: "What IaC tool do you prefer?" -- present all options, let them choose freely. Set as default IaC tool. Per-provider overrides added to providers.md.
If they say Terraform, warn about BSL licensing and recommend OpenTofu as a drop-in replacement.