Skip to content

add azure-cloud-migrate skill for cross-cloud workload migration#1069

Open
MadhuraBharadwaj-MSFT wants to merge 34 commits intomicrosoft:mainfrom
MadhuraBharadwaj-MSFT:main
Open

add azure-cloud-migrate skill for cross-cloud workload migration#1069
MadhuraBharadwaj-MSFT wants to merge 34 commits intomicrosoft:mainfrom
MadhuraBharadwaj-MSFT:main

Conversation

@MadhuraBharadwaj-MSFT
Copy link

@MadhuraBharadwaj-MSFT MadhuraBharadwaj-MSFT commented Feb 27, 2026

This pull request introduces comprehensive documentation and rule sets for the new azure-cloud-migrate skill, which guides the assessment and migration of cloud workloads (especially AWS Lambda) to Azure Functions. The documentation includes authoritative migration steps, assessment and code migration procedures, global rules for safe and compliant operation, and detailed scenario-specific guidance. The changes ensure that migrations follow best practices, enforce non-destructive workflows, and use the latest Azure technologies.

Key changes grouped by theme:

1. Core Skill Documentation and Workflow

  • Added SKILL.md to define the azure-cloud-migrate skill, outlining its purpose, triggers, step-by-step migration workflow, output directory conventions, required tools, and error handling strategies. This file serves as the authoritative guide for all migration operations and compliance requirements.

2. Migration Assessment Phase

  • Introduced assessment.md reference, detailing the assessment process for AWS Lambda to Azure Functions migration. This includes inventorying functions, mapping AWS services and triggers to Azure equivalents, analyzing dependencies, generating architecture diagrams, and producing a standardized assessment report with strict section requirements.

3. Code Migration Phase

  • Added code-migration.md reference, specifying the step-by-step process for converting Lambda code to Azure Functions. It enforces the use of bindings over SDKs, mandates the latest supported runtimes, and provides configuration templates and infrastructure requirements (e.g., for blob triggers and managed identities). It also describes the handoff to the azure-prepare skill for infrastructure provisioning and deployment.

4. Global Rules and Best Practices

  • Added global-rules.md to establish non-negotiable rules for all migration phases, including mandatory user confirmation for destructive actions, preference for managed identities, strict usage of the latest runtimes, and identity-first authentication patterns. It also covers Flex Consumption plan specifics and safe initialization workflows.## Summary

Adds a new azure-cloud-migrate skill that assesses and migrates existing cloud workloads (starting with AWS Lambda) to Azure services. Decoupled from the azure-prepare pipeline — azure-cloud-migrate handles assessment and code migration, then hands off to azure-prepare for infrastructure and deployment.

What's included

New skill: azure-cloud-migrate

  • SKILL.md — Generic migration orchestrator with sequential phases (Assess → Migrate Code → Ask User → Hand off to azure-prepare)
  • Output directory convention — Migrated code goes into <aws-folder>-azure/ at workspace root, leaving the original source untouched
  • Migration Scenarios table — Extensible; currently covers AWS Lambda → Azure Functions, designed for future GCP/other scenarios

Reference docs (references/services/functions/)

  • lambda-to-functions.md — Service/trigger mappings, programming model mapping, Flex Consumption + EventGrid gotchas
  • assessment.md — Mandatory assessment report format with 13 sections
  • code-migration.md — Phase rules, project structure, config templates
  • global-rules.md — Cross-cutting rules (bindings over SDKs, identity-first auth, Flex Consumption specifics, destructive action policy)
  • runtimes/ — Trigger & binding references for JS, Python, TypeScript, C#, Java, PowerShell with language-specific Lambda migration rules that cross-reference global-rules.md to avoid duplication

Routing changes to azure-prepare

  • Description updated with EXCEPT Lambda to Azure/Functions migration and DO NOT USE FOR migration keywords
  • specialized-routing.md — Priority table routes migration prompts to azure-cloud-migrate
  • analyze.md — Decision tree updated for cross-cloud migration

