AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Azure Cloud Migrate provides a structured, multi-phase workflow for transitioning applications from various cloud platforms to Azure. It focuses on assessing the current architecture, mapping services to Azure equivalents, and performing the necessary code and configuration conversions. The skill ensures a methodical approach by requiring an assessment report before any migration actions occur, and it provides specific guidance for common migration paths such as AWS Lambda to Azure Functions, Heroku to App Service, and Kubernetes to Container Apps.
What it does
- Generates comprehensive migration assessment reports for cross-cloud workloads.
- Maps source platform services, compute configurations, and dependencies to Azure equivalents.
- Provides guidance for converting application code and configuration files.
- Audits source code for platform-specific service discovery patterns.
- Creates architecture diagrams for both current and target states.
- Tracks migration progress and provides resource-level status updates.
When to use it
- When planning to migrate workloads from AWS Lambda, Elastic Beanstalk, or Fargate to Azure.
- When moving applications from Heroku or Google App Engine to Azure App Service.
- When transitioning Kubernetes or Cloud Run deployments to Azure Container Apps.
- When you need a structured assessment of migration readiness and effort.
Advantages
- Ensures a consistent, step-by-step migration process.
- Reduces risk by requiring a detailed assessment report before code changes.
- Provides clear mapping between source platform features and Azure services.
- Includes specific checks for common migration pitfalls like hardcoded service discovery.
Usage examples
- “Assess my current AWS Lambda project for migration to Azure Functions.”
- The agent will analyze the Lambda project, map the services to Azure Functions, and generate a migration assessment report in the output directory.
- “Migrate my Heroku application to Azure App Service.”
- The agent will perform an assessment, guide the conversion of configuration files, and assist in setting up the application for Azure App Service.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/azure-cloud-migrate/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-cloud-migrate.zip -d .agents/skills
Documentation by Microsoft
Azure Cloud Migrate
This skill handles assessment and code migration of existing cloud workloads to Azure.
Rules
Follow phases sequentially — do not skip
Generate assessment before any code migration
Load the scenario reference and follow its rules
Use
mcp_azure_mcp_get_azure_bestpracticesandmcp_azure_mcp_documentationMCP toolsUse the latest supported runtime for the target service
Destructive actions require
ask_user— functions global-rules | app-service global-rulesReport progress to user — During long-running operations (deployments, image pushes), provide resource-level status updates so the user is never left waiting without feedback — see workflow-details.md
Audit service discovery in app code — Kubernetes DNS names (e.g.,
http://order-service:3001) do not resolve in Container Apps. During assessment, scan source code for hardcoded hostnames/ports in HTTP clients and flag them for env-var-driven URL injection
Migration Scenarios
| Source | Target | Reference |
|---|---|---|
| AWS Lambda | Azure Functions | lambda-to-functions.md (assessment, code-migration) |
| AWS Elastic Beanstalk | Azure App Service | beanstalk-to-app-service.md |
| Heroku | Azure App Service | heroku-to-app-service.md |
| Google App Engine | Azure App Service | app-engine-to-app-service.md |
| AWS Fargate (ECS) | Azure Container Apps | fargate-to-container-apps.md (assessment, deployment) |
| Kubernetes (GKE/EKS/Self-hosted) | Azure Container Apps | k8s-to-container-apps.md |
| GCP Cloud Run | Azure Container Apps | cloudrun-to-container-apps.md |
| Spring Boot (Azure Spring Apps/VMs) | Azure Container Apps | spring-apps-to-aca.md |
No matching scenario? Use
mcp_azure_mcp_documentationandmcp_azure_mcp_get_azure_bestpracticestools.
Output Directory
All output goes to <workspace-root-basename>-azure/ at workspace root, where <workspace-root-basename> is the name of the top-level workspace directory itself (NOT a subdirectory within it). Never modify the source directory.
Steps
Create
<workspace-root-basename>-azure/at workspace rootAssess — Analyze source, map services, generate report using the scenario-specific assessment guide → functions assessment | app-service assessment
Migrate — Convert code/config using the scenario-specific migration guide → functions code-migration | app-service code-migration
Ask User — "Migration complete. Test locally or deploy to Azure?"
Hand off to azure-prepare for infrastructure, testing, and deployment
Track progress in migration-status.md — see workflow-details.md.
Files
- ATTRIBUTION.mdAdded by AutoGineer989 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md4.3 KiB
- references/services/app-service/app-engine-to-app-service.md7.1 KiB
- references/services/app-service/assessment.md5.2 KiB
- references/services/app-service/beanstalk-to-app-service.md6.4 KiB
- references/services/app-service/code-migration.md5.0 KiB
- references/services/app-service/global-rules.md2.8 KiB
- references/services/app-service/heroku-to-app-service.md7.5 KiB
- references/services/container-apps/assessment-guide.md7.0 KiB
- references/services/container-apps/cloudrun-assessment-guide.md2.5 KiB
- references/services/container-apps/cloudrun-deployment-guide.md7.9 KiB
- references/services/container-apps/cloudrun-to-container-apps.md2.2 KiB
- references/services/container-apps/deployment-guide.md9.6 KiB
- references/services/container-apps/fargate-assessment-guide.md2.4 KiB
- references/services/container-apps/fargate-deployment-guide.md10.1 KiB
- references/services/container-apps/fargate-to-container-apps.md4.0 KiB
- references/services/container-apps/k8s-to-container-apps.md4.9 KiB
- references/services/container-apps/spring-apps-to-aca.md3.8 KiB
- references/services/container-apps/spring-assessment-guide.md5.2 KiB
- references/services/container-apps/spring-dependency-patterns.md1.2 KiB
- references/services/container-apps/spring-deployment-guide.md15.1 KiB
- references/services/functions/assessment.md6.3 KiB
- references/services/functions/code-migration.md6.0 KiB
- references/services/functions/global-rules.md3.3 KiB
- references/services/functions/lambda-to-functions.md10.2 KiB
- references/services/functions/runtimes/csharp.md5.5 KiB
- references/services/functions/runtimes/java.md6.4 KiB
- references/services/functions/runtimes/javascript.md8.5 KiB
- references/services/functions/runtimes/powershell.md5.0 KiB
- references/services/functions/runtimes/python.md6.4 KiB
- references/services/functions/runtimes/typescript.md3.5 KiB
- references/workflow-details.md2.3 KiB
references/services/container-apps/assessment-guide.md
Kubernetes to Azure Container Apps - Assessment Guide
Compatibility Matrix
Kubernetes → Container Apps Resource Mapping
| Kubernetes Concept | Container Apps Equivalent | Supported | Notes |
|---|---|---|---|
| Deployment | Container App | ✅ Yes | One-to-one mapping for stateless workloads |
| Service (ClusterIP) | Internal ingress | ✅ Yes | Set ingress.external: false |
| Service (LoadBalancer) | External ingress | ✅ Yes | Set ingress.external: true |
| Ingress | Built-in ingress with custom domain | ✅ Yes | Supports TLS, traffic splitting |
| ConfigMap | Environment variables | ✅ Yes | Inline or from secrets |
| Secret | Secrets (Key Vault refs preferred) | ✅ Yes | Use managed identity for Key Vault |
| CronJob | Container Apps Job (scheduled) | ✅ Yes | Cron expression syntax |
| Job | Container Apps Job (manual/event) | ✅ Yes | One-time or event-triggered |
| HPA | Built-in scaling rules | ✅ Yes | HTTP, TCP, KEDA-compatible scalers |
| PersistentVolumeClaim | Azure Files mount | ⚠️ Limited | EmptyDir and Azure Files only; no block storage |
| DaemonSet | N/A | ❌ No | Consider sidecar containers or external agents |
| StatefulSet | N/A | ❌ No | Use external state (Cosmos DB, Redis, SQL) |
| Custom CRDs / Operators | N/A | ❌ No | Evaluate if Dapr components can replace |
| NetworkPolicy | VNet NSG rules | ⚠️ Limited | Configure at Environment subnet level |
Resource Limits
| Resource | Kubernetes (typical) | Container Apps Maximum | Migration Impact |
|---|---|---|---|
| CPU per container | Up to 64+ vCPU | 4 vCPU | Split large containers |
| Memory per container | Up to 256+ GiB | 8 GiB | Redesign memory-intensive workloads |
| Replicas per app | 1000+ | 300 per revision | Validate scale requirements |
| Request timeout | Configurable (hours+) | 240 seconds default | Redesign long-running requests |
| Startup probe timeout | Configurable | 240 seconds | Optimize startup time |
| Containers per pod/app | 10+ | Up to 10 sidecars | Init + sidecar containers supported |
Unsupported Patterns
Critical Blockers
StatefulSets with persistent storage
Why: Container Apps is designed for stateless workloads
Alternative: Migrate state to Azure Cosmos DB, Azure SQL, Redis, or Storage
DaemonSets for node-level agents
Why: No node-level access in managed environment
Alternative: Use Azure Monitor agents, Dapr components, or sidecar containers
Privileged containers or host networking
Why: Security isolation in managed platform
Alternative: Redesign to avoid host-level access
Custom CRDs and Operators
Why: No Kubernetes API server access
Alternative: Use Dapr state management, bindings, or Azure PaaS services
Direct Kubernetes API calls from apps
Why: Kubernetes API not exposed
Alternative: Use environment variables, service discovery via DNS, or Dapr
Storage Considerations
EmptyDir: Supported (ephemeral storage)
Azure Files: Supported via volume mounts
Persistent Block Storage: Not supported (migrate to Azure Blob, SQL, Cosmos DB)
Assessment Checklist
1. Workload Inventory
List all Deployments, StatefulSets, DaemonSets in target namespaces
Identify workload types: API, background worker, CronJob, StatefulSet
Document current resource requests/limits (CPU, memory)
Note replica counts (min, max, typical)
2. Network Configuration
Service Types: ClusterIP (internal) vs LoadBalancer (external)
Ingress: Document hostnames, TLS certificates, path routing rules
Service Mesh: Document if using Istio, Linkerd (consider migrating to Dapr)
NetworkPolicies: List egress/ingress rules (map to NSG rules or VNet integration)
3. Storage and State
PersistentVolumeClaims: List volumes, sizes, access modes (ReadWriteOnce, ReadWriteMany)
StatefulSets: Document state storage patterns (candidates for external state migration)
EmptyDir/Temp Storage: Note usage patterns (supported in Container Apps)
ConfigMaps/Secrets: Count and categorize (migrate inline or to Key Vault)
4. Scaling and Performance
HPA: Document scaling metrics (CPU, memory, custom metrics)
Min/Max Replicas: Verify within Container Apps limits (0-300)
Startup Time: Measure pod startup latency (must be <240s)
Request Patterns: Long-running requests (>240s) need redesign
5. Dependencies
Internal Services: List service-to-service calls (use internal DNS in Container Apps)
External Services: Databases, APIs, message queues, storage
Authentication: Service accounts, RBAC roles (map to managed identities)
Observability: Logging, metrics, tracing (migrate to Azure Monitor, App Insights)
6. CI/CD and Deployment
Pipeline Tools: kubectl, Helm, Kustomize, ArgoCD, Flux
Image Registries: Docker Hub, GCR, ECR, private registries (migrate to ACR)
Deployment Strategy: Rolling update, blue/green, canary (Container Apps supports traffic splitting)
Complexity Assessment Guidelines
Low Complexity
Stateless Deployments with ClusterIP or LoadBalancer Services
Simple environment variables (no complex ConfigMaps)
No persistent storage or external state already in use
Standard HTTP/gRPC ingress
No service mesh dependencies
Medium Complexity
Multiple Deployments with inter-service communication
ConfigMaps and Secrets requiring Key Vault migration
HPA with custom metrics (need KEDA scaler mapping)
CronJobs (map to Container Apps Jobs)
Ingress with TLS and custom domains
High Complexity
StatefulSets requiring state migration to external services
Service mesh (Istio/Linkerd) requiring Dapr migration
Custom CRDs or Operators (need redesign)
NetworkPolicies requiring VNet/NSG configuration
Large-scale deployments (>100 replicas, need architecture review)
Workloads exceeding Container Apps resource limits (>4 vCPU, >8 GiB)
Assessment Report Structure
Generate k8s-migration-assessment.md with:
Executive Summary: Cluster name, namespace(s), workload count, complexity (Low/Medium/High), estimated timeline, Azure cost
Current State: Deployment inventory, resource usage, scaling config, storage usage, networking topology
Compatibility Analysis: Supported workloads, blockers, redesign requirements (StatefulSets, DaemonSets, CRDs)
Azure Target: Required resources (resource group, Container Apps Environment, ACR, Key Vault, Log Analytics, VNet if needed)
Migration Plan:
State migration strategy (databases, caches, storage)
Image migration approach (ACR import, rebuild)
IaC generation plan (Bicep templates per Deployment)
Deployment sequence (dependencies first, then consumers)
Risk Assessment: Blockers, feature gaps, performance considerations, downtime estimate
Validation Tests: Smoke tests, integration tests, performance benchmarks
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-skills/skills/azure-cloud-migrate · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from .github/plugins/azure-skills/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- microsoft/azure-skills
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-cloud-migrate.zip