The contributes object in package.json has one key for each
kind of thing an extension adds to the editor. Most keys hold an array of objects; the
table says where a key holds an object instead. This list follows VS Code’s
documentation.
The points
| Point | Adds | Fields of an entry |
|---|---|---|
authentication | An authentication provider | label, id |
breakpoints | Languages where breakpoints can be set | language |
chatAgents | Bundled custom Copilot Chat agents | path, when, sessionTypes |
chatInstructions | Instruction files for Copilot Chat | path, when |
chatPromptFiles | Reusable prompts, run as chat slash commands | path, when |
chatSkills | Agent Skills folders Copilot can load | path, when |
colors | Themeable colours | id, description, defaults (dark, light, highContrast, highContrastLight) |
commands | A command’s title and interface, in the Command Palette and menus | command, title, category, icon |
configuration | Settings, shown in the Settings editor | title, properties (for each setting type, default, description or markdownDescription, enum, scope, order, ignoreSync and more) |
configurationDefaults | New defaults for existing settings, or per-language editor defaults (an object) | Setting IDs, or [languageId] keys |
customEditors | Custom editors and the files they handle | viewType, displayName, selector, priority |
debuggers | A debug adapter and its launch configuration | type, label, program, runtime, configurationAttributes, initialConfigurations, configurationSnippets, variables, languages |
grammars | A TextMate grammar for colouring source | language, scopeName, path, embeddedLanguages |
icons | New icon IDs with default glyphs (an object) | Icon IDs, each with description, default (fontPath, fontCharacter) |
iconThemes | A file icon theme | id, label, path |
jsonValidation | JSON schema validation for matching files | fileMatch, url |
keybindings | Key bindings that run commands | command, key, mac, when |
languages | New or extended language definitions | id, extensions, aliases, filenames, filenamePatterns, firstLine, mimetypes, configuration, icon |
languageModelChatProviders | Language model providers for the model picker | vendor, displayName, configuration, managementCommand, when |
languageModelTools | Tools a language model can call | name, displayName, modelDescription, userDescription, canBeReferencedInPrompt, toolReferenceName, icon, inputSchema, when, tags |
menus | Menu items, keyed by menu location (an object) | For each item command, submenu, when, group, alt |
problemMatchers | Patterns that turn tool output into problems | name, owner, fileLocation, pattern |
problemPatterns | Named patterns for use in problem matchers | |
productIconThemes | A product icon theme | id, label, path |
resourceLabelFormatters | How addresses with a given scheme are shown | scheme, formatting (label, separator, workspaceSuffix) |
semanticTokenModifiers | New semantic token modifiers | id, description |
semanticTokenScopes | Maps semantic tokens to TextMate scopes | language, scopes |
semanticTokenTypes | New semantic token types | id, superType, description |
snippets | Snippets for a language | language, path |
submenus | Submenus that menu items can attach to | id, label |
taskDefinitions | The schema of a task type | type, required, properties |
terminal | Terminal profiles the extension creates (an object) | profiles (title, id) |
themes | A colour theme | label, uiTheme, path |
typescriptServerPlugins | Plugins that extend JavaScript and TypeScript support | name, enableForWorkspaceTypeScriptVersions |
views | Views in a container: explorer, scm, debug, test or a custom one | id, name, when, icon, contextualTitle |
viewsContainers | Custom view containers in the Activity Bar or Panel (an object keyed by location) | id, title, icon |
viewsWelcome | Welcome content for empty views | view, contents, when |
walkthroughs | Getting-started walkthroughs | id, title, description, steps (id, title, description, media, completionEvents) |
Grammars, snippets, languages and the other contributions can be combined in one manifest. VS Code links them through a shared language ID.
A key binding can also have linux and win keys for those
platforms.