Create Canvas Extension
Create or register a canvas extension in the awesome-copilot repository.
Install
npx skills add github/awesome-copilot --skill create-canvas-extension -g -a claude-code -y- Repository
- github/awesome-copilot40.7k
- Category
- Engineering
- Updated
- 6d ago
- License
- MIT
- Context cost
- Lightabout 1,193 tokens
- Runs scripts
- No, instructions only
What it does
Create or register a canvas extension in the awesome-copilot repository. Use when asked to scaffold a new canvas extension, create its plugin.json, add a reusable extension to one or more plugins, or migrate extension metadata. Extensions are reusable source under extensions/; shippable plugin manifests belong under plugins/.
Create a canvas extension
Use this skill only for the github/awesome-copilot repository. Canvas extensions are reusable source components. They do not have a plugin.json under extensions/.
Required decisions
Before creating files, ask for each missing value:
- Extension ID: lowercase kebab-case, matching the source folder and plugin name.
- Display metadata:
- description
- version (default
1.0.0) - author name and optional URL
- keywords (lowercase, hyphenated, maximum 10)
- repository and license (default to the repository URL and
MITwhen appropriate)
- Canvas entrypoint: confirm whether the extension already has
extension.mjs. If not, create a minimal entrypoint only when the user provides enough implementation details; otherwise create the directory and leave an explicit TODO. - Preview image: obtain an existing
assets/preview.pngpath or ask the user to add it. Do not invent a binary image or silently use a misleading placeholder. - Plugin registration:
- For a standalone installable canvas plugin, create
plugins/<extension-id>. - For an extension that belongs to an existing plugin, ask for the parent plugin ID and add
./extensions/<extension-id>to that plugin'sextensions.com.github.awesome-copilot.extensions. - If the extension should be shipped by multiple plugins, collect all plugin IDs and add the same extension ID to each mapping file.
- For a standalone installable canvas plugin, create
Files to create
For a new extension plugin, create this structure:
extensions/<extension-id>/
├── extension.mjs
└── assets/
└── preview.png
plugins/<extension-id>/
├── plugin.json
└── README.md
The extension source may contain additional files such as package.json, canvas assets, or supporting modules. Keep all reusable implementation files under extensions/<extension-id>/.
Create plugins/<extension-id>/plugin.json with this shape:
