Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/github-copilot-modernization/.mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"command": "npx",
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server@1.23.0",
"@microsoft/github-copilot-app-modernization-mcp-server@1.24.0",
"--callerType",
"github-copilot-modernization-plugin"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,5 @@ All artifacts are written to `.github/modernize/java-upgrade/<SESSION_ID>/` —
- `pom.xml`: added `javax.annotation:javax.annotation-api:1.3.2` dependency
```

4. **Preview summary (VS Code only)**: If `#appmod-preview-markdown` is available, call it with the `summary.md` file path. If unavailable or preview fails, continue successfully and return the saved summary path; preview failure does not block completion.

4. **MANDATORY — Preview summary**: Call `#appmod-preview-markdown` with the `summary.md` file path to open it for the user. Do NOT skip this step — the user must see the results.

Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,11 @@ Provide **either** an assessment report path **or** multiple direct task specifi

In Mode B, skip all assessment and plan generation steps. Instead, follow the **Mode B — List and Select Existing Plan** process below.

## Plan Generation Skill
## MCP Tools Available

- Use the `create-modernization-plan` skill to generate `plan.md` and `.metadata/tasks.json`.
- Pass assessment results, direct task specifications, rulebook constraints, and detected language through the skill inputs described below.
- `create_upgrade_plan` - Generate upgrade plan from assessment
- Input: `{ "assessmentResults": {...}, "targetVersion": "21" }`
- Output: Structured plan with tasks

## Mode B — List and Select Existing Plan

Expand Down Expand Up @@ -107,16 +108,15 @@ When `intent` is `list-and-select-plan`:
- Use target versions/services from rulebook (overrides assessment recommendations)
- Respect constraints from rulebook (exclude prohibited patterns)
- Apply requirements from rulebook (ensure compliance in task definitions)
- Merge rulebook requirements with assessment results before invoking the skill
- Merge rulebook requirements with assessment results before invoking MCP tool

3. **Generate Plan**
- Invoke the `create-modernization-plan` skill with:
- `modernization-prompt`: The selected assessment solutions or direct task specifications, including applicable rulebook constraints
- `modernization-work-folder`: `.github/modernize/<plan-name>`
- `assessment-report`: Assessment results filtered to `selected-categories`, when provided
- `language`: `"java"` or `"dotnet"` based on detected language
- Invoke `create_upgrade_plan` MCP tool or the `create-modernization-plan` skill with:
- Assessment results (filtered if `selected-categories` was provided)
- Rulebook constraints (extracted from all rulebook files)
- **Language parameter**: Pass `language: "java"` or `language: "dotnet"` based on detected language
- **Integration testing intent**: If the original user request or selected categories explicitly request integration tests, pass that requirement through to `create-modernization-plan`.
- The skill generates `plan.md` and `.metadata/tasks.json` and must honor all rulebook requirements.
- Receive tasks.json structure that honors rulebook requirements

4. **Task Schema** (see [`skills/create-modernization-plan/tasks-schema.json`](../skills/create-modernization-plan/tasks-schema.json) for the authoritative schema)
```json
Expand Down Expand Up @@ -160,18 +160,18 @@ When `intent` is `list-and-select-plan`:
- Write to `.github/modernize/<plan-name>/plan.md`
- Write tasks to `.github/modernize/<plan-name>/.metadata/tasks.json`

6. **Preview Plan (VS Code only)**
- If `#appmod-preview-markdown` is available, call it with the generated `plan.md` file path.
- If the tool is unavailable or preview fails, continue successfully and return the saved plan path. Preview failure does not block plan creation or filesystem persistence.
6. **MANDATORY: Preview Plan**
- Call `#appmod-preview-markdown` with the generated `plan.md` file path to open the plan preview for the user
- **DO NOT skip this step** — the user must see the plan before proceeding

7. **Return to Orchestrator**
- Summary: Detected language, number of tasks, task breakdown, plan file path
- Report whether the preview was opened or skipped because the tool was unavailable or failed
- Confirm: "Plan preview has been opened for the user"

## Error Handling

- `create-modernization-plan` skill fails → Retry with simplified input while preserving user scope and mandatory constraints
- Still fails → Surface the failure with context to the orchestrator; do not invent an unavailable plan-generation tool
- MCP tool fails → Retry with simplified input
- Still fails → Generate basic plan from assessment or user-specified tasks manually
- Invalid task schema → Validate and fix
- Surface errors with context to orchestrator
- Workspace inspection fails during Option A2 → Ask the orchestrator for the missing information (language, build file path) before proceeding
Expand All @@ -191,11 +191,11 @@ You:
3. Check for rulebook → Found .github/modernize/rulebook/
4. Read rulebook files → all .md files in rulebook folder
5. Merge rulebook constraints with assessment
6. Invoke create-modernization-plan with the assessment results, rulebook constraints, and language="java"
7. Skill generates plan → 8 tasks (honoring rulebook requirements)
6. Invoke create_upgrade_plan(assessmentResults={...}, rulebookConstraints={...}, language="java")
7. Receive plan → 8 tasks (honoring rulebook requirements)
8. Validate task schema → Pass, metadata.language = "java"
9. Save results → .github/modernize/my-app/plan.md + .metadata/tasks.json
10. If available, call #appmod-preview-markdown to open plan preview; otherwise continue with the saved plan
10. Call #appmod-preview-markdown to open plan preview
11. Return summary to orchestrator
```

Expand All @@ -217,11 +217,11 @@ You:
- "Java Version Upgrade" has 1 solution → use directly
- "Cloud Readiness - RabbitMQ" has 2 solutions → **STOP and ask the user to pick one** → user picks "Azure Service Bus"
4. Check for rulebook → No rulebook found, skip
5. Invoke create-modernization-plan with the filtered assessment (one solution per category), language="java"
6. Skill generates plan → 2 tasks (one per selected category, scoped to the picked solution)
5. Invoke create_upgrade_plan with filtered assessment (one solution per category), language="java"
6. Receive plan → 2 tasks (one per selected category, scoped to the picked solution)
7. Validate task schema → Pass, metadata.language = "java"
8. Save results → .github/modernize/my-app/plan.md + .metadata/tasks.json
9. If available, call #appmod-preview-markdown to open plan preview; otherwise continue with the saved plan
9. Call #appmod-preview-markdown to open plan preview
10. Return summary to orchestrator
```

Expand All @@ -240,7 +240,7 @@ You:
5. Receive plan → 3 tasks (Azure SQL, Azure Redis, Entra ID)
6. Validate task schema → Pass, metadata.language = "dotnet"
7. Save results → .github/modernize/my-dotnet-app/plan.md + .metadata/tasks.json
8. If available, call #appmod-preview-markdown to open plan preview; otherwise continue with the saved plan
8. Call #appmod-preview-markdown to open plan preview
9. Return summary to orchestrator
```

Expand All @@ -263,6 +263,6 @@ You:
5. Skill generates tasks.json (tasks-schema.json format) + plan.md
6. Validate task schema → Pass, metadata.language = "java"
7. Save results → .github/modernize/s3-migration-java21/plan.md + .metadata/tasks.json
8. If available, call #appmod-preview-markdown to open plan preview; otherwise continue with the saved plan
8. Call #appmod-preview-markdown to open plan preview
9. Return summary to orchestrator
```
2 changes: 1 addition & 1 deletion plugins/github-copilot-modernization/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "github-copilot-modernization",
"description": "Autonomous application modernization with assess \u2192 plan \u2192 execute workflow",
"version": "1.23.0",
"version": "1.24.0",
"author": {
"name": "Microsoft",
"email": "copilot-support@microsoft.com"
Expand Down
Loading