Autonomous application modernization using multi-agent orchestration for GitHub Copilot CLI.
This plugin enables autonomous modernization of Java and .NET applications through a multi-agent orchestration system. Just describe what you need — upgrade Java versions, migrate to Azure, fix CVE vulnerabilities, or rearchitect your application — and the orchestrator automatically routes your request through the right workflow:
Enterprise modernization intent — target architectures, upgrade standards, guardrails, and compliance policies — can be embedded directly into the workflow through a rulebook, ensuring every generated plan aligns with your organization's standards.
Download Copilot CLI: Download from https://github.com/github/copilot-cli and follow the installation instructions for your platform.
Navigate to your project: Open a terminal and navigate to your project directory:
cd /path/to/your/project
Start Copilot CLI:
copilot
# Add the marketplace
copilot plugin marketplace add microsoft/github-copilot-modernization
# Install the plugin
copilot plugin install github-copilot-modernization@github-copilot-modernization
# Update the plugin (when a new version is available)
copilot plugin update github-copilot-modernization@github-copilot-modernization
Start the modernization orchestrator agent:
copilot --agent=github-copilot-modernization:modernize
Or with auto-approval for unattended execution:
copilot --agent=github-copilot-modernization:modernize --allow-all
Once in the CLI, simply ask in natural language:
copilot> modernize my application
Or be more specific:
copilot> upgrade this app to Java 21
copilot> migrate this Spring Boot app to Azure
Note: Only modernize is user-invocable. All other agents are internal and routed to automatically by the orchestrator.
The orchestrator supports multiple workflows depending on user intent:
| Workflow | When It Activates | What Happens |
|---|---|---|
| Broad Intent | "modernize my application" | Full assess → plan → execute pipeline |
| Specific Task | "upgrade to Java 21" | Skips assessment, goes straight to plan → execute |
| Execute Existing Plan | "execute the plan" | Skips assessment and planning, runs an existing plan |
| Headless | Unattended execution with --allow-all | Same as Broad Intent with no user prompts |
All workflows run automatically — just describe what you want and the orchestrator handles routing.
.github/modernize/assessment/ (report.json).github/modernize/<plan-name>/plan.md and tasks.jsonOrganizations can embed their modernization policies, target architectures, and upgrade standards directly into the workflow through a rulebook. This ensures every generated plan aligns with enterprise standards — without requiring manual review of each decision.
Place markdown files in the .github/modernize/rulebook/ directory of your project. The planning phase automatically reads all .md files in this folder and merges them with assessment results before generating the task plan. Rulebook constraints override assessment recommendations — if your rulebook specifies "use Azure Service Bus for messaging," that takes precedence regardless of what the assessment discovers.
| Policy Type | Examples |
|---|---|
| Target Architectures | Target compute services (App Service, AKS, Container Apps), database choices (Azure SQL, Cosmos DB), messaging platforms (Service Bus, Event Hubs) |
| Upgrade Standards | Target Java version (17 or 21), Spring Boot version (3.x), .NET version, framework migration paths |
| Guardrails | Prohibited technologies, security requirements, compliance constraints, authentication standards (e.g., "all services must use Managed Identity") |
| Coding Standards | Naming conventions, authentication patterns, logging frameworks, error handling approaches |
| Migration Strategy | Scope boundaries, 6R classification preferences (rehost vs refactor vs rearchitect), phasing strategy |
Create .github/modernize/rulebook/enterprise-standards.md:
# Enterprise Modernization Standards
## Target Architecture
- All Java applications must target Java 21 and Spring Boot 3.x
- Use Azure Container Apps for microservices deployments
- Use Azure Service Bus for all asynchronous messaging (replace RabbitMQ, ActiveMQ)
- Use Azure Database for PostgreSQL Flexible Server for relational data
## Security & Compliance
- All services must authenticate using Managed Identity — no connection strings or passwords in code
- All public endpoints must be behind Azure Front Door
- Enable Azure Defender for all deployed resources
## Guardrails
- Do not use Azure Functions for long-running processes
- Do not introduce Kafka — use Event Hubs with Kafka protocol if needed
- All infrastructure must be defined in Bicep (no Terraform, no ARM templates)
No fixed naming or structure is required — use any filenames and headings that make sense for your organization. The orchestrator infers the purpose of each file from its content.
Without a rulebook, the plugin applies sensible defaults:
copilot --agent=github-copilot-modernization:modernize
copilot> upgrade this app to Java 21
copilot --agent=github-copilot-modernization:modernize
copilot> migrate this Spring Boot app to Azure
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my .NET application for Azure
copilot --agent=github-copilot-modernization:modernize
copilot> fix CVE vulnerabilities in my project
copilot --agent=github-copilot-modernization:modernize
copilot> rearchitect my monolithic application into microservices
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my application
Here's a complete example modernizing a Spring Boot app:
# 1. Navigate to project
cd ~/projects/my-spring-app
# 2. Start the orchestrator
copilot --agent=github-copilot-modernization:modernize
# 3. Ask for modernization (assessment, planning, and execution run automatically)
copilot> modernize my application
# 4. After completion, verify results
mvn clean test
mvn spring-boot:run
# Verify marketplace is added
copilot plugin marketplace list
# Re-add marketplace if needed
copilot plugin marketplace add microsoft/github-copilot-modernization
# Reinstall
copilot plugin install github-copilot-modernization@github-copilot-modernization
pom.xml or build.gradle exists in your project root.csproj or .sln exists in your project rootThe plugin uses the MCP server defined in .mcp.json. If you encounter issues, try reinstalling the plugin to reset the MCP configuration.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit Contributor License Agreements.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
MIT
Python
80.4%
PowerShell
9.5%
Shell
6.9%
JavaScript
3.3%
Autonomous application modernization using multi-agent orchestration for GitHub Copilot CLI.
This plugin enables autonomous modernization of Java and .NET applications through a multi-agent orchestration system. Just describe what you need — upgrade Java versions, migrate to Azure, fix CVE vulnerabilities, or rearchitect your application — and the orchestrator automatically routes your request through the right workflow:
Enterprise modernization intent — target architectures, upgrade standards, guardrails, and compliance policies — can be embedded directly into the workflow through a rulebook, ensuring every generated plan aligns with your organization's standards.
Download Copilot CLI: Download from https://github.com/github/copilot-cli and follow the installation instructions for your platform.
Navigate to your project: Open a terminal and navigate to your project directory:
cd /path/to/your/project
Start Copilot CLI:
copilot
# Add the marketplace
copilot plugin marketplace add microsoft/github-copilot-modernization
# Install the plugin
copilot plugin install github-copilot-modernization@github-copilot-modernization
# Update the plugin (when a new version is available)
copilot plugin update github-copilot-modernization@github-copilot-modernization
Start the modernization orchestrator agent:
copilot --agent=github-copilot-modernization:modernize
Or with auto-approval for unattended execution:
copilot --agent=github-copilot-modernization:modernize --allow-all
Once in the CLI, simply ask in natural language:
copilot> modernize my application
Or be more specific:
copilot> upgrade this app to Java 21
copilot> migrate this Spring Boot app to Azure
Note: Only modernize is user-invocable. All other agents are internal and routed to automatically by the orchestrator.
The orchestrator supports multiple workflows depending on user intent:
| Workflow | When It Activates | What Happens |
|---|---|---|
| Broad Intent | "modernize my application" | Full assess → plan → execute pipeline |
| Specific Task | "upgrade to Java 21" | Skips assessment, goes straight to plan → execute |
| Execute Existing Plan | "execute the plan" | Skips assessment and planning, runs an existing plan |
| Headless | Unattended execution with --allow-all | Same as Broad Intent with no user prompts |
All workflows run automatically — just describe what you want and the orchestrator handles routing.
.github/modernize/assessment/ (report.json).github/modernize/<plan-name>/plan.md and tasks.jsonOrganizations can embed their modernization policies, target architectures, and upgrade standards directly into the workflow through a rulebook. This ensures every generated plan aligns with enterprise standards — without requiring manual review of each decision.
Place markdown files in the .github/modernize/rulebook/ directory of your project. The planning phase automatically reads all .md files in this folder and merges them with assessment results before generating the task plan. Rulebook constraints override assessment recommendations — if your rulebook specifies "use Azure Service Bus for messaging," that takes precedence regardless of what the assessment discovers.
| Policy Type | Examples |
|---|---|
| Target Architectures | Target compute services (App Service, AKS, Container Apps), database choices (Azure SQL, Cosmos DB), messaging platforms (Service Bus, Event Hubs) |
| Upgrade Standards | Target Java version (17 or 21), Spring Boot version (3.x), .NET version, framework migration paths |
| Guardrails | Prohibited technologies, security requirements, compliance constraints, authentication standards (e.g., "all services must use Managed Identity") |
| Coding Standards | Naming conventions, authentication patterns, logging frameworks, error handling approaches |
| Migration Strategy | Scope boundaries, 6R classification preferences (rehost vs refactor vs rearchitect), phasing strategy |
Create .github/modernize/rulebook/enterprise-standards.md:
# Enterprise Modernization Standards
## Target Architecture
- All Java applications must target Java 21 and Spring Boot 3.x
- Use Azure Container Apps for microservices deployments
- Use Azure Service Bus for all asynchronous messaging (replace RabbitMQ, ActiveMQ)
- Use Azure Database for PostgreSQL Flexible Server for relational data
## Security & Compliance
- All services must authenticate using Managed Identity — no connection strings or passwords in code
- All public endpoints must be behind Azure Front Door
- Enable Azure Defender for all deployed resources
## Guardrails
- Do not use Azure Functions for long-running processes
- Do not introduce Kafka — use Event Hubs with Kafka protocol if needed
- All infrastructure must be defined in Bicep (no Terraform, no ARM templates)
No fixed naming or structure is required — use any filenames and headings that make sense for your organization. The orchestrator infers the purpose of each file from its content.
Without a rulebook, the plugin applies sensible defaults:
copilot --agent=github-copilot-modernization:modernize
copilot> upgrade this app to Java 21
copilot --agent=github-copilot-modernization:modernize
copilot> migrate this Spring Boot app to Azure
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my .NET application for Azure
copilot --agent=github-copilot-modernization:modernize
copilot> fix CVE vulnerabilities in my project
copilot --agent=github-copilot-modernization:modernize
copilot> rearchitect my monolithic application into microservices
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my application
Here's a complete example modernizing a Spring Boot app:
# 1. Navigate to project
cd ~/projects/my-spring-app
# 2. Start the orchestrator
copilot --agent=github-copilot-modernization:modernize
# 3. Ask for modernization (assessment, planning, and execution run automatically)
copilot> modernize my application
# 4. After completion, verify results
mvn clean test
mvn spring-boot:run
# Verify marketplace is added
copilot plugin marketplace list
# Re-add marketplace if needed
copilot plugin marketplace add microsoft/github-copilot-modernization
# Reinstall
copilot plugin install github-copilot-modernization@github-copilot-modernization
pom.xml or build.gradle exists in your project root.csproj or .sln exists in your project rootThe plugin uses the MCP server defined in .mcp.json. If you encounter issues, try reinstalling the plugin to reset the MCP configuration.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit Contributor License Agreements.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
MIT
Python
80.4%
PowerShell
9.5%
Shell
6.9%
JavaScript
3.3%