Canvas authoring plugin
Create a canvas app with the Microsoft Canvas Toolkit. This skill-only
companion adds toolkit setup and a counter or read-only Azure resource-group
starter to the host's native create-canvas workflow. It does not install or
start a canvas.
Install
Open GitHub Copilot Customize → Plugins, add Azure/azure-dev-tools
(ID azure-dev-tools), and install canvas-authoring 0.1.0:
copilot plugin marketplace add Azure/azure-dev-tools
copilot plugin install canvas-authoring@azure-dev-tools
For a reproducible local install, check out the immutable
canvas-authoring-v0-1-0-23aa6b1 tag and install its plugin directory:
git clone --depth 1 --branch canvas-authoring-v0-1-0-23aa6b1 https://github.com/Azure/azure-dev-tools.git canvas-authoring-plugin
copilot plugin install ./canvas-authoring-plugin/plugins/canvas-authoring
Installing this package contributes the create-canvas-app skill. It does not
install a canvas extension or replace the host's native create-canvas skill.
Requirements
- A canvas-capable GitHub Copilot host with its installed
create-canvasskill. The plugin does not replace or install that host skill. - Node.js 22+ (24 recommended) and npm.
- Exact
@microsoft/canvas-toolkit@0.1.0-preview.2from the public npm registry (with the/buildexport), or an approved compatible local.tgz. - For live Azure reads: Azure CLI 2.61+ and permission to read the subscription.
See the toolkit quickstart for the Azure starter. Installing the plugin adds a skill, not a running canvas app.
Try it
Ask your agent:
Build a read-only Azure canvas that lists resource groups.
Use the native create-canvas skill and the create-canvas-app companion's
Azure starter. Help me choose a compatible toolkit version.
The agent creates the native scaffold, generates the source app, and connects the copied host entry. You choose the project location and toolkit package. For a non-Azure example, ask for the counter starter.
Setup accepts one exact npm version or one local tarball. For the published
package, pass --toolkit-version 0.1.0-preview.2 to the
setup command.
It does not install dependencies or contact Azure, and it refuses existing
output directories rather than overwriting files.
What you can do
- Generate a native canvas scaffold with a working counter starter.
- Start a read-only Azure resource-group viewer with explicit subscription choice.
- Build and smoke-test the generated app before installing its complete output.
Prompts to try
Use the native create-canvas skill and the create-canvas-app companion to build a counter canvas.
Build a read-only Azure canvas that lists resource groups. Use the native create-canvas skill and the create-canvas-app companion's Azure starter.
Build and run
In the generated app using @microsoft/canvas-toolkit@0.1.0-preview.2:
npm install
npm run build
npm test
npm run smoke
If your configured npm feed has not synchronized this version, use
npm install --registry=https://registry.npmjs.org/ for that install only;
do not change global npm configuration.
smoke is available in the Azure starter. It uses installed Chrome, or the
executable specified by CANVAS_BROWSER, with labelled synthetic data.
Keep package-lock.json and use npm ci for later installs.
Follow the generated README and host skill to install the complete dist/
directory and reload the provider. A browser refresh does not load rebuilt
provider code; a build-ID warning indicates a mismatch.
The Azure app does nothing until you act: load the CLI profile, select a subscription, then choose List resource groups. It never signs in, chooses a subscription, or writes Azure resources automatically. Browser checks do not replace trying the app in the native host with your Azure account.
Customize
Start with the generated README's source map and the Azure quickstart. Keep the shared UI/agent actions, explicit scope and cancellation when changing the reader or display. The integration reference covers the host adapter and build settings.
Toolkit guides are included in the plugin and generated from the toolkit sources. Their provenance records versions and checksums; it does not establish npm availability.