From arn-infra
This skill should be used when the user says "migrate infrastructure", "arn infra migrate", "infra migrate", "move to AWS", "move to GCP", "move to Azure", "switch providers", "change cloud provider", "graduate from PaaS", "move from heroku", "move from fly.io", "consolidate providers", "infrastructure migration", "provider migration", "partial migration", "move database", "move services", "arn-infra-migrate", "infrastructure move", "cloud migration", or wants to migrate infrastructure between providers, graduate from PaaS to IaC, consolidate providers, or partially move specific services.
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.
Handle infrastructure migrations as tracked projects with four scenarios: PaaS-to-IaC graduation, provider-to-provider migration, provider consolidation, and partial migration. Creates a parent issue with migration overview and decomposes into individual task issues with dependencies, verification criteria, and rollback procedures.
This skill manages the full migration lifecycle: planning, IaC generation for the target, incremental deployment to staging, verification, cutover, and cleanup. It warns other skills about in-progress migrations to prevent conflicting changes.
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. Migration 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.mdenvironments.md.arness/infra-plans)Ask (using AskUserQuestion):
"What kind of migration are you planning?"
Options:
fly.toml to OpenTofu, Heroku to AWS)Read the local override or plugin default for
migration-scenarios.md.
Read the provider configuration:
Read <providers-config-path>
Check if any providers have Migration: <id> (in progress):
If active migration detected: Warn: "There is an active migration in progress: [migration-id] affecting [providers/services]. Starting a new migration that overlaps with these services could cause conflicts."
Ask (using AskUserQuestion):
"How would you like to handle the active migration conflict?"
Options:
If no active migrations: Continue to Step 3.
Based on the chosen scenario:
Graduate:
## Arness configProvider migration:
Consolidation:
Partial migration:
Invoke the arn-infra-specialist agent via the Task tool with:
--- MIGRATION CONTEXT --- Scenario: [graduate | provider-migration | consolidation | partial] Source: [source provider(s) and current configuration] Target: [target provider(s) and IaC tool] Services affected: [list of services being migrated] Environments: [environment promotion order] --- END MIGRATION CONTEXT ---
--- INSTRUCTIONS --- Generate a migration plan covering:
Invoke the arn-infra-cost-analyst agent via the Task tool with:
--- COST CONTEXT --- Source infrastructure: [current provider resources and costs] Target infrastructure: [proposed target resources] Migration type: [scenario] --- END COST CONTEXT ---
--- INSTRUCTIONS --- Compare monthly costs before and after migration:
Present the migration plan to the user:
"Here is the migration plan:
Scenario: [type] Source: [provider(s)] Target: [provider(s)] Services affected: [list]
Cost comparison:
| Current | After Migration | Change | |
|---|---|---|---|
| Monthly cost | $X | $Y | +/-$Z |
Migration steps: [numbered list of steps with dependencies and estimated duration]
Rollback plan: [summary of rollback strategy]
Risks: [identified risks with mitigation]
Ask (using AskUserQuestion):
"How would you like to proceed with the migration plan?"
Options:
Upon approval, create the migration project in the issue tracker.
If Issue tracker is none: Skip issue creation (Steps 5.1, 5.2). Record the migration plan in a file at <infra-plans-dir>/MIGRATION_<name>.md instead. Mark providers as migrating in providers.md (Step 5.3) and proceed to Step 6.
5.1: Create parent issue:
GitHub:
gh issue create \
--title "Migration: [scenario description]" \
--label "arn-infra-migration" \
--body "[migration plan overview: source/target providers, affected services, timeline, risk assessment, cost comparison]"
Jira: Use the Atlassian MCP to create an Epic with the migration plan.
For all subsequent issue operations in Steps 5.2, 6.4, 7, 8, and 9: use the Atlassian MCP to perform the equivalent Jira operation (create sub-task, update status, transition to Done, add comment, close Epic).
Record the parent issue number as migration-id.
5.2: Create task issues:
For each migration step, create a task issue:
GitHub:
gh issue create \
--title "Migration task: [step description]" \
--label "arn-infra-migration-task" \
--body "[step details: source, target, dependencies, verification criteria, rollback procedure]"
Link each task issue to the parent issue (reference in body: "Part of #[parent-number]").
5.3: Mark providers as migrating:
Update providers.md for each affected provider:
Migration: <migration-id> (in progress) to the affected provider entriesRead the local override or plugin default for
migration-checklist.md.
Execute migration steps incrementally. For each task:
6.1: Generate target IaC
Adapt IaC generation instructions to experience level (beginner: simplified configs with comments, expert: production-ready with minimal comments).
Invoke the arn-infra-specialist agent to generate IaC for the target provider/service. Follow the same patterns as arn-infra-define: invoke the arn-infra-specialist agent via the Task tool with the target provider's IaC tool and patterns reference, scoped to the specific migration task.
6.2: Deploy to staging
Deploy the target infrastructure to the staging environment:
6.3: Verify in staging
Run verification checks:
6.4: Update task status
GitHub:
gh issue edit <task-number> --remove-label "arn-infra-migration-task" --add-label "arn-infra-migration-ready"
Present: "Migration step [N] verified in staging. Task #[number] is marked as ready."
When all migration tasks are marked arn-infra-migration-ready:
Pre-cutover checklist:
Execute cutover:
Update the parent issue:
gh issue edit <parent-number> --remove-label "arn-infra-migration" --add-label "arn-infra-migration-cutover"
For each migration task (in dependency order):
Post-cutover verification:
On successful cutover:
8.1: Update providers.md:
Migration: <id> flags8.2: Create cleanup issues:
For each decommissioned resource on the source provider:
gh issue create \
--title "Cleanup: Decommission [resource] on [old provider]" \
--label "arn-infra-cleanup" \
--body "Resource [name] on [provider] has been replaced by [target]. Verify no residual traffic, then destroy."
8.3: Close parent issue:
gh issue close <parent-number> --comment "Migration complete. All services verified on [target provider]. Cleanup issues created for decommissioning source resources."
8.4: Update CLAUDE.md:
Update the ## Arness Providers field if the provider list has changed.
At any point during the migration, if something goes wrong:
Rollback procedure:
gh issue edit <task-number> --add-label "arn-infra-migration-rollback"
providers.md if the entire migration is abandonedPresent: "Migration step [N] has been rolled back. Source infrastructure is still active and serving traffic. Diagnostics have been preserved in the task issue."
Ask (using AskUserQuestion):
"What would you like to do next?"
Options:
Migration Summary:
Recommended next steps:
"Migration is [status]. Here is the recommended path:
[If completed:]
/arn-infra-monitor to verify monitoring on the new provider/arn-infra-pipeline to update pipelines for the new provider[If in-progress:]
[If rolled-back:]
/arn-infra-migrate"## Arness config missing: Suggest running /arn-infra-wizard to get started. Stop./arn-infra-init.