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.
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.
npx skills add microsoft/vscode --skill create-canvasgit clone --depth 1 https://github.com/microsoft/vscodeWrote 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.
[](https://agentmods.dev/skills/microsoft/vscode/create-canvas)<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.
<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>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.
| Model | Per session | Once 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 |
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.
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:
- Check for existing
.github/extensions/conventions and reusable UI/server helpers. Do not copy host-specific dependencies from them. - 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-boardrather thanboard. - Identify the domain identity for durable state, such as a file path, document ID, or record ID.
instanceIdidentifies a panel, not its data.
Implement
Create .github/extensions/<name>/extension.mjs.
- Use ES modules and import
createCanvas,CanvasError, andjoinSessionfrom@github/copilot-sdk/extension. - Do not create a
package.jsonor install@github/copilot-sdk; the runtime resolves it automatically. - Never write to stdout with
console.log. Usesession.log()for diagnostics. - Bind embedded HTTP servers to
127.0.0.1on 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 sameinstanceIdmust 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_HOMEexactly as given whenever it is non-empty, as the runtime uses it, otherwisepath.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 withCanvasErrorinstead 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.
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.
- 3d ago Changed · +7 lines a430c7430f69
- 15d ago First seen · 68 lines · 16 tokens per session scan A b760fc8a22fa
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.
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.
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.
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.
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.
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.
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…