Tests

  • integration.test.ts — Brownfield Lambda test: clones real AWS repo, asserts azure-cloud-migrate skill is selected
  • triggers.test.ts — Keyword-based trigger validation
  • unit.test.ts — Skill file structure and content assertions
  • skills.jsonazure-cloud-migrate registered in skills array and integration schedule

Stats

18 files changed, 2,316 insertions(+), 8 deletions(-)

- SKILL.md with 13 rules and comprehensive error handling
- Assessment, code-migration, and global-rules references
- Lambda-to-Functions service mapping with EventGrid Bicep patterns
- JavaScript/TypeScript/Python/C#/Java/PowerShell runtime references
- Proposed updates for azure-prepare, azure-validate, azure-deploy
- Captures 7 key learnings from real Flex Consumption + EventGrid migration
- Update azure-migrate description with USE FOR clause and migration keywords
- Remove 'ANY' catch-all language from azure-prepare description
- Add migration exception caveat to azure-prepare entry point
- Add explicit DO NOT USE FOR migration keywords in azure-prepare
- Update specialized-routing.md priority rule for AWS Lambda
- Update analyze.md decision tree to route cross-cloud migration
- Register azure-migrate in tests/skills.json
@MadhuraBharadwaj-MSFT MadhuraBharadwaj-MSFT changed the title add azure-migrate skill for cross-cloud workload migration add azure-cloud-migrate skill for cross-cloud workload migration Feb 27, 2026
@saikoumudi saikoumudi marked this pull request as ready for review February 27, 2026 20:53
Copilot AI review requested due to automatic review settings February 27, 2026 20:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new azure-cloud-migrate skill (assessment + code migration docs for cross-cloud workloads, starting with AWS Lambda → Azure Functions) and updates azure-prepare routing/docs so Lambda/cross-cloud migration prompts are directed to the new skill. Also introduces a new test suite (unit/trigger/integration) and registers the skill in the scheduled skill test matrix.

Changes:

  • Added plugin/skills/azure-cloud-migrate/ with SKILL.md and Azure Functions migration references (assessment, code migration, global rules, runtime patterns, Lambda→Functions mapping).
  • Updated azure-prepare routing/analysis docs and frontmatter to route cross-cloud migration prompts to azure-cloud-migrate.
  • Added tests/azure-cloud-migrate/ and registered azure-cloud-migrate in tests/skills.json.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 16 comments.

Show a summary per file
File Description
tests/skills.json Registers azure-cloud-migrate in the skills list and integration schedule.
tests/azure-cloud-migrate/unit.test.ts Adds unit tests validating skill frontmatter/content expectations.
tests/azure-cloud-migrate/triggers.test.ts Adds prompt-based trigger tests and snapshots for keyword extraction.
tests/azure-cloud-migrate/integration.test.ts Adds brownfield integration tests using real AWS sample repos.
tests/azure-cloud-migrate/snapshots/triggers.test.ts.snap Snapshots for extracted keywords + description metadata.
plugin/skills/azure-prepare/references/specialized-routing.md Adds priority routing row to invoke azure-cloud-migrate for migration prompts.
plugin/skills/azure-prepare/references/analyze.md Updates decision tree to route cross-cloud migration to azure-cloud-migrate.
plugin/skills/azure-prepare/SKILL.md Updates frontmatter description and trigger guidance to exclude Lambda/cross-cloud migration.
plugin/skills/azure-cloud-migrate/SKILL.md New skill definition and workflow (Assess → Migrate Code → ask user → handoff to azure-prepare).
plugin/skills/azure-cloud-migrate/references/services/functions/assessment.md New assessment-phase guidance + mandatory report template.
plugin/skills/azure-cloud-migrate/references/services/functions/code-migration.md New code migration-phase rules, steps, and config templates.
plugin/skills/azure-cloud-migrate/references/services/functions/global-rules.md New global rules for destructive actions, identity-first auth, and Flex Consumption specifics.
plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md New AWS Lambda → Azure Functions mappings, Flex Consumption gotchas, and auth patterns.
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md Node.js v4 programming model trigger/binding patterns + migration rules.
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md TypeScript guidance for the Node.js v4 programming model.
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md Python v2 programming model trigger/binding patterns.
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md PowerShell binding model guidance (function.json + run.ps1).
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md Java annotation-based trigger/binding patterns.
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md C# isolated worker trigger/binding patterns.
Comments suppressed due to low confidence (1)

