* feat: migrate plugins and extensions to Agent Plugins v1.0.0 spec - Add \ to all 69 curated plugin manifests - Migrate all 18 extension manifests: add \, move logo into xtensions.com.github.copilot.logo namespace, remove top-level logo and string xtensions: '.' - Update eng/validate-plugins.mjs: require \, validate namespace-keyed extensions object for canvas extensions, widen name pattern to allow dots (spec §5.5, max 64 chars) - Update eng/materialize-plugins.mjs: emit spec-clean served manifests (only spec fields: \, name, version, description, author, homepage, repository, license, keywords, extensions) - Update eng/generate-website-data.mjs: read logo from namespace with fallback to top-level logo for compatibility - Update eng/create-plugin.mjs: scaffold emits \ - Add .github/workflows/validate-plugins.yml: blocking CI for PRs touching plugins/** or extensions/** - Add spec compliance check to external plugin quality gates: non-blocking warnings with ✅/⚠️/🛑 emoji legend - Update AGENTS.md: document new extension manifest shape, add \ to plugin checklist Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * refactor: consolidate canvas extension plugins - Move all extension plugin manifests from extensions/<name> to plugins/<name> - Keep extensions/<name> as reusable source only - Remove standalone extension discovery from marketplace and website plugin catalogs - Auto-bundle same-name extension sources during materialization - Add build-only extensions.json references for sharing extensions across plugins - Remove x-awesome-copilot extension metadata support - Update validation and contributor documentation Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * feat: add canvas extension scaffolding skill - Add repo-local skill for creating canvas extension sources - Generate spec-compliant plugin manifests under plugins/ - Support registering reusable extensions with multiple plugins - Remove guidance for extension-local plugin manifests and custom fields Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * fix: align extension namespaces with current guidance - Use each extension ID as its manifest namespace key - Update validation and website generation to resolve extension-specific namespaces - Upsert plugin validation PR comments using the existing repository pattern Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * fix: use Copilot extension namespace - Adopt com.github.copilot for all canvas extension manifests - Require the namespace during validation and website generation - Update extension scaffolding guidance Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * docs: regenerate plugin catalog after merge Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * refactor(plugins): move manifests to plugin roots Use root plugin.json manifests and namespaced extension directories throughout local tooling, validation, generation, and contributor documentation. Restore materialize-plugins.mjs line breaks so the source remains readable in GitHub. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * feat(plugins): migrate manifests to namespaced composition Move repository composition metadata under com.github.awesome-copilot, materialize reusable extensions into the plugin extensions directory, and improve contributor and PR validation guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * fix(validation): address plugin review findings Restore executable build scripts, validate namespaced manifests and hook directories, improve README item counts, and manage validation comments across reruns. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76
Java Modernization Studio
An interactive GitHub Copilot canvas that turns the GitHub Copilot App Modernization for Java CLI workflow into a visible, steerable dashboard — assess a legacy Java app, drive a prioritized remediation plan, run validation gates, and dispatch Microsoft predefined tasks, all grounded in the repo's real artifacts.
The Copilot App Modernization for Java tooling stays the engine. This canvas is the cockpit on top of it: it reads what the workflow produces and turns each step into an agent-driving button.
What it does
- Overview — at-a-glance modernization status (phase, % complete, finding counts) scanned from the repo.
- Readiness (Environment Doctor) — checks JDK, Maven (or
./mvnw), Git, Docker, and Azure CLI on PATH and flags what's missing before you start. - Assessment — renders structured findings from
.appmod/assessment.json(stack summary, severity-ordered findings, strengths), each with a one-click action. - Plan & Progress — renders
plan.md/progress.mdas live checklists (- [ ]/- [x]). - Validation — runs the workflow's quality gates (CVE validation, test generation) before and after changes.
- Tasks — dispatches Microsoft predefined modernization tasks (managed identity for DB, secrets → Key Vault, message-broker → Service Bus, S3 → Blob, cache → Redis, Entra ID auth, and more) relevant to the detected stack.
- Summary — surfaces
summary.mdwhen the run is complete. - Autopilot — an optional phase-ordered, hands-free loop that advances assessment → remediation → validation and updates the dashboard as the agent makes progress.
Buttons don't execute logic in the canvas — they dispatch a grounded prompt to your Copilot agent (action kinds: run_task, generate_plan, run_cve, generate_tests, fix_finding). The agent does the work; the canvas reflects the result.
Prerequisites
- GitHub Copilot app (the canvas host).
- GitHub Copilot App Modernization for Java tooling — the underlying workflow this canvas drives.
- JDK 17+ and Maven (or a
./mvnwwrapper) for the Java project you're modernizing. - Optional: Azure CLI (
az) for cloud-readiness and Azure migration tasks; Docker for container checks.
Install
This is an in-repo canvas extension. Copy the java-modernization-studio/ folder into one of:
~/.copilot/extensions/— user scope (just you), or.github/extensions/— project scope (shared with your repo's team).
Then reload extensions (or restart the app) so Copilot discovers it. No build step is required — the Copilot CLI resolves @github/copilot-sdk automatically.
Usage
Point the canvas at a Java repository and let the agent drive it:
Open the Java Modernization Studio canvas for /path/to/my-java-app and run a readiness check.
The canvas resolves the target repo from its repoPath input, falling back to the session's working directory. From there:
- Readiness first — resolve any missing JDK/Maven/Azure CLI the Doctor flags.
- Assess — generate
.appmod/assessment.json+ a prioritizedplan.md/progress.md. - Remediate — work findings in severity order (P0 first), using task buttons and "Help me fix this".
- Validate — run the CVE and test-generation gates.
- Ship — when the work is genuinely complete, write
summary.md.
Suggested agent instructions
When a user modernizes a Java project with the Java Modernization Studio canvas:
1) Open the canvas pointed at the repo (repoPath) and run the Environment Doctor first.
2) Run an assessment; write findings to .appmod/assessment.json and a prioritized plan.md / progress.md.
Start plan.md, progress.md, and summary.md with the exact first line <!-- appmod-cockpit --> so the
canvas recognizes them as modernization artifacts.
3) Work findings in severity order (P0 first); run the validation gates (CVE scan, test generation)
before and after code changes.
4) Keep plan.md / progress.md updated as - [ ] / - [x] checklists. Only write summary.md when the
work is truly complete.
How it stays grounded
The canvas renders real repo state, never invented status:
- Structured findings come from
.appmod/assessment.json. - Plan/progress/summary come from root
plan.md/progress.md/summary.md. - To avoid mistaking an unrelated repo's
plan.mdfor modernization output, root markdown is trusted only when.appmod/exists or the file's first line is the provenance marker<!-- appmod-cockpit -->. - Stack detection (build tool, Java version, framework, container) is parsed from
pom.xml/ Gradle / Dockerfile and drives which tasks are shown.
Agent-callable actions
| Action | Description |
|---|---|
get_state |
Return the current modernization snapshot scanned from the repo (assessment, plan/progress, gates, tasks). |
refresh |
Re-scan the repo and push a fresh snapshot to the open canvas. |
Development
The grounding/parsing logic is pure and unit-tested independently of the canvas runtime:
node --test test/cockpit.test.mjs
License
MIT