From arn-infra
Orchestrates infrastructure migrations as tracked projects: PaaS-to-IaC graduation, provider-to-provider (AWS/GCP/Azure), consolidation, partial service/database moves. Generates issues with tasks, dependencies, verification, rollbacks; handles full lifecycle from planning to cleanup.
How this skill is triggered — by the user, by Claude, or both
Slash command
/arn-infra:arn-infra-migrateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.npx claudepluginhub appsvortex/arness --plugin arn-infraOrchestrates full migration workflows from current state analysis through planning, incremental implementation, and verification for technologies, platforms, and architecture patterns with rollback planning.
Guides 5-phase GCP to AWS migration: Terraform discovery of resources, requirements clarification, architecture design with re-platforming, cost estimation via AWS Pricing API, and execution planning with Terraform configs and scripts.
Orchestrates complete migration workflows for frameworks (e.g., Vue 2→3, Express→Fastify), databases (MySQL→PostgreSQL), and architectures (REST→GraphQL, monolith→microservices) with analysis, incremental execution, and rollback.