plugin/skills/azure-cloud-migrate/references/services/functions/code-migration.md:75

  • The link target here is incorrect relative to code-migration.md (it adds an extra services/functions/ segment). This will break navigation. Update the link to the correct relative path (e.g., lambda-to-functions.md#...).
| **Storage Queue Data Contributor** RBAC | Identity-based queue access for poison messages | 403 errors during blob trigger indexing |

See [lambda-to-functions.md](services/functions/lambda-to-functions.md#flex-consumption--blob-trigger-with-eventgrid-source) for Bicep patterns.

- Slim SKILL.md from 1402 to <500 tokens (within budget)
- Fix 4 broken markdown reference links
- Extract Status Tracking + Error Handling to references/workflow-details.md
- Update unit tests for new structure
- Fix trigger tests: replace false-positive prompts, adjust confidence threshold
Copilot AI review requested due to automatic review settings February 27, 2026 22:34
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 6 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 27, 2026 22:40
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Updated environment variable names for Azure Functions.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 6 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 27, 2026 22:57
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Author

@MadhuraBharadwaj-MSFT MadhuraBharadwaj-MSFT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed some of copilot's comments.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 27, 2026 23:21
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 5 comments.

@MadhuraBharadwaj-MSFT
Copy link
Author

MadhuraBharadwaj-MSFT commented Feb 27, 2026

azure-cloud-migrate is invoked based on the prompt

image

Creates a new directory with assessment report and migrated code

Once code migration is complete, asks the user how they want to proceed next
image

Based on the user's choice, the appropriate next step is called
image

Copilot AI review requested due to automatic review settings February 28, 2026 00:04
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

plugin/skills/azure-cloud-migrate/SKILL.md:38

  • This skill’s text includes "deployment"/"deploy" (Step 5), which causes the trigger keyword extractor to include deploy. With the current TriggerMatcher logic (>=2 keyword matches), prompts like "deploy to Azure" will incorrectly trigger azure-cloud-migrate (matches azure + deploy). Consider rephrasing the handoff step to avoid deploy-related terms (since this skill explicitly hands off before deployment), and add a negative trigger test to lock this behavior in.
1. **Create** `<source-folder>-azure/` at workspace root
2. **Assess** — Analyze source, map services, generate report → [assessment.md](references/services/functions/assessment.md)
3. **Migrate** — Convert code using target programming model → [code-migration.md](references/services/functions/code-migration.md)
4. **Ask User** — "Migration complete. Test locally or deploy to Azure?"
5. **Hand off** to azure-prepare for infrastructure, testing, and deployment

saikoumudi and others added 2 commits February 27, 2026 16:27
Copilot AI review requested due to automatic review settings February 28, 2026 00:29
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md:35

  • The blob input/output decorators are shown without being applied to any function. In the v2 Python programming model, these decorators must be stacked on an actual function definition (they can’t be declared as standalone lines). Please revise this section to show a complete function example that combines trigger + input/output bindings correctly.
# Input
@app.blob_input(arg_name="inputblob", path="input/{name}", connection="AzureWebJobsStorage")

# Output
@app.blob_output(arg_name="outputblob", path="output/{name}", connection="AzureWebJobsStorage")

Copilot AI review requested due to automatic review settings February 28, 2026 00:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 21 out of 21 changed files in this pull request and generated 1 comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants