* 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>
Agent Arcade Canvas
A GitHub Copilot canvas that opens a retro arcade in the side panel. It serves the built Agent Arcade Phaser frontend and lets either the user or the agent switch between five mini-games.
Games
- Alien Onslaught — Space Invaders-style arcade action with marching aliens, shields, and mystery ships.
- Cosmic Rocks — Asteroids-style vector shooter with thrust physics and splitting asteroids.
- Galaxy Blaster — Galaga-style space shooter with formation enemies, attack patterns, and dual-shot power-up.
- Ninja Runner — Classic platformer with double jumps, power-ups, warp pipes, and enemies.
- Planet Guardian — Defender-style side-scrolling shooter with humanoid rescues and six enemy types.
Files
extension.mjs— canvas declaration, loopback game server, static asset handling, and agent actions.game/— compiled Phaser game frontend served inside the canvas.assets/— game sprites, sounds, app icon, andpreview.pngfor the extensions gallery.package.json— declares the Copilot SDK dependency and ESM entry point.copilot-extension.json— Copilot extension name/version metadata.canvas.json— Awesome Copilot gallery metadata.
Prerequisites
- Node.js 20.19 or newer because the Copilot SDK requires
node ^20.19.0 || >=22.12.0. - The GitHub Copilot app canvas / UI-extensions experiment enabled.
Install
Drop this folder at ~/.copilot/extensions/arcade-canvas/ for user scope, or in a repository at .github/extensions/arcade-canvas/ for project scope. Then install dependencies from inside the copied folder:
# User scope
cd ~/.copilot/extensions/arcade-canvas
# Or project scope, from the repository root
cd .github/extensions/arcade-canvas
npm install
Reload extensions in the GitHub Copilot app, then open the arcade-canvas canvas. The canvas accepts an optional defaultGame input with one of these keys: cosmic-rocks, alien-onslaught, galaxy-blaster, ninja-runner, or defender.
Agent actions
list_games— list available mini-games and the currently selected game.select_game { gameKey }— switch the open arcade canvas to a specific mini-game.restart_game— reload the open arcade canvas to restart the current game.
Development
In the Agent Arcade repository, rebuild the committed canvas bundle after frontend or asset changes:
npm run build:canvas
That command builds the frontend, copies dist/game into game/, copies dist/assets into assets/, writes assets/preview.png for the Awesome Copilot gallery, and bundles assets/canvas-background.webp for the canvas-only space backdrop.
Credits
- Sprite assets: Simple Platformer 16 by JuhoSprite.
- Space shooter assets: Space Shooter Redux by Kenney.nl.
- Galaga-style game mechanics: WesleyEdwards/galaga by Wesley Edwards.
- Asteroids-style game mechanics: phaser3-typescript by digitsensitive.
- Defender-style game mechanics and sound effects: OpenDefender by mkinney.
- Retro game sound effects: "Retro game sound effects" by Vircon32 (Carra), published at OpenGameArt under CC-BY 4.0.
- Thanks to John Papa for his Alien Onslaught game PR.
- Thanks to Shayne Boyer for the initial PR to get Agent Arcade running in the GitHub App canvas.