create-canvas

create-canvas is a skill for Claude Code from microsoft/vscode. It costs 16 tokens per session (1,152 once invoked), scanned A, original, MIT.

A skill for building a project-specific canvas extension in the current workspace. A canvas is a custom panel or interactive view, and the skill implements it under the repository's .github/extensions directory.

In plain words
What is it for?
Use it to create an interactive project panel that displays information or lets users perform actions in the workspace.
Why use it?
It turns a requested workspace view into an actual extension while checking existing conventions and deciding where durable data should live.

Skill for Claude Code ✓ vendor

Written for Claude Code: user-invocable in frontmatter.

Good fit Use it to create an interactive project panel that displays information or lets users perform actions in the workspace.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/microsoft/vscode/create-canvas
About the project

Visual Studio Code is a code editor that supports editing, navigating, understanding, debugging, and extending software projects. Developers use it for the edit-build-debug cycle, and the catalogue add-ons provide skills, instructions, and agents for working within the editor.

microsoft/vscode · 193,657 stars · on GitHub · code.visualstudio.com

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add microsoft/vscode --skill create-canvas
Clone the repo
git clone --depth 1 https://github.com/microsoft/vscode

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for create-canvas

README.md
[![agentmods](https://agentmods.dev/badge/skills/microsoft/vscode/create-canvas/github.svg)](https://agentmods.dev/skills/microsoft/vscode/create-canvas)
Your own site
<a href="https://agentmods.dev/skills/microsoft/vscode/create-canvas"><img src="https://agentmods.dev/badge/skills/microsoft/vscode/create-canvas/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for create-canvas

Your own site · 80×15
<a href="https://agentmods.dev/skills/microsoft/vscode/create-canvas"><img src="https://agentmods.dev/badge/skills/microsoft/vscode/create-canvas.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 16 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,152 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00016 $0.01152
Opus 5.5 $0.00006 $0.00461
Sonnet 5.5 $0.00003 $0.00230
Haiku 4.5 $0.00002 $0.00115

Measured 3d ago against content hash a430c7430f69, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

create-canvas scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

extensions/copilot/assets/prompts/skills/create-canvas/SKILL.md · 75 lines

How it starts

The opening of the file, as written. The whole thing — 75 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Create a working canvas extension in the current workspace. Do the implementation rather than only returning a sample.

Project extensions are shared with everyone who works in the repository, and any Copilot host may load them. Build only on the Copilot SDK contract described here; do not depend on environment variables, paths, APIs, or UI behavior specific to one host.

Clarify only when needed

The extension scope is fixed: create a project extension under .github/extensions/<name>/.

If the requested canvas purpose is unclear, ask what it should display or let the user do. If durable state is required but its identity or lifetime is ambiguous, ask whether the state belongs in a workspace artifact or private extension storage.

Inspect first

Before writing:

  1. Check for existing .github/extensions/ conventions and reusable UI/server helpers. Do not copy host-specific dependencies from them.
  2. Choose a short kebab-case extension folder name and a stable kebab-case canvas ID. The canvas ID also names the extension's private data folder, which every repository on the machine shares, so make it distinctive: qualify generic names with the project or domain, for example contoso-release-board rather than board.
  3. Identify the domain identity for durable state, such as a file path, document ID, or record ID. instanceId identifies a panel, not its data.

Implement

Create .github/extensions/<name>/extension.mjs.

  • Use ES modules and import createCanvas, CanvasError, and joinSession from @github/copilot-sdk/extension.
  • Do not create a package.json or install @github/copilot-sdk; the runtime resolves it automatically.
  • Never write to stdout with console.log. Use session.log() for diagnostics.
  • Bind embedded HTTP servers to 127.0.0.1 on an ephemeral port.
  • Return an HTTP URL from open(). Do not place credentials or private state in the URL.
  • Treat open() as idempotent. Reopening the same instanceId must reuse or safely replace its live server and reload state from the stable domain identity.
  • Store repo-owned artifacts at a sensible workspace path when the user expects them to be versioned or directly editable.
  • Store private durable data outside the repository, in extension-data/<canvas-id>/ under the Copilot home that every Copilot host shares: process.env.COPILOT_HOME exactly as given whenever it is non-empty, as the runtime uses it, otherwise path.join(os.homedir(), '.copilot'). Create directories on first use.
  • Several sessions, workspaces, and hosts may run the extension at the same time, so:
    • key records by their domain identity so workspaces do not overwrite each other's state;
    • write each file atomically: write a uniquely named temporary file in the same directory, then rename it over the target;
    • store a format marker and version with the data, validate them and the data's shape on every read, and report unrecognized or corrupt data instead of overwriting it;
    • report storage failures from open() or actions with CanvasError instead of failing to load.
  • Use semantic HTML, keyboard-accessible controls, visible focus, labels, and ARIA status text. The page is ordinary web content with no privileged host bridge; use same-origin HTTP endpoints or server-sent events.
  • Escape untrusted values before inserting them into HTML and validate every HTTP and action input.

Read the full file on GitHub · 75 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago Changed · +7 lines a430c7430f69
  2. 15d ago First seen · 68 lines · 16 tokens per session scan A b760fc8a22fa

Subscribe to this mod's changes

create-canvas is a skill published in the GitHub repository microsoft/vscode (193,657 stars, last pushed today), licensed MIT. It adds 16 tokens to every session and 1,152 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-01.

Related

Other skills, from other repositories

cyrene-diagram

A design guide for making static SVG learning cards: small diagrams or reference cards rendered as images. It explains when to use a card instead of Mermaid, a text-based diagram format, and sets layout, color, size, and safety rules.

Playa-0v0/Cyrene-Agent · 50 tokens

figma

Complete guide for the Figma plugin — REST API access, real-time selection monitoring via CDP, and the figma-app interactive UI. Read this IMMEDIATELY when the user asks to work with Figma.

mereyabdenbekuly-ctrl/clodex-ide · 48 tokens

magic-ui

Use this skill when users want to add, customize, or troubleshoot Magic UI components in React/Next.js projects. It covers component selection, shadcn registry installation (@magicui/), integration patterns, and practical quality checks for accessibility and maintainability.

magicuidesign/magicui · 56 tokens

winui-design

Read before writing or changing WinUI 3 XAML: choosing controls, pages and navigation, layout, Fluent Design, theming, accessibility, x:Bind, real samples, and checking that APIs exist with winapp find-api. Not for WPF or WinForms UI, even if the app uses the Windows App SDK.

microsoft/winappCli · 70 tokens

openscreen-design

Use this skill to generate well-branded interfaces and assets for OpenScreen (an AI-native screen-recording studio & video editor), either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, assets, and UI kit components for prototyping.

getopenscreen/openscreen · 62 tokens

quill-code

Edit the @posthog/quill design system locally and consume the change in products/desktop before it is published to npm. Use when changing quill components/primitives/tokens, when a quill change must be tested inside the Code app, or when the user mentions quill, the design system, the .local-quill tarball, or the…

PostHog/posthog · 84 tokens