{"id":"db3e26e8-dc33-4372-8059-aff088507512","shortId":"UxWB5H","kind":"skill","title":"azure-cloud-migrate","tagline":"Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, mig","description":"# Azure Cloud Migrate\n\n> This skill handles **assessment and code migration** of existing cloud workloads to Azure.\n\n## Rules\n\n1. Follow phases sequentially — do not skip\n2. Generate assessment before any code migration\n3. Load the scenario reference and follow its rules\n4. Use `mcp_azure_mcp_get_azure_bestpractices` and `mcp_azure_mcp_documentation` MCP tools\n5. Use the latest supported runtime for the target service\n6. Destructive actions require `ask_user` — [functions global-rules](references/services/functions/global-rules.md) | [app-service global-rules](references/services/app-service/global-rules.md)\n7. **Report 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](references/workflow-details.md)\n8. **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\n\n## Migration Scenarios\n\n| Source | Target | Reference |\n|--------|--------|-----------|\n| AWS Lambda | Azure Functions | [lambda-to-functions.md](references/services/functions/lambda-to-functions.md) ([assessment](references/services/functions/assessment.md), [code-migration](references/services/functions/code-migration.md)) |\n| AWS Elastic Beanstalk | Azure App Service | [beanstalk-to-app-service.md](references/services/app-service/beanstalk-to-app-service.md) |\n| Heroku | Azure App Service | [heroku-to-app-service.md](references/services/app-service/heroku-to-app-service.md) |\n| Google App Engine | Azure App Service | [app-engine-to-app-service.md](references/services/app-service/app-engine-to-app-service.md) |\n| AWS Fargate (ECS) | Azure Container Apps | [fargate-to-container-apps.md](references/services/container-apps/fargate-to-container-apps.md) ([assessment](references/services/container-apps/fargate-assessment-guide.md), [deployment](references/services/container-apps/fargate-deployment-guide.md)) |\n| Kubernetes (GKE/EKS/Self-hosted) | Azure Container Apps | [k8s-to-container-apps.md](references/services/container-apps/k8s-to-container-apps.md) |\n| GCP Cloud Run | Azure Container Apps | [cloudrun-to-container-apps.md](references/services/container-apps/cloudrun-to-container-apps.md) |\n| Spring Boot (Azure Spring Apps/VMs) | Azure Container Apps | [spring-apps-to-aca.md](references/services/container-apps/spring-apps-to-aca.md) |\n\n> No matching scenario? Use `mcp_azure_mcp_documentation` and `mcp_azure_mcp_get_azure_bestpractices` tools.\n\n## Output Directory\n\nAll 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.\n\n## Steps\n\n1. **Create** `<workspace-root-basename>-azure/` at workspace root\n2. **Assess** — Analyze source, map services, generate report using the scenario-specific assessment guide → [functions assessment](references/services/functions/assessment.md) | [app-service assessment](references/services/app-service/assessment.md)\n3. **Migrate** — Convert code/config using the scenario-specific migration guide → [functions code-migration](references/services/functions/code-migration.md) | [app-service code-migration](references/services/app-service/code-migration.md)\n4. **Ask User** — \"Migration complete. Test locally or deploy to Azure?\"\n5. **Hand off** to azure-prepare for infrastructure, testing, and deployment\n\nTrack progress in `migration-status.md` — see [workflow-details.md](references/workflow-details.md).","tags":["azure","cloud","migrate","skills","microsoft","agent-skills"],"capabilities":["skill","source-microsoft","skill-azure-cloud-migrate","topic-agent-skills"],"categories":["azure-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/microsoft/azure-skills/azure-cloud-migrate","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add microsoft/azure-skills","source_repo":"https://github.com/microsoft/azure-skills","install_from":"skills.sh"}},"qualityScore":"0.950","qualityRationale":"deterministic score 0.95 from registry signals: · indexed on github topic:agent-skills · official publisher · 1014 github stars · SKILL.md body (3,768 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:53:16.632Z","embedding":null,"createdAt":"2026-04-18T20:23:27.522Z","updatedAt":"2026-05-18T18:53:16.632Z","lastSeenAt":"2026-05-18T18:53:16.632Z","tsv":"'1':59,323 '2':66,329 '3':73,352 '3001':170 '4':82,375 '5':97,386 '6':107 '7':125 '8':156 'action':109 'analyz':331 'app':24,30,119,161,176,219,225,230,233,242,253,261,271,348,369 'app-engine-to-app-service.md':235 'app-servic':118,347,368 'apps/vms':268 'ask':111,376 'assess':5,48,68,178,209,245,330,342,345,350 'audit':157 'aw':36,203,215,237 'azur':2,13,38,42,57,85,88,92,205,218,224,232,240,251,259,266,269,279,284,287,296,325,385,391 'azure-cloud-migr':1 'azure-prepar':390 'beanstalk':40,217 'beanstalk-to-app-service.md':221 'beanstalk/heroku/app':22 'bestpractic':89,288 'boot':28,265 'client':187 'cloud':3,10,43,54,257 'cloudrun-to-container-apps.md':262 'code':17,50,71,162,181,212,365,372 'code-migr':211,364,371 'code/config':355 'complet':379 'contain':29,175,241,252,260,270 'convers':18 'convert':354 'creat':324 'cross':9 'cross-cloud':8 'deploy':135,247,383,397 'destruct':108 'directori':291,310,321 'discoveri':159 'dns':164 'document':94,281 'driven':195 'e.g':166 'ec':239 'elast':216 'engin':23,231 'env':193 'env-var-driven':192 'exist':53 'fargat':238 'fargate-to-container-apps.md':243 'fargate/kubernetes/cloud':26 'feedback':152 'flag':189 'follow':60,79 'function':21,35,113,206,344,363 'gcp':256 'generat':67,335 'get':87,286 'gke/eks/self-hosted':250 'global':115,122 'global-rul':114,121 'goe':294 'googl':229 'guid':343,362 'hand':387 'handl':47 'hardcod':183 'heroku':223 'heroku-to-app-service.md':227 'hostnames/ports':184 'http':186 'imag':136 'infrastructur':394 'inject':197 'k8s-to-container-apps.md':254 'kubernet':163,249 'lambda':20,33,204 'lambda-to-functions.md':207 'latest':100 'left':149 'level':141,308 'load':74 'local':381 'long':132 'long-run':131 'map':333 'match':275 'mcp':84,86,91,93,95,278,280,283,285 'mig':41 'migrat':4,7,32,39,44,51,72,198,213,353,361,366,373,378 'migration-status.md':401 'modifi':318 'name':165,303 'never':148,317 'oper':134 'order':168 'order-servic':167 'output':290,293 'phase':61 'prepar':392 'progress':127,399 'provid':138 'push':137 'refer':77,202 'references/services/app-service/app-engine-to-app-service.md':236 'references/services/app-service/assessment.md':351 'references/services/app-service/beanstalk-to-app-service.md':222 'references/services/app-service/code-migration.md':374 'references/services/app-service/global-rules.md':124 'references/services/app-service/heroku-to-app-service.md':228 'references/services/container-apps/cloudrun-to-container-apps.md':263 'references/services/container-apps/fargate-assessment-guide.md':246 'references/services/container-apps/fargate-deployment-guide.md':248 'references/services/container-apps/fargate-to-container-apps.md':244 'references/services/container-apps/k8s-to-container-apps.md':255 'references/services/container-apps/spring-apps-to-aca.md':273 'references/services/functions/assessment.md':210,346 'references/services/functions/code-migration.md':214,367 'references/services/functions/global-rules.md':117 'references/services/functions/lambda-to-functions.md':208 'references/workflow-details.md':155,404 'report':15,126,336 'requir':110 'resolv':173 'resourc':140 'resource-level':139 'root':299,328 'rule':58,81,116,123 'run':133,258 'run/spring':27 'runtim':102 'scan':179 'scenario':76,199,276,340,359 'scenario-specif':339,358 'see':153,402 'sequenti':62 'servic':25,106,120,158,169,220,226,234,334,349,370 'skill':46 'skill-azure-cloud-migrate' 'skip':65 'sourc':180,200,320,332 'source-microsoft' 'specif':341,360 'spring':264,267 'spring-apps-to-aca.md':272 'status':142 'step':322 'subdirectori':314 'support':19,101 'target':105,201 'test':380,395 'tool':96,289 'top':307 'top-level':306 'topic-agent-skills' 'track':398 'updat':143 'url':196 'use':83,98,277,337,356 'user':112,129,146,377 'var':194 'wait':150 'within':315 'without':151 'workflow-details.md':154,403 'workload':11,55 'workspac':298,309,327","prices":[{"id":"b71a3c59-7a7b-4232-aa51-d3571d149be9","listingId":"db3e26e8-dc33-4372-8059-aff088507512","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"microsoft","category":"azure-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:23:27.522Z"}],"sources":[{"listingId":"db3e26e8-dc33-4372-8059-aff088507512","source":"github","sourceId":"microsoft/azure-skills/azure-cloud-migrate","sourceUrl":"https://github.com/microsoft/azure-skills/tree/main/skills/azure-cloud-migrate","isPrimary":false,"firstSeenAt":"2026-04-18T21:57:06.927Z","lastSeenAt":"2026-05-18T18:53:16.632Z"},{"listingId":"db3e26e8-dc33-4372-8059-aff088507512","source":"skills_sh","sourceId":"microsoft/azure-skills/azure-cloud-migrate","sourceUrl":"https://skills.sh/microsoft/azure-skills/azure-cloud-migrate","isPrimary":true,"firstSeenAt":"2026-04-18T20:23:27.522Z","lastSeenAt":"2026-05-07T22:40:11.906Z"}],"details":{"listingId":"db3e26e8-dc33-4372-8059-aff088507512","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"microsoft","slug":"azure-cloud-migrate","github":{"repo":"microsoft/azure-skills","stars":1014,"topics":["agent-skills"],"license":"mit","html_url":"https://github.com/microsoft/azure-skills","pushed_at":"2026-05-18T14:38:04Z","description":"Official agent plugin providing skills and MCP server configurations for Azure scenarios.","skill_md_sha":"b1634cf629d9358eb70a95c089b309c304f9c42c","skill_md_path":"skills/azure-cloud-migrate/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/microsoft/azure-skills/tree/main/skills/azure-cloud-migrate"},"layout":"multi","source":"github","category":"azure-skills","frontmatter":{"name":"azure-cloud-migrate","license":"MIT","description":"Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration."},"skills_sh_url":"https://skills.sh/microsoft/azure-skills/azure-cloud-migrate"},"updatedAt":"2026-05-18T18:53:16.632Z"}}