Migrate extension metadata to plugin.json and enforce conventions (#2177)

* Remove pluginRoots property from marketplace.json

The pluginRoots property is not used by install tooling and was only
informational about the extension/plugin source directories. Removing it
simplifies the marketplace.json structure while maintaining all functionality.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Migrate java-modernization-studio to plugin.json and update validation workflow

- Create .github/plugin/plugin.json for java-modernization-studio extension
- Remove legacy canvas.json from java-modernization-studio
- Update validate-canvas-extensions.yml workflow to check for plugin.json instead of canvas.json
- Update workflow to trigger on .schemas/plugin.schema.json changes (instead of canvas.schema.json)
- Remove schema validation logic that relied on canvas.schema.json
- All 12 extensions now use plugin.json for metadata

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Add extensions field to all extension plugin.json files

Per https://github.com/github/copilot-agent-runtime/pull/9929, plugins that ship
extensions need to include an extensions field specifying where the extension code
is located. All 12 extensions now have extensions set to '.' to reference the
current directory where extension.mjs is located.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Enforce convention-based extension metadata and remove x-awesome-copilot

- Remove x-awesome-copilot.screenshots from all extension plugin.json files
- Enforce logo=assets/preview.png convention for all extensions
- Enforce extensions=. per copilot-agent-runtime#9929
- Update validate-plugins.mjs to enforce conventions
- Update validate-canvas-extensions.yml workflow with convention checks
- Update AGENTS.md and CONTRIBUTING.md documentation

All 12 extensions validated successfully.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Use standard plugin validation for extensions

Remove the custom extension schema and schema validation helper, and
validate extension plugin.json files through the existing plugin validator
instead. Update workflows to stop depending on the removed schema.

Co-authored-by: Copilot App <223556219+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>
This commit is contained in:
Aaron Powell
2026-07-03 12:24:38 +10:00
committed by GitHub
parent da3855ab20
commit e986f49695
27 changed files with 748 additions and 687 deletions
@@ -1,6 +1,5 @@
{
"id": "accessibility-kanban",
"name": "Accessibility Kanban",
"name": "accessibility-kanban",
"description": "Kanban board to manage accessibility issues, allow you to plan, track, and complete remediation work.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"planning-workflow",
"status-tracking"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "agent-arcade-canvas",
"name": "Agent Arcade",
"name": "arcade-canvas",
"description": "Play five retro Phaser mini-games in a Copilot canvas while agents work.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"retro-games",
"session-breaks"
],
"screenshots": {
"icon": {
"path": "assets/icon.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "backlog-swipe-triage",
"name": "Backlog Swipe Triage",
"name": "backlog-swipe-triage",
"description": "Quickly swipe through backlog issues to triage decisions like assign, needs-info, defer, close, or ignore.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"swipe-interface",
"workflow-automation"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "chromium-control-canvas",
"name": "Chromium Control Canvas",
"name": "chromium-control-canvas",
"description": "Opens a real Chromium window you can navigate and interact with from a Copilot canvas control panel and agent actions.",
"version": "1.0.0",
"author": {
@@ -16,14 +15,6 @@
"ui-testing",
"web-navigation"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "color-orb",
"name": "Color Orb",
"name": "color-orb",
"description": "A visual orb that users can ask the agent to recolor while showing a live activity log in the canvas.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"sse-events",
"visual-feedback"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "diagram",
"name": "Diagram Explorer",
"name": "diagram-viewer",
"description": "Render diagrams, click nodes to drill down, and view agent-generated explanations directly in the canvas.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"node-drilldown",
"relationship-visualization"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "feedback-themes",
"name": "Feedback Themes",
"name": "feedback-themes",
"description": "Explore grouped customer feedback signals by impact and drill into a theme to guide product next steps.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"theme-analysis",
"trend-discovery"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "gesture-review",
"name": "Gesture PR Review",
"name": "gesture-review",
"description": "Review pull requests with a live camera feed and approve or reject using thumbs-up/thumbs-down gestures.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"mediapipe",
"pull-request-review"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "appmod-cockpit",
"name": "Java Modernization Studio",
"name": "java-modernization-studio",
"description": "Drive the GitHub Copilot App Modernization for Java workflow from an interactive canvas: environment readiness, repo assessment, prioritized plan and progress, validation gates, and one-click predefined-task runs grounded in the repo's real artifacts.",
"version": "1.0.0",
"author": {
@@ -16,14 +15,6 @@
"modernization-cockpit",
"validation-gates"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "release-notes-showcase",
"name": "Release Notes Showcase",
"name": "release-notes-showcase",
"description": "Compose and refine launch-ready release notes with contributor callouts and export-friendly output.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"product-updates",
"release-notes"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "site-studio",
"name": "Site Studio",
"name": "site-studio",
"description": "Plan, draft, and track a personal website section by section — a shared canvas where you and your agent author content, watch progress, and review every change.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"section-planning",
"site-builder"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "token-pacman",
"name": "Token Pac-Man",
"name": "token-pacman",
"description": "Visualizes live session AI-credit usage as a Pac-Man board with pellets, ghosts, fruit milestones, and game-over limits.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"quota-tracking",
"session-usage"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}
@@ -1,6 +1,5 @@
{
"id": "where-was-i",
"name": "Where Was I?",
"name": "where-was-i",
"description": "Reconstruct your dev context (branch, commits, uncommitted work, PR clues) and trigger a resume prompt to continue quickly.",
"version": "1.0.0",
"author": {
@@ -15,14 +14,6 @@
"pull-request-context",
"resume-work"
],
"screenshots": {
"icon": {
"path": "assets/preview.png",
"type": "image/png"
},
"gallery": {
"path": "assets/preview.png",
"type": "image/png"
}
}
}
"logo": "assets/preview.png",
"extensions": "."
}