{"owner":"microsoft","repo":"vscode-docs","hasSkills":true,"totalSkillsCount":86,"totalTokensCount":43611,"categories":["anthropic-skill","copilot-instructions","subagent-persona","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"vscode-docs":{"command":"npx","args":["-y","@modelcontextprotocol/server-vscode-docs"]}}},"found":[".github/skills/release-note-writer/SKILL.md",".github/skills/content-redirect/SKILL.md",".github/skills/doc-writer/SKILL.md",".github/skills/frontmatter-description/SKILL.md",".github/skills/pr-review/SKILL.md",".github/copilot-instructions.md",".github/agents/code-reviewer.agent.md",".github/skills/blog-writer/SKILL.md",".github/skills/write-my-release-notes/SKILL.md","api/references/activation-events.md",".github/skills/docs-product-alignment/SKILL.md","api/references/commands.md","api/references/contribution-points.md","api/references/document-selector.md","api/references/extension-manifest.md","api/references/icons-in-labels.md","api/references/theme-color.md","api/references/when-clause-contexts.md","docs/agents/agents-handoff-tutorial.md","docs/agents/agents-tutorial.md","docs/agents/best-practices.md","docs/agents/overview.md","docs/agents/quickstart.md","learn/agents/1-using-tools-with-agents.md","learn/agents/2-extending-agents-with-mcp-servers.md","learn/agents/3-agent-plugins.md","learn/agents/4-using-third-party-agents-in-vs-code.md",".github/skills/release-note-writer/review-procedure.md",".vscode/extensions/doc-assistant/package.json",".vscode/extensions/doc-assistant/package-lock.json",".vscode/extensions/doc-assistant/README.md",".vscode/extensions/doc-assistant/tsconfig.json","docs/configure/extensions/extension-marketplace.md","docs/configure/extensions/extension-runtime-security.md","docs/configure/extensions/extensions.md","docs/agents/agent-troubleshooting/cache-explorer.md","docs/agents/agent-troubleshooting/chat-debug-view.md","docs/agents/agent-troubleshooting/faq.md","docs/agents/agent-troubleshooting/troubleshooting.md","docs/agents/concepts/agent-harnesses.md","docs/agents/concepts/agent-host.md","docs/agents/concepts/agents.md","docs/agents/concepts/context.md","docs/agents/concepts/customization.md","docs/agents/concepts/language-models.md","docs/agents/concepts/sessions.md","docs/agents/concepts/tools.md","docs/agents/concepts/trust-and-safety.md","docs/agents/guides/browser-agent-testing-guide.md","docs/agents/guides/code-review-with-copilot.md","docs/agents/guides/context-engineering-guide.md","docs/agents/guides/customize-copilot-guide.md","docs/agents/guides/debug-with-copilot.md","docs/agents/guides/mcp-developer-guide.md","docs/agents/guides/monitoring-agents.md","docs/agents/guides/notebooks-with-ai.md","docs/agents/guides/optimize-usage.md","docs/agents/guides/prompt-engineering-guide.md","docs/agents/guides/prompt-examples.md","docs/agents/guides/test-driven-development-guide.md","docs/agents/guides/test-with-copilot.md","docs/agents/reference/ai-features-cheat-sheet.md","docs/agents/reference/ai-settings.md","docs/agents/reference/hooks-reference.md","docs/agents/reference/mcp-configuration.md","docs/agents/reference/workspace-context.md","docs/agents/run/agent-harnesses.md","docs/agents/run/agents-window.md","docs/agents/run/approvals.md","docs/agents/run/artifacts.md","docs/agents/run/browser-tools.md","docs/agents/run/chat-view.md","docs/agents/run/memory.md","docs/agents/run/planning.md","docs/agents/run/remote-agent-sessions.md","docs/agents/run/review-code-edits.md","docs/agents/run/security.md","docs/agents/run/subagents.md","docs/agents/run/tools.md",".github/skills/release-note-writer/examples/v1_109.md",".vscode/extensions/doc-assistant/.vscode/launch.json",".vscode/extensions/doc-assistant/.vscode/settings.json",".vscode/extensions/doc-assistant/.vscode/tasks.json","blogs/2025/03/.github/copilot-instructions.md","docs/agents/run/sessions/manage-sessions.md","docs/agents/run/sessions/session-history.md"],"skills":{".github/skills/release-note-writer/SKILL.md":"---\nname: release-note-writer\ndescription: Guidelines for writing and reviewing Insiders and Stable release notes for Visual Studio Code. This also includes instructions for updating release notes for recovery releases.\n---\n# Visual Studio Code Release Note Writer Guidelines\n\nThis skill is designed to help you write release notes for Visual Studio Code Insiders and Stable releases. It provides structured guidelines and examples to ensure consistency and clarity in the release notes.\n\nThere are two main types of release notes you can generate using this skill:\n\n1. **Insiders Release Notes**: These notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\n2. **Stable Release Notes**: These notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\nYour task is help generate these release notes based on the provided guidelines, examples, and templates.\n\n## General writing guidelines for release notes\n\nFollow the guidelines in this order of priority:\n\n1. [Release notes writing instructions](../../instructions/release-notes-writing.instructions.md)\n2. [Visual Studio Code documentation writing guidelines](../../instructions/docs-writing.instructions.md)\n\nBefore writing or retaining an entry, verify that the functionality is available in the public release channel covered by the notes. Public Insiders, Preview, and Experimental functionality qualifies when labeled clearly. Exclude and report internal dogfood, hidden settings or commands, source-only implementation, and manually settable internal feature flags. An internal setting can be referenced only under the narrow exception in the release notes writing instructions: the user must explicitly request the specific reference and then confirm it before you add it.\n\n## Insiders Release Notes\n\nInsiders release notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\nYour task is to generate release notes for the specified VS Code Insiders release version based on GitHub issues and PRs.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no milestone name is specified, check if the milestone name is in the frontmatter, otherwise ask the user for the milestone name.\nIf no label is specified, use the \"feature-request\" label by default.\n\nDO NOT continue until you have the release version and milestone name!!\n\n### File format\n\nIssues are grouped in H2 sections by their closed date. The TOC must be updated to reflect the new sections and issues added.\n\nUse [this template](../../../templates/template-release-note-insiders.md) for the Insiders release notes.\n\nThe [1.109 release notes](./examples/v1_109.md) are a concrete example of an Insiders release note.\n\n### Generation steps\n\n1. If there is not an existing Insiders release note for the specified version, create a new release note file using the Insiders release note template and replace the placeholders.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. Do not insert a banner image or add a statement that the release notes were generated by AI or GitHub Copilot.\n\n1. Get last update date from existing release notes for the specified release version. If no existing release notes, disregard last update date.\n\n1. Run a subagent to fetch all closed GitHub issues in the microsoft/vscode repo for the milestone that have the specified label and closed date as of the latest update date by using the github CLI. Save the JSON in the release note document.\n\n    Use this CLI command: `gh search issues --repo microsoft/vscode --label <label name> --milestone <milestone name> --state closed \"closed:>=<latest update date>\" -L 100`\n\n1. Verify that each candidate is available in the public Insiders build. Exclude and report internal-only candidates instead of creating entries for them.\n\n1. Ignore issues that are marked as duplicate or not planned.\n\n1. For each issue in the JSON result, run a subagent to update the release notes and TOC with a concise, technically accurate summary of the issue. Use associated PRs to verify details, but do not include implementation details in the entry. At the end of the summary, include a link to the GH issue which include the issue number and title (format: #12345: Issue title). Group issues under an H2 section that represents the closed date.\n\n### Phrasing guidelines for Insiders entries\n\n- Treat each entry as a changelog item. Use one short sentence whenever possible.\n- State only the user-visible change and essential configuration or lifecycle information.\n- Add a second sentence only when a constraint, fallback, or compatibility detail is necessary to use the feature correctly.\n- Omit background context, implementation details, testing instructions, and information already clear from the issue link.\n- When describing new capabilities, prefer the format \"Add support for ...\" over \"... now supports ...\". For example, write \"Add support for sorting sessions by date\" rather than \"The sessions view now supports sorting by date\".\n- Avoid using the word \"now\" in entries. State what changed directly instead. For example, write \"Branch names are generated based on the user's prompt\" rather than \"Branch names are now generated based on the user's prompt\".\n\n## Stable Release Notes\n\nStable release notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no release month and year are specified, ask the user for the release month and year.\nDO NOT continue until you have the release version and release month and year!!\n\n### File format\n\nUse [this template](../../../templates/template-release-note-endgame.md) for generating the initial Stable release notes.\n\n### Generation steps\n\n1. If there is not an existing release note for the specified version, create a new release note file using the Stable release note template.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. If there is an existing release note for the specified version, and it's an Insiders release note, replace the content with the Stable release note template content.\n\n1. If there is an existing Stable release note for the specified version, perform a code review of the existing release note to ensure it adheres to the writing guidelines. Suggest improvements as needed.\n\n1. Verify that each feature is available in the Stable release being documented. Exclude and report internal-only features, and do not infer availability from source-code existence alone.\n\n### Value proposition and feature framing\n\nThe [writing instructions](../../instructions/release-notes-writing.instructions.md) define the value-proposition and feature-continuity rules. When writing Stable entries, keep these essentials top of mind:\n\n* Open each entry with the user benefit or the problem being solved, then explain mechanics.\n* For multi-release features, re-establish context in 1-2 sentences so the entry stands on its own.\n* For admin/policy features, cover both the admin use case and the developer-facing impact.\n* Prefer concrete examples and before/after comparisons over vague claims.\n\n### Verify context gaps with the user\n\nAfter a first pass of all feature sections, review the draft for gaps you cannot resolve from the issue, PR, or existing docs. Batch all gaps into a single ask-questions prompt rather than interrupting per section. Ask when:\n\n* **Value prop unclear**: You cannot confidently write a benefit-first opening from the source material.\n* **Multi-release context missing**: A feature builds on prior work but you cannot find earlier entries to reference.\n* **Audience ambiguous**: Framing differs depending on whether the audience is developers, admins, or extension authors.\n* **Docs coverage thin**: A feature references a concept that is undocumented or only mentioned as a sidenote, and you need guidance on how much to explain inline.\n\nFor each gap, include your best-guess draft so the user can confirm or correct rather than write from scratch.\n\nBefore asking, search the `docs/` folder for any referenced concepts. If docs coverage is thorough, link to the page and skip the question. Only flag concepts where coverage is thin or absent.\n\n## Recovery release notes\n\nWhen a recovery release is needed, a note is added to the top of the release notes that links to the issues resolved in the recovery release. In addition, the download version is updated to the recovery release version. The rest of the release notes remain unchanged.\n\nPerform these steps to update the release notes for a recovery release:\n\n1. Update the `DownloadVersion` in the frontmatter to the recovery release version.\n\n1. Add a note at the top of the release notes, right after the release date, that links to the issues resolved in the recovery release:\n\n    ```markdown\n    **Update <recovery version>**: The update addresses these [issues](https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A<recovery version>).\n    ```\n\n    When multiple recovery releases are needed, add the note for each recovery release in chronological order.\n\n\n## Review Procedure\n\nTo review release notes, follow the full [review procedure](./review-procedure.md). This covers both standalone review and post-write validation, with checklists for Insiders and Stable release notes.\n",".github/skills/content-redirect/SKILL.md":"---\nname: content-redirect\ndescription: 'Create and manage redirects in VS Code documentation when pages are moved, renamed, or deleted. Use when moving docs pages, renaming files, restructuring content, or when the user asks about redirects.'\nargument-hint: '<old-path> <new-path>'\n---\n\n# Content Redirect\n\nYou are a redirect specialist for VS Code docs. Your job is to create and manage redirects in `redirection.json` when documentation pages are moved, renamed, or deleted. Each content area has its own `redirection.json` file.\n\n## When to Use\n\nUse this skill whenever:\n\n* A markdown file is **moved** or **renamed** (the URL path changes).\n* A markdown file is **deleted** and its content now lives elsewhere.\n* You are explicitly asked to add a redirect.\n\n## Redirect Files\n\nEach top-level content folder has its own redirect file:\n\n| Content area | Redirect file |\n|-------------|---------------|\n| `docs/`     | `docs/redirection.json` |\n| `api/`      | `api/redirection.json` |\n| `blogs/`    | `blogs/redirection.json` |\n| `remote/`   | `remote/redirection.json` |\n\n## Entry Format\n\nEach redirect is a JSON object with three fields:\n\n```json\n{ \"from\": \"/docs/old/path\", \"to\": \"/docs/new/path\", \"status\": 301 }\n```\n\n| Field    | Description |\n|----------|-------------|\n| `from`   | The old URL path (without file extension, without domain). Must start with `/` followed by the content area prefix (e.g., `/docs/`, `/api/`). |\n| `to`     | The new URL path the old URL should redirect to. Same format as `from`. |\n| `status` | Always `301` (permanent redirect). |\n\n## Procedure\n\n### 1. Determine the old and new paths\n\n- Strip the file extension (`.md`) and the repo-root prefix to get the URL path.\n- Example: moving `docs/copilot/overview.md` → `docs/copilot/getting-started.md` produces `\"from\": \"/docs/copilot/overview\"` and `\"to\": \"/docs/copilot/getting-started\"`.\n- For `index.md` files, the URL path is the folder path without `/index` (e.g., `docs/copilot/index.md` → `/docs/copilot`).\n\n### 2. Identify the correct redirect file\n\nChoose the `redirection.json` that matches the content area of the **old** path (the `from` path).\n\n### 3. Add the redirect entry\n\n- Open the appropriate `redirection.json` file.\n- Append the new entry to the JSON array.\n- Keep the array sorted or append at the end — either is acceptable.\n- Ensure the JSON is valid (proper commas, no trailing comma on the last entry).\n\n### 4. Check for redirect chains\n\nSearch the same `redirection.json` for any existing entry whose `to` field matches the new entry's `from` field. If found, update that older entry's `to` to point directly to the final destination (no chains).\n\n### 5. Update internal links\n\nSearch the repository for any links pointing to the old path and update them to the new path. Use Grep to find references to the old path in markdown files and `toc.json` files and update them accordingly.\n\n### 6. Verify\n\n- Confirm the `redirection.json` file is valid JSON.\n- Confirm no duplicate `from` paths exist in the file.\n- If the file was moved (not deleted), confirm the new file exists at the target path.\n",".github/skills/doc-writer/SKILL.md":"---\nname: doc-writer\ndescription: 'Plan and write VS Code documentation for a new or updated feature. ALWAYS use this skill when the user asks to \"document\", \"add docs for\", \"write docs for\", or \"update the docs for\" a feature, or provides a GitHub issue/PR link to document — even if the change seems small. Proposes a documentation plan and asks clarifying questions first — it does not edit any files until you approve the plan.'\nargument-hint: 'Feature to document, or a link to the relevant issue/PR.'\n---\n\n# Document a Feature\n\nHelp document a new or updated VS Code feature in the project documentation (the `docs/` folder) and keep its required navigation metadata current. This skill works in two phases: it first **researches the feature and proposes a documentation plan**, then implements the changes **only after you approve**. It is acceptable to conclude that no documentation update is needed.\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these — do not start editing docs directly without first running Phase 1:\n\n* The user says \"document this\", \"document this functionality/feature\", \"add docs for…\", \"write docs for…\", or \"update the docs for…\".\n* The user pastes a GitHub issue or PR link and asks you to document or address it in the docs.\n* Documenting a new or changed VS Code or GitHub Copilot feature.\n* Turning a GitHub issue or PR into concrete `docs/` updates.\n* Auditing whether existing docs need updating after a feature change.\n\nThis applies even when the change looks small (a clarification, a few added steps, a single section). Run the plan-first workflow rather than jumping straight to edits.\n\nDo **not** use this skill for release notes, API reference docs, redirects, image swaps, or pure copy-edits — those are handled by other skills (`release-note-writer`, `content-redirect`, `frontmatter-description`) or direct edits.\n\n## Guardrails\n\n* **Docs and sitemap only.** Limit content changes to the `docs/` folder. When you add an article or change an article URL, update `build/sitemap.xml` in the same change. Do **not** update release notes or API docs (`api/`) unless the user explicitly asks.\n* **Public functionality only.** Do not add or retain documentation for internal builds, dogfood-only functionality, hidden settings or commands, source-only implementation, or manually settable internal feature flags.\n* **Never edit `enterprise/policies.md`.** This file is generated from the enterprise policy definitions in the VS Code source. Edit `enterprise/policies-template.md` instead, which is used to regenerate `policies.md`.\n* **Screenshots are human work.** When a screenshot needs to be added or updated, insert a `TODO` comment in the doc for a human to capture and insert it later — do not fabricate image references.\n* **Style compliance.** All writing must follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## Phase 1 — Research & Propose a Plan (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the feature.** Read the feature description, issue, or PR provided. If the description is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Infer them from the existing content, documentation journey, source material, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the content, ask the writer to confirm before planning edits.\n3. **Check the source if needed.** To understand the implementation, inspect the source code in the `microsoft/vscode` repo. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being documented | Primary source repo |\n   |----------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n   | Enterprise policies | `microsoft/vscode` (policy definitions) |\n\n4. **Verify public availability.** Check every feature, setting, and command against the public product channel intended for the article. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Inspect registration metadata, product quality gates, feature flags, and the relevant public release. Treat metadata such as `included: false` as internal unless product evidence shows otherwise. If functionality is not public, do not document it. During an audit or review, propose removing existing coverage.\n5. **Identify affected docs.** Search the `docs/` folder for the pages that need to be created or updated. Map each change to a specific file and section. Include `docs/toc.json` and `build/sitemap.xml` in the plan when you add an article or change an article URL.\n6. **Present the plan.** Summarize:\n   * The primary persona, reader intent, and article purpose.\n   * Which `docs/` files and required navigation metadata you propose to create or change, and a short description of each edit.\n   * Any `TODO` screenshot placeholders that will be needed.\n   * Open questions or assumptions.\n\n   If you conclude that **no documentation update is needed**, say so and ask the user to confirm before closing out.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the plan (or adjusts it).\n\n## Phase 2 — Confirm the Branch & Implement (after approval)\n\nOnce the user approves the plan:\n\n1. **Confirm the branch before editing.** Use the user-question tool to ask whether to create a new branch from `main` before implementing the documentation updates. Offer these choices:\n   * `Yes, create a new branch from main (Recommended)`\n   * `No, continue on the current branch`\n\n   Do not modify documentation files until the user answers. If the user chooses a new branch, ask for a branch name unless they already supplied one, then create the branch from `main` before editing. If uncommitted changes prevent safe branch creation, stop and explain the conflict instead of stashing or reverting changes. If the user chooses the current branch, continue without changing branches.\n2. Apply the documentation edits exactly as agreed, following the [docs-writing style guide](../../instructions/docs-writing.instructions.md) and the approved content framing.\n3. Add `TODO` comments where screenshots need to be captured by a human.\n4. Respect the guardrails above (docs content and required sitemap updates only; no release notes/API docs unless asked; never edit generated `policies.md`).\n5. Verify that the introduction, main content, examples, and next steps serve the approved primary persona and reader intent.\n6. Summarize the changes you made and call out any remaining `TODO`s for the user.\n\n## Orchestrate your documentation updates\n\n- Act as a reviewer and coordinator\n- Delegate work to GPT-5.6 Sol subagents, in parallel when feasible.\n- The subagents should not themselves run validation on their work, that's your job! You own the plan; delegate work in parallel when reasonable.\n- Monitor the progress of subagents and integrate their contributions into the final documentation.\n",".github/skills/frontmatter-description/SKILL.md":"---\nname: frontmatter-description\ndescription: 'Check and optimize MetaDescription frontmatter fields in VS Code documentation. Use when auditing, adding, or improving page descriptions for SEO and discoverability. Apply this when making content changes to markdown articles.'\n---\n\n# Frontmatter Description\n\nCheck and optimize `MetaDescription` frontmatter fields in markdown documentation files. Produces actionable fixes for descriptions that violate the rules below.\n\n## When to Use\n\n* Adding or editing a documentation page and need to write a `MetaDescription`.\n* Auditing existing pages for SEO or discoverability improvements.\n* Asked to check, review, or optimize frontmatter descriptions.\n* Editing content articles and want to ensure the `MetaDescription` reflects the updated content.\n\n## Rules\n\nEvery `MetaDescription` value must satisfy **all** of the following:\n\n| Rule | Detail |\n|------|--------|\n| **Length** | Maximum 160 characters. |\n| **Tone** | Action-oriented, value-focused, factual, and impersonal. |\n| **Voice** | No \"you can\", \"users can\", or \"this page explains\". |\n| **Sentences** | Complete sentences, not fragments or labels. |\n| **No colons** | Do not include `:` in the value — it breaks YAML parsing. |\n| **Uniqueness** | Each description must be unique across the docs. |\n| **Reusable variables** | Preserve existing `{% data variables.<group>.<name> %}` references. Do not replace them with rendered product names. |\n\nDescriptions must also reflect the page's primary persona, reader intent, and article purpose. Establish that framing by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing) before suggesting or applying a description. If the existing page and writer's request support multiple materially different interpretations, ask the writer to confirm the framing before editing.\n\n## Procedure\n\n### 1. Identify target files\n\nDetermine which files to check:\n\n* If given specific files, use those.\n* If asked to audit a folder (e.g., `docs/copilot/`), find all `.md` files in that folder recursively.\n* Skip files that have no YAML frontmatter (e.g., `README.md` files without `---` delimiters).\n\n### 2. Extract and validate\n\nFor each file, read enough of the page to identify its primary persona, reader intent, and article purpose. Then read the YAML frontmatter and check the `MetaDescription` field:\n\n1. **Missing** — Flag if `MetaDescription` is absent.\n2. **Length** — Flag if the value exceeds 160 characters. Report the current length.\n3. **Voice** — Flag if it contains \"you can\", \"users can\", \"this page explains\", or similar reader-addressing phrases.\n4. **Tone** — Flag if the description is a fragment, a label, or passive rather than action-oriented.\n5. **Context** — Flag if the description does not mention the relevant feature or tool.\n6. **Content alignment** — Flag if the description does not represent the page's purpose or the outcome sought by its primary persona.\n7. **Forbidden words** — Flag any occurrence of \"teaching\", \"enable\", \"disable\", or condescending terms.\n8. **Colons** — Flag any `:` character in the value.\n9. **Versions** — Flag any version numbers (e.g., \"v1.90\", \"VS Code 1.90\").\n10. **Formatting** — Flag Jinja2 variables (`{{...}}`), HTML tags, or Markdown formatting. Do not flag supported reusable data variables (`{% data variables.<group>.<name> %}`).\n11. **Reusable variables** — When a description contains a reusable data variable, verify that its full path exists in [`data/variables`](../../../data/variables/README.md) and resolves to the intended text. Preserve valid variables exactly as written.\n\n### 3. Report findings\n\nPresent results as a table:\n\n```\n| File | Issue | Current value | Suggested fix |\n|------|-------|---------------|---------------|\n```\n\n* Group by file path.\n* For each issue, provide the current `MetaDescription` and a rewritten suggestion that passes all rules.\n* If a description passes all checks, omit it from the table (or mark it as passing if the user asked for a full report).\n\n### 4. Apply fixes (when asked)\n\n* Edit the `MetaDescription` value in the YAML frontmatter.\n* Do not change any other frontmatter fields.\n* Do not alter the page body content.\n* Preserve existing reusable data variables. Never replace a variable with its rendered product name.\n* Verify the fix passes all rules and reflects the confirmed page framing before applying.\n\n## Examples\n\n**Good descriptions:**\n\n* `Get AI-powered inline suggestions from GitHub Copilot in VS Code, including ghost text completions and next edit suggestions.`\n* `Configure and manage extensions in Visual Studio Code to customize your development environment.`\n* `Debug Python applications in Visual Studio Code with breakpoints, variable inspection, and integrated terminal output.`\n* `Build a web app with an AI agent in {% data variables.product.prodname_vscode_shortname %}, then review and validate the result.`\n\n**Bad descriptions and why:**\n\n| Description | Problem |\n|-------------|---------|\n| `This page explains how to use Copilot.` | Uses \"this page explains\". |\n| `You can debug your code with VS Code.` | Uses \"you can\". |\n| `Copilot` | Fragment, not a sentence. |\n| `Learn how to enable the new feature in VS Code 1.90.` | Uses \"enable\" and includes a version number. |\n| `Set up debugging: configure launch.json for Python.` | Contains a colon. |\n",".github/skills/pr-review/SKILL.md":"---\nname: pr-review\ndescription: 'Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode and microsoft/vscode-copilot-chat. Use when reviewing a docs PR for factual correctness — setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.'\nargument-hint: '<PR number or branch> (defaults to the current PR / branch)'\n---\n\n# PR Technical Accuracy Review\n\nReview a vscode-docs pull request and verify every factual claim about VS Code behavior against the source code in `microsoft/vscode` and `microsoft/vscode-copilot-chat`. Produce an actionable list of findings the author can address before merging.\n\nThis skill checks **technical accuracy only**. It does not enforce writing style, frontmatter, or release-notes structure — use the `release-note-writer` or `frontmatter-description` skills for those.\n\n## When to Use\n\n* Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.\n* Auditing existing docs for drift after a feature has changed.\n* Asked to \"fact-check\", \"verify\", or \"validate\" a docs change against the product.\n* Before merging a PR that touches `docs/`, `api/`, `remote/`, or release-notes content tied to a specific behavior.\n\nDo **not** use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.\n\n## Repos to Check\n\n| Area being documented | Primary source repo(s) |\n|----------------------|------------------------|\n| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat | `microsoft/vscode-copilot-chat` |\n| Extension API, contribution points, `package.json` schema | `microsoft/vscode` (under `src/vs/workbench/api/`, `src/vscode-dts/`, and `extensions/`) |\n| Enterprise policies | `microsoft/vscode` (policy definitions) — note that `enterprise/policies.md` is generated; verify against source, not the generated file |\n\nUse the `gh` CLI for all GitHub interactions (see user memory `gh-cli-powershell.md` for PowerShell-specific patterns).\n\n## Procedure\n\n### 1. Identify the PR and its diff\n\n* If a PR number was given, run `gh pr view <number> --json number,title,headRefName,baseRefName,files,body` to get metadata and the file list.\n* If no argument was given, run `gh pr view --json ...` to use the PR for the current branch. If there is no associated PR, fall back to `git diff origin/main...HEAD`.\n* Get the actual changed lines with `gh pr diff <number>` (or `git diff` for a branch).\n* Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).\n\n### 2. Extract verifiable claims\n\nWalk the diff and build a list of every claim that can be checked against source code. Include line numbers from the new file content. Categories to look for:\n\n| Category | Examples |\n|----------|----------|\n| **Setting** | `editor.fontSize`, `chat.agent.enabled`, default values, allowed enum values, deprecation status |\n| **Command** | Command IDs (`workbench.action.*`), command palette titles, the action they perform |\n| **Keybinding** | Default key bindings, `when` clauses, platform-specific overrides |\n| **Menu / UI label** | Menu item text, button labels, view titles, walkthrough step titles |\n| **API** | Names, signatures, and shapes in `vscode.d.ts` / `vscode.proposed.*.d.ts` |\n| **Contribution point** | `package.json` schema entries (`contributes.*`), required fields |\n| **Chat tool / participant** | Tool names, participant IDs, tool input/output schemas, agent mode availability |\n| **MCP** | Server config schema, supported transports, capability flags |\n| **Version availability** | \"Available since 1.X\" / \"New in 1.X\" claims |\n| **Default behavior** | What happens out-of-the-box, what is on/off by default |\n| **Policy** | Policy names, supported values, scope |\n\nTreat anchor-style references (e.g., `setting(chat.agent.enabled)`, `command:workbench.action.X`) as claims to verify.\n\n### 3. Verify each claim\n\nFor every claim, locate the source of truth and compare. Prefer one targeted lookup per claim — do not download full files when a search will do.\n\n**Search the source repos** (parallelize independent lookups):\n\n* `gh search code --repo microsoft/vscode '\"<exact-string>\"'` for setting IDs, command IDs, contribution keys.\n* `gh search code --repo microsoft/vscode-copilot-chat '\"<exact-string>\"'` for chat tool names, participant IDs, agent-mode flags.\n* `gh api \"search/code?q=<query>+repo:microsoft/vscode\"` when the `gh search` CLI quotes the query in a way that breaks qualifiers (see user memory `gh-cli-powershell.md`).\n* `gh api repos/microsoft/vscode/contents/<path>?ref=main` to read a specific file.\n\n**Where things live (common starting points):**\n\n* Settings — search for `'<setting.id>'` near `registerConfiguration` calls; default values are in the `default:` field of the schema.\n* Commands — search for `CommandsRegistry.registerCommand` or `registerAction2` with the matching `id`.\n* Keybindings — search for `KeybindingsRegistry.registerKeybindingRule` or look in `src/vs/workbench/browser/parts/editor/...` and feature folders.\n* Extension API — `src/vscode-dts/vscode.d.ts` (stable) and `src/vscode-dts/vscode.proposed.*.d.ts` (proposed).\n* Chat tools — search `microsoft/vscode-copilot-chat` for `displayName`, `toolReferenceName`, or the tool ID string.\n* Contribution points — `extensions/<ext>/package.json` and the schema in `src/vs/workbench/api/common/extHost*.ts`.\n\n**Version availability** — when a doc claims \"since 1.X\":\n\n* `gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X` to see if the symbol existed in that branch, or\n* `gh search commits --repo microsoft/vscode '<symbol>'` to find when it was introduced.\n\nIf a claim cannot be verified after a reasonable search, mark it **Unverified** rather than failing it — the author may have access to context the source does not expose.\n\n### 4. Categorize each finding\n\n| Severity | Use when |\n|----------|----------|\n| **Error** | The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |\n| **Warning** | The claim is partially correct but misleading (default changed in a recent release, behavior is platform-specific and the doc does not say so, feature is behind a setting the doc does not mention). |\n| **Suggestion** | Optional clarification — link to the source, add a \"since 1.X\" note, mention a related setting. |\n| **Unverified** | Could not locate the source of truth; ask the author to confirm. |\n\n### 5. Produce the findings list\n\nOutput a Markdown report with this structure:\n\n```markdown\n## PR Accuracy Review: #<number> — <title>\n\n**Files reviewed:** <count>\n**Claims checked:** <count>\n**Result:** <Pass | Pass with warnings | Needs changes>\n\n### Errors\n\n* **`<file>`:L<line>** (`<category>`) — <one-line description>\n  * Doc says: `<quoted text>`\n  * Source: `<repo>/<path>#L<line>` — <what the source actually says>\n  * Fix: <specific suggested correction>\n\n### Warnings\n\n* ...\n\n### Suggestions\n\n* ...\n\n### Unverified\n\n* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.\n```\n\nRules for the report:\n\n* Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the `fileLinkification` rules.\n* For source-code citations, include the repo, file path, and (when known) line or commit. A `gh`-friendly URL is fine: `https://github.com/microsoft/vscode/blob/main/<path>#L<line>`.\n* Quote the doc text exactly so the author can search for it.\n* Keep each finding to one issue — split combined problems into separate items.\n* If everything checks out, say so explicitly and skip the empty sections.\n\n### 6. Summary\n\nEnd with:\n\n* Counts by severity.\n* An overall verdict: **Pass**, **Pass with warnings**, or **Needs changes** (any Errors → Needs changes).\n* A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.\n\n## Notes\n\n* Do **not** push commits or post review comments on the PR unless the user explicitly asks. This skill produces a report for the user to act on.\n* Do **not** edit `enterprise/policies.md` — it is generated; flag policy issues against `enterprise/policies-template.md` and the source policy definitions instead.\n* When the doc references screenshots or videos, do not attempt to verify their contents — only verify any captions, labels, or alt text that make factual claims.\n* Prefer `main` as the source-of-truth ref unless the PR explicitly documents behavior on a release branch or Insiders-only feature, in which case check `release/1.X` or recent commits accordingly.\n",".github/copilot-instructions.md":"# VS Code Docs Writing Guidelines\n\nFollow the [documentation writing guidelines](instructions/docs-writing.instructions.md) when reviewing or writing documentation.\n",".github/agents/code-reviewer.agent.md":"---\nname: Code Reviewer Agent\ndescription: 'Code Reviewer Agent: Reviews code changes for quality, style, and best practices.'\nargument-hint: 'Provide the code changes or pull request details you want reviewed.'\ntools: ['read', 'search', 'web', 'agent', 'todo']\n---\nPlease review the provided code changes or pull request details for quality, style, and adherence to best practices. Provide constructive feedback and suggest improvements where necessary.\n",".github/skills/blog-writer/SKILL.md":"---\nname: blog-writer\ndescription: 'Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to \"write a blog post\", \"draft a blog\", \"add a blog post for\", \"review this blog post\", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.'\nargument-hint: 'Topic to blog about (or a link to the relevant issue/PR), or a blog post to review.'\n---\n\n# Write or Review a Blog Post\n\nHelp author a new VS Code blog post or review an existing one in the `blogs/` folder. The skill has two modes:\n\n* **Write mode** works in two phases: it first **researches the topic and proposes an outline**, then drafts the post **only after you approve**.\n* **Review mode** evaluates an existing draft for clarity, conciseness, and style, and reports concrete suggestions without editing unless asked.\n\nAll work must follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md), which in turn builds on the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these:\n\n* The user says \"write a blog post\", \"draft a blog\", \"add a blog post for…\", or \"announce this on the blog\".\n* The user pastes a GitHub issue or PR link and asks you to turn it into a blog post.\n* The user asks you to \"review this blog post\", check a draft, or improve an existing post in `blogs/`.\n* Announcing or explaining a new or changed VS Code or GitHub Copilot feature in a narrative, conversational format.\n\nFor new posts, run the plan-first workflow rather than jumping straight to a draft, even when the topic seems small.\n\nDo **not** use this skill for reference documentation, release notes, or API docs. Those are handled by other skills (`doc-writer`, `release-note-writer`) or direct edits. If the user wants reference docs rather than a narrative post, switch to `doc-writer`.\n\n## Guardrails\n\n* **Blogs only.** Limit changes to the `blogs/` folder. Do **not** update reference docs, release notes, or API docs as part of this skill.\n* **Public functionality only.** Announce functionality only when it is publicly available in the named channel by the post's publication date. Do not announce internal dogfood or source-only functionality.\n* **Folder structure.** A new post MUST live in `blogs/<year>/<month>/<day>/` with each date level as its own subfolder. Store images and the social image alongside the post.\n* **Frontmatter is required.** Every post needs the YAML frontmatter fields from the style guide (`Order`, `TOCTitle`, `PageTitle`, `MetaDescription`, `MetaSocialImage`, `Date`, `Author`). `Order` must be unique and higher than the most recent post, so check existing posts before assigning it.\n* **Images and screenshots are human work.** When a hero image or screenshot is needed, insert a `TODO` comment for a human to capture and add it later. Do not fabricate image references or invent file names beyond the placeholder.\n* **Style compliance.** Follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md): engaging, conversational tone, active voice, first-person plural (\"we\"), contractions, and a closing call to action ending with `Happy coding! 💙`.\n\n## Phase 1 — Research & Propose an Outline (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the topic.** Read the feature description, issue, or PR provided. If it is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and narrative purpose by following the [blog content-framing guidance](../../instructions/blog-writing.instructions.md#content-framing). Infer them from the topic, source material, existing coverage, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the angle, ask the writer to confirm before proposing the outline.\n3. **Check the source if needed.** To understand the feature, inspect the source code in the `microsoft/vscode` and `microsoft/vscode-copilot-chat` repos. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being written about | Primary source repo |\n   |--------------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n\n4. **Verify public availability.** Confirm that each announced capability is available to users in the named public channel by the publication date. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Exclude planned, hidden, internal dogfood, and source-only functionality.\n5. **Determine placement and metadata.** Decide the target folder (`blogs/<year>/<month>/<day>/`) and the next available `Order` value by checking recent posts. Confirm the author name and social media profile link with the user if unknown.\n6. **Present the outline.** Summarize:\n   * The primary persona, reader intent, and narrative purpose.\n   * The proposed title, target folder path, and draft frontmatter values.\n   * A section-by-section outline (H2 headings) with a one-line description of each.\n   * Any `TODO` image placeholders that will be needed (hero/social image, inline screenshots).\n   * Open questions or assumptions.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the outline (or adjusts it).\n\n## Phase 2 — Draft the Post (after approval)\n\nOnce the user approves the outline:\n\n1. Create the post at `blogs/<year>/<month>/<day>/<slug>.md` with complete YAML frontmatter.\n2. Write the body following the approved content framing and the content structure from the style guide:\n   * An H1 title, followed by a byline `<Month> <day>, <year> by [<author>](<social link>)` and a blank line.\n   * A brief introduction that summarizes the main points.\n   * H2 sections as outlined, in an engaging, conversational tone using active voice, \"we\", and contractions.\n   * Images via relative paths with descriptive alt text. Use absolute URLs for links to documentation articles.\n   * A closing call to action, ending with `Happy coding! 💙`.\n3. Add `TODO` comments where images or screenshots need to be captured by a human.\n4. Verify that the opening, examples, terminology, key takeaways, and call to action serve the approved primary persona and reader intent.\n5. Summarize the post you created and call out any remaining `TODO`s for the user.\n\n## Review Mode\n\nWhen the user asks you to review an existing blog post instead of writing one:\n\n1. Read the draft and check it against the [blog-writing style guide](../../instructions/blog-writing.instructions.md):\n   * Content framing (a clear primary persona, reader intent, and narrative purpose reflected consistently throughout the post).\n   * Frontmatter completeness and correctness (all required fields, unique `Order`, `MetaDescription` under 160 chars, `TOCTitle` under 30 chars).\n   * Folder structure (`blogs/<year>/<month>/<day>/`).\n   * Content structure (H1 title, byline, intro, H2 sections, alt text on images, absolute URLs for doc links, closing call to action ending with `Happy coding! 💙`).\n   * Writing style (engaging and conversational, active voice, first-person plural, contractions, clear language for a developer audience).\n2. Verify technical claims against the source where practical (setting names, command IDs, version availability), using the `gh` CLI.\n3. Verify that announced functionality is public in the named channel by the post's publication date. Flag content that presents planned, hidden, internal dogfood, or source-only functionality as available.\n4. Report concrete, practical suggestions grouped by theme. **Do not edit the file** unless the user asks you to apply the changes.\n",".github/skills/write-my-release-notes/SKILL.md":"---\nname: write-my-release-notes\ndescription: 'Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to \"write release notes for my features\", \"document my milestone features\", or \"generate release notes from my issues\". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.'\nargument-hint: '<milestone name>'\n---\n\n# VS Code Release Features Writer\n\nThis skill turns the features you worked on in a VS Code milestone into polished, user-focused release note sections. It gathers the features you own from GitHub using the `gh` CLI, then documents every one of them in the milestone's release notes file.\n\nUse this skill when the user wants to draft or update the feature sections of a milestone's release notes based on the issues and test plan items they worked on.\n\n## Prerequisites\n\n* **Prefer the GitHub MCP server** for all GitHub queries when it is available. Use its issue search and issue read capabilities to run the queries and read the bodies, labels, and comments described below.\n* **Fall back to the `gh` CLI** only when the GitHub MCP server is not available. In that case, ensure it is authenticated (`gh auth status`); the `gh` commands below implement the same queries.\n* Queries use `@me`, so results are scoped to the authenticated user.\n\n## Input parameters\n\n* **Milestone name**: If the user does not provide a milestone name, ask the user for it. Do not continue until you have the milestone name.\n\n## Locate the release notes file\n\n1. Confirm the milestone name with the user.\n1. Find the release notes file under the `/release-notes` folder. The file name does **not** match the milestone name, so search the folder contents for the text `TOCTitle: <milestone name>` (for example, `TOCTitle: April 2016`).\n1. If no file exists for the milestone, create one using the appropriate template in `/templates` and a filename of the form `v<version>.md` (for example, `v1_109.md`).\n\n## Identify features to document\n\nGather the features the user owns by running the following GitHub search queries. Use the **GitHub MCP server** if available; otherwise use the **`gh` CLI** commands shown below. Substitute `<milestone>` with the milestone name (keep the surrounding quotes). Collect each issue's `number`, `title`, `body`, `url`, `labels`, and comments.\n\n### Step 0 — Consult prior context (optional).\nIf you have persistent memory, notes, or prior context about this milestone (coverage decisions, features you own that the label queries won't surface, work intentionally excluded), review it before the GitHub queries and reconcile against the results. Skip if you have none.\n\n### Step 1 — Feature-request issues assigned to you\n\n```bash\ngh search issues 'org:microsoft milestone:\"<milestone>\" label:feature-request assignee:@me' \\\n  --limit 100 --json number,title,body,url,labels,repository\n```\n\nProcess the results:\n\n* **Skip** any issue labeled `*duplicate` or `*out-of-scope`.\n* If an issue is labeled `on-testplan`, **set it aside** — do not document it directly. It will be attached as a related issue to its test plan item in Step 2.\n* All remaining issues are release features to document.\n\n### Step 2 — Test plan items authored by you\n\n```bash\ngh search issues 'repo:microsoft/vscode milestone:\"<milestone>\" label:testplan-item author:@me' \\\n  --limit 100 --json number,title,body,url,labels\n```\n\nEach test plan item is also a release feature to document. List the test plan item features **first**, before the feature-request features from Step 1. For each test plan item, collect related issues that provide the real feature detail:\n\n* **Issues filed against the test plan item** — closed issues that reference it during testing:\n\n    ```bash\n    gh search issues 'repo:microsoft/vscode is:closed Testing <testplan-item-number>' \\\n      --limit 100 --json number,title,body,url,labels\n    ```\n\n* **Set-aside `on-testplan` issues from Step 1** whose issue number appears in the test plan item's body — attach these as related issues too.\n\n### Step 2.5 — Reconcile against all your milestone work (catch mislabeled features)\n\nThe label queries in Steps 1 and 2 only find issues labeled `feature-request` or `testplan-item`. Real features are often tracked under other labels during the endgame — for example a feature that shipped a fix may carry `bug`, `verification-needed`, or `polish` instead. **Do not trust the label queries to be exhaustive.** Run these broader queries and reconcile the results against what Steps 1 and 2 already surfaced:\n\n```bash\ngh search issues --owner microsoft --assignee @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\ngh search issues --owner microsoft --author @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\n```\n\nFor every issue these return that is **not** already covered by Steps 1 and 2, judge it on its content, not its label:\n\n* If it describes a **user-facing capability** (a new command, setting, UI, deep link, workflow), document it as a feature — regardless of whether it is labeled `bug`, `verification-needed`, `polish`, or something else. A \"bug\" that adds or restores a capability users will notice is a release feature.\n* If it is a **pure defect fix, internal cleanup, or minor polish** with no user-facing capability, leave it out of the feature sections (it belongs in \"Notable fixes\" at most).\n* When in doubt, read the body and comments (Step 3) before deciding, and ask the user whether to include it.\n\nIf you have persistent memory or prior context about this milestone (Step 0), cross-check each remembered feature you own against the combined results here — a feature noted in memory but missing from the query output is exactly the kind of item that slips through mislabeling.\n\n### Step 3 — Fetch comments for each issue\n\nThe search queries above may not return comments (the `gh search issues` `--json` output does not include them). For every feature and related issue you plan to use, read the full body and comments for context — use the GitHub MCP server's issue read capability if available, otherwise the `gh` CLI:\n\n```bash\ngh issue view <number> --repo <owner/repo> --json number,title,body,url,labels,comments\n```\n\nDocument **every** feature gathered from Steps 1, 2, and 2.5 — none should be skipped. Most features are identified by one of these labels:\n\n* `feature-request` — a standard feature request issue. Its description and comments contain the feature details.\n* `testplan-item` — a structured test plan for the feature. Its description contains in-depth details plus setup and test steps.\n\nSome features surface only through Step 2.5 under other labels (for example `bug`, `verification-needed`, or `polish`). Treat those as features too when they describe a user-facing capability — the label does not disqualify them.\n\nUse the related issues (from Step 2) to pull in additional context (their summary, description, and comments).\n\n## Build each feature section\n\nGather and analyze all relevant details before writing:\n\n* The summary, description, and comments of the feature itself.\n* The summary, description, and comments of every related issue.\n\nThen write a comprehensive, user-focused section for each feature:\n\n* **Feature title**\n    * Use a concise, descriptive title that identifies the feature. Use sentence case.\n    * Do **not** take the title from a `testplan-item`, because that title is written for testing.\n    * If the feature is in Preview or Experimental, include that status in the heading, for example `### New JavaScript debugging experience (Preview)`.\n* **Feature description**\n    * Do not add a \"Feature Description\" header — start directly with the prose under the heading.\n    * Explain the feature, its purpose, and any constraints users should be aware of.\n    * Never include testing content: no setup, test instructions, or validation steps.\n* **Value proposition** — every section must answer \"Why should the user care?\"\n    * Lead with the user benefit or the problem being solved, then explain the mechanics. State the pain point first, then the resolution.\n    * Avoid describing only what changed. A mechanism (\"buffer-based rendering\") is not a benefit (\"chat responses feel more fluid\").\n    * Link to relevant [VS Code documentation](https://code.visualstudio.com/docs/) when referencing tools, APIs, or concepts that are not common developer knowledge. Expand inline when docs coverage is thin.\n    * For admin and policy features, cover both the administrative use case (compliance, security, cost control) and the developer-productivity impact.\n* **Feature continuity for multi-release features**\n    * For features that span multiple releases (for example, Agents, Customization UI, Sandboxing), add a 1-2 sentence reminder of what the feature is and its goal before describing what changed this release.\n    * The first release of a feature should lead with benefit-oriented bullets. Later releases should still re-establish context.\n\n## Writing guidelines\n\nFollow the [release notes writing instructions](../../instructions/release-notes-writing.instructions.md) first, then the [VS Code documentation writing guidelines](../../instructions/docs-writing.instructions.md). Key rules:\n\n* Use sentence case for headings; do not apply italic, bold, or inline code styling to headings.\n* Use absolute documentation links that start with `https://code.visualstudio.com/docs/` and omit the `.md` suffix. Use descriptive link text — never \"click here\", \"this link\", or \"here\".\n* Image alt text must describe the content and start with \"Screenshot showing\" or \"Screenshot of\". Video alt text must start with \"Video showing\" or \"Video of\" and use the `<video>` tag: `<video src=\"[URL]\" title=\"[description].\" autoplay loop controls muted></video>`.\n* Format notes and tips as block quotes with a bold **Note** or **Tip** prefix. Use asterisks for list items.\n* Reference settings with the `setting(setting.name)` format and keyboard shortcuts with the `kb(command.commandId)` format.\n* Avoid marketing language and the word \"now\". State what changed directly and prefer concrete before/after examples over vague claims like \"improved support\".\n* Group features that share a theme (for example, several agent improvements) and lead with the most impactful one.\n\n## Verify technical details\n\n* Only document settings and commands that actually exist. Verify setting names, values, and command IDs before referencing them.\n* Fact-check all technical details and confirm every link and reference resolves.\n* Keep terminology and structure consistent with existing release notes.\n\n## Writing to the file\n\n* Write **only** the feature documentation sections. Do not add version headers, welcome messages, or update summaries.\n* Start directly with `###` feature headings.\n* Do not leave TODO placeholders.\n* Save the changes to the milestone release notes file.\n","api/references/activation-events.md":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: C83BB647-A37E-45CE-BA4C-837B397C2ABE\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: To support lazy activation of Visual Studio Code extensions (plug-ins), your extension controls when it should be loaded through a set of Activation Events.\n---\n\n# Activation Events\n\n**Activation Events** is a set of JSON declarations that you make in the `activationEvents` field of `package.json` [Extension Manifest](/api/references/extension-manifest). Your extension becomes activated when the **Activation Event** happens. Here is a list of all available **Activation Events**:\n\n- [`onAuthenticationRequest`](/api/references/activation-events#onAuthenticationRequest)\n- [`onChatParticipant`](/api/references/activation-events#onChatParticipant)\n- [`onCommand`](/api/references/activation-events#onCommand)\n- [`onCustomEditor`](/api/references/activation-events#onCustomEditor)\n- [`onDebug`](/api/references/activation-events#onDebug)\n  - [`onDebugAdapterProtocolTracker`](/api/references/activation-events#onDebugAdapterProtocolTracker)\n  - [`onDebugDynamicConfigurations`](/api/references/activation-events#onDebugDynamicConfigurations)\n  - [`onDebugInitialConfigurations`](/api/references/activation-events#onDebugInitialConfigurations)\n  - [`onDebugResolve`](/api/references/activation-events#onDebugResolve)\n- [`onEditSession`](/api/references/activation-events#onEditSession)\n- [`onFileSystem`](/api/references/activation-events#onFileSystem)\n- [`onIssueReporterOpened`](/api/references/activation-events#onIssueReporterOpened)\n- [`onLanguage`](/api/references/activation-events#onLanguage)\n- [`onLanguageModelTool`](/api/references/activation-events#onLanguageModelTool)\n- [`onNotebook`](/api/references/activation-events#onNotebook)\n- [`onOpenExternalUri`](/api/references/activation-events#onOpenExternalUri)\n- [`onRenderer`](/api/references/activation-events#onRenderer)\n- [`onSearch`](/api/references/activation-events#onSearch)\n- [`onStartupFinished`](/api/references/activation-events#onStartupFinished)\n- [`onTaskType`](/api/references/activation-events#onTaskType)\n- [`onTerminal`](/api/references/activation-events.md#onTerminal)\n    - [`onTerminalProfile`](/api/references/activation-events#onTerminalProfile)\n    - [`onTerminalShellIntegration`](/api/references/activation-events.md#onTerminalShellIntegration)\n- [`onUri`](/api/references/activation-events#onUri)\n- [`onView`](/api/references/activation-events#onView)\n- [`onWalkthrough`](/api/references/activation-events#onWalkthrough)\n- [`onWebviewPanel`](/api/references/activation-events#onWebviewPanel)\n- [`workspaceContains`](/api/references/activation-events#workspaceContains)\n- [`*`](/api/references/activation-events#Start-up)\n\nWe also provide a reference of all fields in the [`package.json` extension manifest](/api/references/extension-manifest).\n\n## onLanguage\n\nThis activation event is emitted and interested extensions will be activated whenever a file that resolves to a certain language gets opened.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:python\"\n]\n```\n\nThe `onLanguage` event takes a [language identifier](/docs/languages/identifiers) value.\n\nMultiple languages can be declared with separate `onLanguage` entries in the `activationEvents` array.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:json\",\n    \"onLanguage:markdown\",\n    \"onLanguage:typescript\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, languages contributed by your extension do not require a corresponding `onLanguage` activation event declaration for your extension to be activated.\n\nAdditionally, if your extension needs to be activated before any language is used, you can use the generic `onLanguage` activation event to ensure this:\n\n```json\n\"activationEvents\": [\n    \"onLanguage\"\n]\n```\n\n> **Note**: It is best practice to activate only when a user needs your extension. If your extension works on a subset of languages, it is better for the user to list that subset than to activate on all languages.\n\n## onCommand\n\nThis activation event is emitted and interested extensions will be activated whenever a command is being invoked:\n\n```json\n\"activationEvents\": [\n    \"onCommand:extension.sayHello\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, commands contributed by your extension do not require a corresponding `onCommand` activation event declaration for your extension to be activated.\n\n## onDebug\n\nThis activation event is emitted and interested extensions will be activated before a debug session is started:\n\n```json\n\"activationEvents\": [\n    \"onDebug\"\n]\n```\n\nThese are four more fine-grained `onDebug` activation events:\n\n### onDebugAdapterProtocolTracker\n\n`onDebugAdapterProtocolTracker` is emitted whenever a debug session with the specific type is about to be launched and a debug protocol tracker might be needed.\n\n### onDebugDynamicConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide dynamic debug configurations when the user asks for them, such as through the UI via the \"Select and Start Debugging\" command.\n\nThe presence of this activation event is used as a signal that the extension contributes dynamic debug configurations.\n\n### onDebugInitialConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide initial debug configurations, such as whenever a `launch.json` needs to be created.\n\n### onDebugResolve\n\n`onDebugResolve:type` is fired just before the `resolveDebugConfiguration` method of the `DebugConfigurationProvider` for the specified type is called.\n\n**Rule of thumb:** If activation of a debug extension is lightweight, use `onDebug`. If it is heavyweight, use `onDebugInitialConfigurations` and/or `onDebugResolve` depending on whether the `DebugConfigurationProvider` implements the corresponding methods `provideDebugConfigurations` and/or `resolveDebugConfiguration`. See [Using a DebugConfigurationProvider](/api/extension-guides/debugger-extension#using-a-debugconfigurationprovider) for more details on these methods.\n\n## workspaceContains\n\n`workspaceContains:path` is emitted and interested extensions will be activated whenever a folder is opened and the folder contains at least one file that matches a [glob pattern](/docs/editor/glob-patterns).\n\n```json\n\"activationEvents\": [\n    \"workspaceContains:**/.editorconfig\"\n]\n```\n\n## onFileSystem\n\n`onFileSystem:scheme` is emitted and interested extensions will be activated whenever a file or folder from a specific _scheme_ is read. This is usually the `file`-scheme, but with custom file system providers more schemes come into place, e.g `ftp` or `ssh`.\n\n```json\n\"activationEvents\": [\n    \"onFileSystem:sftp\"\n]\n```\n\n## onView\n\nThis activation event is emitted and interested extensions will be activated whenever a view of the specified id is expanded in the VS Code sidebar. Built-in views do not emit an activation event.\n\nThe activation event below will fire whenever a view with the `nodeDependencies` id is visible:\n\n```json\n\"activationEvents\": [\n    \"onView:nodeDependencies\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, views contributed by your extension do not require a corresponding `onView` activation event declaration for your extension to be activated.\n\n## onUri\n\nThis activation event is emitted and interested extensions will be activated whenever a system-wide Uri for that extension is opened. The Uri scheme is fixed to either `vscode` or `vscode-insiders`. The Uri authority must be the extension's identifier. The rest of the Uri is arbitrary.\n\n```json\n\"activationEvents\": [\n    \"onUri\"\n]\n```\n\nIf the `vscode.git` extension defines `onUri` as an activation event, it will be activated in any of the following Uris are open:\n\n- `vscode://vscode.git/init`\n- `vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git`\n- `vscode-insiders://vscode.git/init` (for VS Code Insiders)\n\n## onWebviewPanel\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to restore a [webview](/api/extension-guides/webview) with the matching `viewType`.\n\nFor example, the declaration of `onWebviewPanel` below:\n\n```json\n\"activationEvents\": [\n    \"onWebviewPanel:catCoding\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a webview with the viewType: `catCoding`. The viewType is set in the call to `window.createWebviewPanel` and you will need to have another activation event (for example, onCommand) to initially activate your extension and create the webview.\n\n## onCustomEditor\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to create a [custom editor](/api/extension-guides/custom-editors) with the matching `viewType`.\n\nFor example, the declaration of `onCustomEditor` below:\n\n```json\n\"activationEvents\": [\n    \"onCustomEditor:catCustoms.pawDraw\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a custom editor with the viewType: `catCustoms.pawDraw`. The viewType is set in the [`customEditors` contribution point](/api/extension-guides/custom-editors#contribution-point) and bound to a provider with `registerCustomEditorProvider`.\n\n> **Note**: Beginning with VS Code 1.74.0, custom editors contributed by your extension do not require a corresponding `onCustomEditor` activation event declaration for your extension to be activated.\n\n## onAuthenticationRequest\n\nThis activation event is emitted and interested extensions will be activated whenever an extension requests an authentication session (via the `authentication.getSession()` API) with the matching `providerId`.\n\nFor example, the declaration of `onAuthenticationRequest` below:\n\n```json\n\"activationEvents\": [\n    \"onAuthenticationRequest:github\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs retrieve an `AuthenticationSession` of type `github`.\n\n> **Note**: Beginning with VS Code 1.74.0, authentication providers contributed by your extension do not require a corresponding `onAuthenticationRequest` activation event declaration for your extension to be activated.\n\n## onStartupFinished\n\nThis activation event is emitted and interested extensions will be activated **some time after** VS Code starts up. This is similar to the `*` activation event, but it will not slow down VS Code startup. Currently, this event is emitted after all the `*` activated extensions have finished activating.\n\n```json\n\"activationEvents\": [\n    \"onStartupFinished\"\n]\n```\n\n## onTaskType\n\n`onTaskType:type` is emitted whenever tasks of a certain type need to be listed or resolved.\n\n```json\n\"activationEvents\": [\n    \"onTaskType:npm\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.76.0, tasks contributed by your extension do not require a corresponding `onTaskType` activation event declaration for your extension to be activated.\n\n## onEditSession\n\n`onEditSession:scheme` is emitted when an edit session is accessed with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onEditSession:file\"\n]\n```\n\n## onSearch\n\n`onSearch:scheme` is emitted when a search is started in the folder with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onSearch:file\"\n]\n```\n\n## onOpenExternalUri\n\nAn activation event emitted whenever an external URI, such as an http or https link, is being opened.\n\n```json\n\"activationEvents\": [\n    \"onOpenExternalUri\"\n]\n```\n\n## onNotebook\n\n`onNotebook:type` is emitted when the specified notebook document type is opened.\n\n```json\n\"activationEvents\": [\n    \"onNotebook:jupyter-notebook\",\n    \"onNotebook:interactive\"\n]\n```\n\n## onRenderer\n\n`onRenderer:id` is emitted when a notebook output renderer is used.\n\n```json\n\"activationEvents\": [\n    \"onRenderer:ms-toolsai.jupyter-renderers\"\n]\n```\n\n## onTerminal\n\n`onTerminal:shellType` is emitted when a specific terminal with the given shell type is opened.\n\n```json\n\"activationEvents\": [\n  \"onTerminal:bash\"\n]\n```\n\n## onTerminalProfile\n\n`onTerminalProfile:id` is emitted when a specific terminal profile is launched.\n\n```json\n\"activationEvents\": [\n    \"onTerminalProfile:terminalTest.terminal-profile\"\n]\n```\n\n## onTerminalShellIntegration\n\n`onTerminalShellIntegration:shellType` is emitted when a terminal with the given shell type has shell integration activated.\n\n```json\n\"activationEvents\": [\n    \"onTerminalShellIntegration:bash\"\n]\n```\n\n## onWalkthrough\n\n`onWalkthrough:id` is emitted when a specified walkthrough is opened.\n\n```json\n\"activationEvents\": [\n    \"onWalkthrough:nodejsWelcome\"\n]\n```\n\n## onIssueReporterOpened\n\nThis activation event is emitted when the issue reporter is opened (for example, by using **Help: Report Issue**).\n\n```json\n\"activationEvents\": [\n    \"onIssueReporterOpened\"\n]\n```\n\n## onChatParticipant\n\nAn activation event emitted when the specified chat participant is invoked.\n\nChat participants are deprecated and are not supported in the Copilot harness. This event remains relevant for Local harness compatibility. See [Replace chat participants](/docs/agent-customization/migrate-customizations.md#replace-chat-participants).\n\n```json\n\"activationEvents\": [\n    \"onChatParticipant:my-chat-participant\"\n]\n```\n\n## onLanguageModelTool\n\nAn activation event emitted when the specified language model tool is invoked.\n\n```json\n\"activationEvents\": [\n    \"onLanguageModelTool:my-language-model-tool\"\n]\n```\n\n## Start up\n\nThe `*` activation event is emitted and interested extensions will be activated whenever VS Code starts up.\n\n> **Note:** To ensure a great user experience, please use this activation event in your extension only when no other activation events combination works in your use-case.\n\n```json\n\"activationEvents\": [\n    \"*\"\n]\n```\n\n> **Note:** An extension can listen to multiple activation events, and that is preferable to listening to `\"*\"`.\n\n> **Note:** An extension **must** export an `activate()` function from its main module and it will be invoked **only once** by VS Code when any of the specified activation events is emitted. Also, an extension **should** export a `deactivate()` function from its main module to perform cleanup tasks on VS Code shutdown. Extension **must** return a Promise from `deactivate()` if the cleanup process is asynchronous. An extension may return `undefined` from `deactivate()` if the cleanup runs synchronously.\n",".github/skills/docs-product-alignment/SKILL.md":"---\nname: docs-product-alignment\ndescription: 'Audit and update docs/copilot/ documentation to accurately reflect current VS Code AI capabilities. Use when: competitive analysis reveals gaps, product launches new features, docs use outdated framing, or keyword coverage needs strengthening for discoverability by users and AI agents. Produces a gap analysis plus targeted edits across affected files.'\n---\n\n# Documentation Product Alignment\n\nAudit VS Code Copilot documentation against current product capabilities and produce targeted, style-compliant edits. Follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md) for all writing rules.\n\n## Guardrails\n\n- **Factual only.** Every claim must map to something the product does today. No superlatives, no competitive comparisons, no invented terminology.\n- **Content framing.** Establish each page's primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Ask the writer before editing when the framing is ambiguous and would change the audit or recommendations.\n- **Two consumers.** The primary persona reads the prose; AI agents and search crawlers index Keywords, MetaDescriptions, and opening paragraphs. Both matter.\n- **Minimal edits.** Change only what is inaccurate, outdated, or missing. One precise sentence beats a rewritten section.\n- **Verifiable.** If you cannot point to a UI element, setting, or documented behavior, do not write it.\n\n## Workflow\n\n1. **Gather context and frame each page.** Read the latest [release notes](/release-notes/), check [github.com/features/copilot](https://github.com/features/copilot), and review any competitive claims or feature matrices the user provides. For each page, record its primary persona, reader intent, and article purpose before proposing edits.\n2. **Audit high-traffic pages.** Read each page and compare against current product truth. Focus on MetaDescriptions, Keywords, opening paragraphs, and terminology.\n3. **Gap analysis.** List what is inaccurate, outdated, or missing. Map each gap to a file and location. Include the page framing in the analysis, and prioritize by page traffic and impact on the primary persona's intent.\n4. **Edit.** Apply targeted changes that support the recorded framing. Vary phrasing across pages to avoid repetition.\n5. **Verify.** Search changed files for banned words, em-dashes, and MetaDescription length violations. Confirm that each changed page still serves its recorded primary persona and reader intent.\n\n**High-traffic pages to always check:**\n- [docs/copilot/overview.md](/docs/copilot/overview.md), [docs/copilot/concepts/overview.md](/docs/agents/concepts/overview.md), [docs/agents/reference/ai-features-cheat-sheet.md](/docs/agents/reference/ai-features-cheat-sheet.md)\n- [docs/copilot/getting-started.md](/docs/copilot/getting-started.md), [docs/agents/overview.md](/docs/agents/overview.md)\n- [docs/agents/reference/workspace-context.md](/docs/agents/reference/workspace-context.md), [docs/agents/agent-troubleshooting/faq.md](/docs/agents/agent-troubleshooting/faq.md)\n\n## Terminology\n\nUse these terms consistently. The \"Avoid\" column lists terms that creep in but should not.\n\n| Concept | Use | Avoid |\n|---------|-----|-------|\n| Autonomous coding sessions | agents | agent mode, agentic workflows |\n| Running without user interaction | background agents | background agent mode |\n| Code suggestions as you type | inline suggestions | code completions, autocomplete |\n| Predicted next edit location | next edit suggestions (NES) | predictive edits |\n| Understanding code across files | workspace context, cross-file reasoning | deep semantic understanding (overuse) |\n| GitHub's search for code context | GitHub's code search | remote search |\n| VS Code's type/symbol analysis | language intelligence (IntelliSense, LSP) | code intelligence |\n| Multiple AI model options | multiple AI models | leading AI models |\n| Plan then implement workflow | Plan agent, implementation agent | planning mode |\n\n## Capability areas\n\nWhen auditing, ensure docs accurately cover these areas:\n\n- **Agents**: plan, implement, verify, parallel sessions, local/background/cloud, third-party support\n- **Context**: semantic search, language intelligence (LSP), GitHub code search, cross-repo awareness\n- **Multi-file editing**: coordinated changes, architecture-level refactoring, framework migrations\n- **Enterprise**: organization policies, model access controls, content exclusions, trust boundaries\n- **SDLC workflow**: Plan agent, implementation agent, Copilot code review, background/cloud handoff\n- **Scale**: large codebases, monorepos, multi-root workspaces, remote indexing\n","api/references/commands.md":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: A010AEDF-EF37-406E-96F5-E129408FFDE1\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: Visual Studio Code built-in commands reference.\n---\n\n# Built-in Commands\n\nThis document lists a subset of Visual Studio Code commands that you might use with `vscode.commands.executeCommand` API.\n\nRead the [Commands guide](/api/extension-guides/command) for how to use the commands API.\n\nThe following is a sample of how to open a new folder in VS Code:\n\n```javascript\nlet uri = Uri.file('/some/path/to/folder');\nlet success = await commands.executeCommand('vscode.openFolder', uri);\n```\n\n>**Note**: You can review the full set of VS Code commands via the Keyboard Shortcuts editor **File** > **Preferences** > **Keyboard Shortcuts**. The Keyboard Shortcuts editor lists all commands built into VS Code or contributed by extensions, along with their keybindings and visibility when clauses.\n\n## Commands\n\n`vscode.executeDataToNotebook` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _data_ - Bytes to convert to data\n* _(returns)_ - Notebook Data\n\n`vscode.executeNotebookToData` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _NotebookData_ - Notebook data to convert to bytes\n* _(returns)_ - Bytes\n\n`notebook.selectKernel` - Trigger kernel picker for specified notebook editor widget\n\n* _options_ - Select kernel options\n* _(returns)_ - no result\n\n`interactive.open` - Open interactive window and return notebook editor and input URI\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Interactive editor title\n* _(returns)_ - Notebook and input URI\n\n`vscode.editorChat.start` - Invoke a new editor chat session\n\n* _Run arguments_ -\n* _(returns)_ - no result\n\n`vscode.executeDocumentHighlights` - Execute document highlight provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of DocumentHighlight-instances.\n\n`vscode.executeDocumentSymbolProvider` - Execute document symbol provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of SymbolInformation and DocumentSymbol instances.\n\n`vscode.executeFormatDocumentProvider` - Execute document format provider.\n\n* _uri_ - Uri of a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatRangeProvider` - Execute range format provider.\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatOnTypeProvider` - Execute format on type provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _ch_ - Trigger character\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeDefinitionProvider` - Execute all definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeTypeDefinitionProvider` - Execute all type definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeDeclarationProvider` - Execute all declaration providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeImplementationProvider` - Execute all implementation providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeReferenceProvider` - Execute all reference providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location-instances.\n\n`vscode.executeHoverProvider` - Execute all hover providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Hover-instances.\n\n`vscode.executeSelectionRangeProvider` - Execute selection range provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of ranges.\n\n`vscode.executeWorkspaceSymbolProvider` - Execute all workspace symbol providers.\n\n* _query_ - Search string\n* _(returns)_ - A promise that resolves to an array of SymbolInformation-instances.\n\n`vscode.prepareCallHierarchy` - Prepare call hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of CallHierarchyItem-instances\n\n`vscode.provideIncomingCalls` - Compute incoming calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyIncomingCall-instances\n\n`vscode.provideOutgoingCalls` - Compute outgoing calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyOutgoingCall-instances\n\n`vscode.prepareRename` - Execute the prepareRename of rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to a range and placeholder text.\n\n`vscode.executeDocumentRenameProvider` - Execute rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _newName_ - The new symbol name\n* _(returns)_ - A promise that resolves to a WorkspaceEdit.\n\n`vscode.executeLinkProvider` - Execute document link provider.\n\n* _uri_ - Uri of a text document\n* _linkResolveCount_ - (optional) Number of links that should be resolved, only when links are unresolved.\n* _(returns)_ - A promise that resolves to an array of DocumentLink-instances.\n\n`vscode.provideDocumentSemanticTokensLegend` - Provide semantic tokens legend for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentSemanticTokens` - Provide semantic tokens for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.provideDocumentRangeSemanticTokensLegend` - Provide semantic tokens legend for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - (optional) A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentRangeSemanticTokens` - Provide semantic tokens for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.executeCompletionItemProvider` - Execute completion item provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger completion when the user types the character, like `,` or `(`\n* _itemResolveCount_ - (optional) Number of completions to resolve (too large numbers slow down completions)\n* _(returns)_ - A promise that resolves to a CompletionList-instance.\n\n`vscode.executeSignatureHelpProvider` - Execute signature help provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger signature help when the user types the character, like `,` or `(`\n* _(returns)_ - A promise that resolves to SignatureHelp.\n\n`vscode.executeCodeLensProvider` - Execute code lens provider.\n\n* _uri_ - Uri of a text document\n* _itemResolveCount_ - (optional) Number of lenses that should be resolved and returned. Will only return resolved lenses, will impact performance\n* _(returns)_ - A promise that resolves to an array of CodeLens-instances.\n\n`vscode.executeCodeActionProvider` - Execute code action provider.\n\n* _uri_ - Uri of a text document\n* _rangeOrSelection_ - Range in a text document. Some refactoring provider requires Selection object.\n* _kind_ - (optional) Code action kind to return code actions for\n* _itemResolveCount_ - (optional) Number of code actions to resolve (too large numbers slow down code actions)\n* _(returns)_ - A promise that resolves to an array of Command-instances.\n\n`vscode.executeDocumentColorProvider` - Execute document color provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of ColorInformation objects.\n\n`vscode.executeColorPresentationProvider` - Execute color presentation provider.\n\n* _color_ - The color to show and insert\n* _context_ - Context object with uri and range\n* _(returns)_ - A promise that resolves to an array of ColorPresentation objects.\n\n`vscode.executeInlayHintProvider` - Execute inlay hints provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to an array of Inlay objects\n\n`vscode.executeFoldingRangeProvider` - Execute folding range provider\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of FoldingRange objects\n\n`vscode.resolveNotebookContentProviders` - Resolve Notebook Content Providers\n\n* _(returns)_ - A promise that resolves to an array of NotebookContentProvider static info objects.\n\n`vscode.executeInlineValueProvider` - Execute inline value provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _context_ - An InlineValueContext\n* _(returns)_ - A promise that resolves to an array of InlineValue objects\n\n`vscode.open` - Opens the provided resource in the editor. Can be a text or binary file, or an http(s) URL. If you need more control over the options for opening a text file, use `vscode.window.showTextDocument` instead.\n\n* _uri_ - Uri of a text or binary file, or an http(s) URL\n* _columnOrOptions_ - (optional) Either the column in which to open, or editor options, see `vscode.TextDocumentShowOptions`\n* _label_ - Editor label (optional)\n* _(returns)_ - no result\n\n`vscode.openWith` - Opens the provided resource with a specific editor.\n\n* _resource_ - Resource to open\n* _viewId_ - Custom editor view id or 'default' to use VS Code's default editor\n* _columnOrOptions_ - (optional) Either the column in which to open or editor options, see vscode.TextDocumentShowOptions\n* _(returns)_ - no result\n\n`vscode.diff` - Opens the provided resources in the diff editor to compare their contents.\n\n* _left_ - Left-hand side resource of the diff editor\n* _right_ - Right-hand side resource of the diff editor\n* _title_ - Human readable title for the diff editor\n* _options_ - (optional) Either the column in which to open, or editor options (see vscode.TextDocumentShowOptions)\n\n`vscode.changes` - Opens a list of resources in the changes editor to compare their contents.\n\n* _title_ - Human readable title for the changes editor\n* _resourceList_ - List of resources to compare\n\n`vscode.prepareTypeHierarchy` - Prepare type hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSupertypes` - Compute supertypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSubtypes` - Compute subtypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.revealTestInExplorer` - Reveals a test instance in the explorer\n\n* _testItem_ - A VS Code TestItem.\n* _(returns)_ - no result\n\n`setContext` - Set a custom context key value that can be used in when clauses.\n\n* _name_ - The context key name\n* _value_ - The context key value\n* _(returns)_ - no result\n\n`cursorMove` - Move cursor to a logical position in the view\n\n* _Cursor move argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory logical position value providing where to move the cursor.\n    ```\n    'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n    'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n    'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n    'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'character', 'halfLine'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'select': If 'true' makes the selection. Default is 'false'.\n\n`editorScroll` - Scroll editor in the given direction\n\n* _Editor scroll argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory direction value.\n    ```\n    'up', 'down'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\n`revealLine` - Reveal the given line at the given logical position\n\n* _Reveal line argument object_ - Property-value pairs that can be passed through this argument:\n  * 'lineNumber': A mandatory line number value.\n  * 'at': Logical position at which line has to be revealed.\n    ```\n    'top', 'center', 'bottom'\n    ```\n\n`editor.unfold` - Unfold the content in the editor\n\n* _Unfold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to unfold. If not set, defaults to 1.\n  * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not\n  set, the active selection(s) will be used.\n\n`editor.fold` - Fold the content in the editor\n\n* _Fold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to fold.\n  * 'direction': If 'up', folds given number of levels up otherwise folds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n  If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\n`editor.toggleFold` - Folds or unfolds the content in the editor depending on its current state\n\n`editor.actions.findWithArgs` - Open a new In-Editor Find Widget with specific options.\n\n* searchString - String to prefill the find input\n* replaceString - String to prefill the replace input\n* isRegex - enable regex\n* preserveCase - try to keep the same case when replacing\n* findInSelection - restrict the find location to the current selection\n* matchWholeWord\n* isCaseSensitive\n\n`editor.action.goToLocations` - Go to locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n* _noResultsMessage_ - Human readable message that shows when locations is empty.\n\n`editor.action.peekLocations` - Peek locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n\n`workbench.action.quickOpen` - Quick access\n\n* _prefix_ -\n\n`notebook.cell.toggleOutputs` - Toggle Outputs\n\n* _options_ - The cell range options\n\n`notebook.fold` - Fold Cell\n\n* _index_ - The cell index\n\n`notebook.unfold` - Unfold Cell\n\n* _index_ - The cell index\n\n`notebook.selectKernel` - Notebook Kernel Args\n\n* _kernelInfo_ - The kernel info\n\n`notebook.cell.changeLanguage` - Change Cell Language\n\n* _range_ - The cell range\n* _language_ - The target cell language\n\n`notebook.execute` - Run All\n\n* _uri_ - The document uri\n\n`notebook.cell.execute` - Execute Cell\n\n* _options_ - The cell range options\n\n`notebook.cell.executeAndFocusContainer` - Execute Cell and Focus Container\n\n* _options_ - The cell range options\n\n`notebook.cell.cancelExecution` - Stop Cell Execution\n\n* _options_ - The cell range options\n\n`workbench.action.findInFiles` - Open a workspace search\n\n* _A set of options for the search_ -\n\n`_interactive.open` - Open Interactive Window\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Notebook editor title\n\n`interactive.execute` - Execute the Contents of the Input Box\n\n* _resource_ - Interactive resource Uri\n\n`search.action.openNewEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openNewEditorToSide` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`vscode.openFolder` - Open a folder or workspace in the current window or new window depending on the newWindow argument. Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder/workspace unless the newWindow parameter is set to true.\n\n* _uri_ - (optional) Uri of the folder or workspace file to open. If not provided, a native dialog will ask the user for the folder\n* _options_ - (optional) Options. Object with the following properties: `forceNewWindow`: Whether to open the folder/workspace in a new window or the same. Defaults to opening in the same window. `forceReuseWindow`: Whether to force opening the folder/workspace in the same window.  Defaults to false. `noRecentEntry`: Whether the opened URI will appear in the 'Open Recent' list. Defaults to false. Note, for backward compatibility, options can also be of type boolean, representing the `forceNewWindow` setting.\n\n`vscode.newWindow` - Opens an new window depending on the newWindow argument.\n\n* _options_ - (optional) Options. Object with the following properties: `reuseWindow`: Whether to open a new window or the same. Defaults to opening in a new window.\n\n`vscode.removeFromRecentlyOpened` - Removes an entry with the given path from the recently opened list.\n\n* _path_ - URI or URI string to remove from recently opened.\n\n`moveActiveEditor` - Move the active editor by tabs or groups\n\n* _Active editor move argument_ - Argument Properties:\n  * 'to': String value providing where to move.\n  * 'by': String value providing the unit for move (by tab or by group).\n  * 'value': Number value providing how many positions or an absolute position to move.\n\n`copyActiveEditor` - Copy the active editor by groups\n\n* _Active editor copy argument_ - Argument Properties:\n  * 'to': String value providing where to copy.\n  * 'value': Number value providing how many positions or an absolute position to copy.\n\n`vscode.getEditorLayout` - Get Editor Layout\n\n* _(returns)_ - An editor layout object, in the same format as vscode.setEditorLayout\n\n`workbench.action.files.newUntitledFile` - New Untitled Text File\n\n* _New Untitled Text File arguments_ - The editor view type or language ID if known\n\n`workbench.extensions.installExtension` - Install the given extension\n\n* _extensionIdOrVSIXUri_ - Extension id or VSIX resource uri\n* _options_ - (optional) Options for installing the extension. Object with the following properties: `installOnlyNewlyAddedFromExtensionPackVSIX`: When enabled, VS Code installs only newly added extensions from the extension pack VSIX. This option is considered only when installing VSIX.\n\n`workbench.extensions.uninstallExtension` - Uninstall the given extension\n\n* _Id of the extension to uninstall_ -\n\n`workbench.extensions.search` - Search for a specific extension\n\n* _Query to use in search_ -\n\n`workbench.action.tasks.runTask` - Run Task\n\n* _args_ - Filters the tasks shown in the Quick Pick\n\n`workbench.action.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`vscode.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`workbench.action.openLogFile` - workbench.action.openLogFile\n\n* _logFile_ -\n\n`workbench.action.openWalkthrough` - Open the walkthrough.\n\n* _walkthroughID_ - ID of the walkthrough to open.\n* _toSide_ - Opens the walkthrough in a new editor group to the side.\n\n## Simple commands\n\nSimple commands that do not require parameters can be found in the Keyboard Shortcuts list in the default `keybindings.json` file. The unbound commands are listed in a comment block at the bottom of the file.\n\nTo review the default `keybindings.json`, run **Preferences: Open Default Keyboard Shortcuts (JSON)** from the Command Palette (`kb(workbench.action.showCommands)`).\n","api/references/contribution-points.md":"# References Skill\n\nPath: `api/references/contribution-points.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/contribution-points.md)","api/references/document-selector.md":"# References Skill\n\nPath: `api/references/document-selector.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/document-selector.md)","api/references/extension-manifest.md":"# References Skill\n\nPath: `api/references/extension-manifest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/extension-manifest.md)","api/references/icons-in-labels.md":"# References Skill\n\nPath: `api/references/icons-in-labels.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/icons-in-labels.md)","api/references/theme-color.md":"# References Skill\n\nPath: `api/references/theme-color.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/theme-color.md)","api/references/when-clause-contexts.md":"# References Skill\n\nPath: `api/references/when-clause-contexts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/when-clause-contexts.md)","docs/agents/agents-handoff-tutorial.md":"# Subagent: agents-handoff-tutorial\n\nPath: `docs/agents/agents-handoff-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-handoff-tutorial.md)","docs/agents/agents-tutorial.md":"# Subagent: agents-tutorial\n\nPath: `docs/agents/agents-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-tutorial.md)","docs/agents/best-practices.md":"# Subagent: best-practices\n\nPath: `docs/agents/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/best-practices.md)","docs/agents/overview.md":"# Subagent: overview\n\nPath: `docs/agents/overview.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/overview.md)","docs/agents/quickstart.md":"# Subagent: quickstart\n\nPath: `docs/agents/quickstart.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/quickstart.md)","learn/agents/1-using-tools-with-agents.md":"# Subagent: 1-using-tools-with-agents\n\nPath: `learn/agents/1-using-tools-with-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/1-using-tools-with-agents.md)","learn/agents/2-extending-agents-with-mcp-servers.md":"# Subagent: 2-extending-agents-with-mcp-servers\n\nPath: `learn/agents/2-extending-agents-with-mcp-servers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/2-extending-agents-with-mcp-servers.md)","learn/agents/3-agent-plugins.md":"# Subagent: 3-agent-plugins\n\nPath: `learn/agents/3-agent-plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/3-agent-plugins.md)","learn/agents/4-using-third-party-agents-in-vs-code.md":"# Subagent: 4-using-third-party-agents-in-vs-code\n\nPath: `learn/agents/4-using-third-party-agents-in-vs-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/4-using-third-party-agents-in-vs-code.md)",".github/skills/release-note-writer/review-procedure.md":"# Release-note-writer Skill\n\nPath: `.github/skills/release-note-writer/review-procedure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/review-procedure.md)",".vscode/extensions/doc-assistant/package.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package.json)",".vscode/extensions/doc-assistant/package-lock.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package-lock.json)",".vscode/extensions/doc-assistant/README.md":"# doc-assistant Documentation\n\nPath: `.vscode/extensions/doc-assistant/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/README.md)",".vscode/extensions/doc-assistant/tsconfig.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/tsconfig.json)","docs/configure/extensions/extension-marketplace.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-marketplace.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-marketplace.md)","docs/configure/extensions/extension-runtime-security.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-runtime-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-runtime-security.md)","docs/configure/extensions/extensions.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extensions.md)","docs/agents/agent-troubleshooting/cache-explorer.md":"# Subagent: cache-explorer\n\nPath: `docs/agents/agent-troubleshooting/cache-explorer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/cache-explorer.md)","docs/agents/agent-troubleshooting/chat-debug-view.md":"# Subagent: chat-debug-view\n\nPath: `docs/agents/agent-troubleshooting/chat-debug-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/chat-debug-view.md)","docs/agents/agent-troubleshooting/faq.md":"# Subagent: faq\n\nPath: `docs/agents/agent-troubleshooting/faq.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/faq.md)","docs/agents/agent-troubleshooting/troubleshooting.md":"# Subagent: troubleshooting\n\nPath: `docs/agents/agent-troubleshooting/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/troubleshooting.md)","docs/agents/concepts/agent-harnesses.md":"# Subagent: agent-harnesses\n\nPath: `docs/agents/concepts/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-harnesses.md)","docs/agents/concepts/agent-host.md":"# Subagent: agent-host\n\nPath: `docs/agents/concepts/agent-host.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-host.md)","docs/agents/concepts/agents.md":"# Subagent: agents\n\nPath: `docs/agents/concepts/agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agents.md)","docs/agents/concepts/context.md":"# Subagent: context\n\nPath: `docs/agents/concepts/context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/context.md)","docs/agents/concepts/customization.md":"# Subagent: customization\n\nPath: `docs/agents/concepts/customization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/customization.md)","docs/agents/concepts/language-models.md":"# Subagent: language-models\n\nPath: `docs/agents/concepts/language-models.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/language-models.md)","docs/agents/concepts/sessions.md":"# Subagent: sessions\n\nPath: `docs/agents/concepts/sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/sessions.md)","docs/agents/concepts/tools.md":"# Subagent: tools\n\nPath: `docs/agents/concepts/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/tools.md)","docs/agents/concepts/trust-and-safety.md":"# Subagent: trust-and-safety\n\nPath: `docs/agents/concepts/trust-and-safety.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/trust-and-safety.md)","docs/agents/guides/browser-agent-testing-guide.md":"# Subagent: browser-agent-testing-guide\n\nPath: `docs/agents/guides/browser-agent-testing-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/browser-agent-testing-guide.md)","docs/agents/guides/code-review-with-copilot.md":"# Subagent: code-review-with-copilot\n\nPath: `docs/agents/guides/code-review-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/code-review-with-copilot.md)","docs/agents/guides/context-engineering-guide.md":"# Subagent: context-engineering-guide\n\nPath: `docs/agents/guides/context-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/context-engineering-guide.md)","docs/agents/guides/customize-copilot-guide.md":"# Subagent: customize-copilot-guide\n\nPath: `docs/agents/guides/customize-copilot-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/customize-copilot-guide.md)","docs/agents/guides/debug-with-copilot.md":"# Subagent: debug-with-copilot\n\nPath: `docs/agents/guides/debug-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/debug-with-copilot.md)","docs/agents/guides/mcp-developer-guide.md":"# Subagent: mcp-developer-guide\n\nPath: `docs/agents/guides/mcp-developer-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/mcp-developer-guide.md)","docs/agents/guides/monitoring-agents.md":"# Subagent: monitoring-agents\n\nPath: `docs/agents/guides/monitoring-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/monitoring-agents.md)","docs/agents/guides/notebooks-with-ai.md":"# Subagent: notebooks-with-ai\n\nPath: `docs/agents/guides/notebooks-with-ai.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/notebooks-with-ai.md)","docs/agents/guides/optimize-usage.md":"# Subagent: optimize-usage\n\nPath: `docs/agents/guides/optimize-usage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/optimize-usage.md)","docs/agents/guides/prompt-engineering-guide.md":"# Subagent: prompt-engineering-guide\n\nPath: `docs/agents/guides/prompt-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-engineering-guide.md)","docs/agents/guides/prompt-examples.md":"# Subagent: prompt-examples\n\nPath: `docs/agents/guides/prompt-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-examples.md)","docs/agents/guides/test-driven-development-guide.md":"# Subagent: test-driven-development-guide\n\nPath: `docs/agents/guides/test-driven-development-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-driven-development-guide.md)","docs/agents/guides/test-with-copilot.md":"# Subagent: test-with-copilot\n\nPath: `docs/agents/guides/test-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-with-copilot.md)","docs/agents/reference/ai-features-cheat-sheet.md":"# Subagent: ai-features-cheat-sheet\n\nPath: `docs/agents/reference/ai-features-cheat-sheet.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-features-cheat-sheet.md)","docs/agents/reference/ai-settings.md":"# Subagent: ai-settings\n\nPath: `docs/agents/reference/ai-settings.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-settings.md)","docs/agents/reference/hooks-reference.md":"# Subagent: hooks-reference\n\nPath: `docs/agents/reference/hooks-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/hooks-reference.md)","docs/agents/reference/mcp-configuration.md":"# Subagent: mcp-configuration\n\nPath: `docs/agents/reference/mcp-configuration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/mcp-configuration.md)","docs/agents/reference/workspace-context.md":"# Subagent: workspace-context\n\nPath: `docs/agents/reference/workspace-context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/workspace-context.md)","docs/agents/run/agent-harnesses.md":"# Subagent: agent-harnesses\n\nPath: `docs/agents/run/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agent-harnesses.md)","docs/agents/run/agents-window.md":"# Subagent: agents-window\n\nPath: `docs/agents/run/agents-window.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agents-window.md)","docs/agents/run/approvals.md":"# Subagent: approvals\n\nPath: `docs/agents/run/approvals.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/approvals.md)","docs/agents/run/artifacts.md":"# Subagent: artifacts\n\nPath: `docs/agents/run/artifacts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/artifacts.md)","docs/agents/run/browser-tools.md":"# Subagent: browser-tools\n\nPath: `docs/agents/run/browser-tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/browser-tools.md)","docs/agents/run/chat-view.md":"# Subagent: chat-view\n\nPath: `docs/agents/run/chat-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/chat-view.md)","docs/agents/run/memory.md":"# Subagent: memory\n\nPath: `docs/agents/run/memory.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/memory.md)","docs/agents/run/planning.md":"# Subagent: planning\n\nPath: `docs/agents/run/planning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/planning.md)","docs/agents/run/remote-agent-sessions.md":"# Subagent: remote-agent-sessions\n\nPath: `docs/agents/run/remote-agent-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/remote-agent-sessions.md)","docs/agents/run/review-code-edits.md":"# Subagent: review-code-edits\n\nPath: `docs/agents/run/review-code-edits.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/review-code-edits.md)","docs/agents/run/security.md":"# Subagent: security\n\nPath: `docs/agents/run/security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/security.md)","docs/agents/run/subagents.md":"# Subagent: subagents\n\nPath: `docs/agents/run/subagents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/subagents.md)","docs/agents/run/tools.md":"# Subagent: tools\n\nPath: `docs/agents/run/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/tools.md)",".github/skills/release-note-writer/examples/v1_109.md":"# Examples Skill\n\nPath: `.github/skills/release-note-writer/examples/v1_109.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/examples/v1_109.md)",".vscode/extensions/doc-assistant/.vscode/launch.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/launch.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/launch.json)",".vscode/extensions/doc-assistant/.vscode/settings.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/settings.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/settings.json)",".vscode/extensions/doc-assistant/.vscode/tasks.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/tasks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/tasks.json)","blogs/2025/03/.github/copilot-instructions.md":"# GitHub Copilot Instructions\n\nPath: `blogs/2025/03/.github/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/blogs/2025/03/.github/copilot-instructions.md)","docs/agents/run/sessions/manage-sessions.md":"# Subagent: manage-sessions\n\nPath: `docs/agents/run/sessions/manage-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/manage-sessions.md)","docs/agents/run/sessions/session-history.md":"# Subagent: session-history\n\nPath: `docs/agents/run/sessions/session-history.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/session-history.md)"},"files":{".github/skills/release-note-writer/SKILL.md":"---\nname: release-note-writer\ndescription: Guidelines for writing and reviewing Insiders and Stable release notes for Visual Studio Code. This also includes instructions for updating release notes for recovery releases.\n---\n# Visual Studio Code Release Note Writer Guidelines\n\nThis skill is designed to help you write release notes for Visual Studio Code Insiders and Stable releases. It provides structured guidelines and examples to ensure consistency and clarity in the release notes.\n\nThere are two main types of release notes you can generate using this skill:\n\n1. **Insiders Release Notes**: These notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\n2. **Stable Release Notes**: These notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\nYour task is help generate these release notes based on the provided guidelines, examples, and templates.\n\n## General writing guidelines for release notes\n\nFollow the guidelines in this order of priority:\n\n1. [Release notes writing instructions](../../instructions/release-notes-writing.instructions.md)\n2. [Visual Studio Code documentation writing guidelines](../../instructions/docs-writing.instructions.md)\n\nBefore writing or retaining an entry, verify that the functionality is available in the public release channel covered by the notes. Public Insiders, Preview, and Experimental functionality qualifies when labeled clearly. Exclude and report internal dogfood, hidden settings or commands, source-only implementation, and manually settable internal feature flags. An internal setting can be referenced only under the narrow exception in the release notes writing instructions: the user must explicitly request the specific reference and then confirm it before you add it.\n\n## Insiders Release Notes\n\nInsiders release notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\nYour task is to generate release notes for the specified VS Code Insiders release version based on GitHub issues and PRs.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no milestone name is specified, check if the milestone name is in the frontmatter, otherwise ask the user for the milestone name.\nIf no label is specified, use the \"feature-request\" label by default.\n\nDO NOT continue until you have the release version and milestone name!!\n\n### File format\n\nIssues are grouped in H2 sections by their closed date. The TOC must be updated to reflect the new sections and issues added.\n\nUse [this template](../../../templates/template-release-note-insiders.md) for the Insiders release notes.\n\nThe [1.109 release notes](./examples/v1_109.md) are a concrete example of an Insiders release note.\n\n### Generation steps\n\n1. If there is not an existing Insiders release note for the specified version, create a new release note file using the Insiders release note template and replace the placeholders.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. Do not insert a banner image or add a statement that the release notes were generated by AI or GitHub Copilot.\n\n1. Get last update date from existing release notes for the specified release version. If no existing release notes, disregard last update date.\n\n1. Run a subagent to fetch all closed GitHub issues in the microsoft/vscode repo for the milestone that have the specified label and closed date as of the latest update date by using the github CLI. Save the JSON in the release note document.\n\n    Use this CLI command: `gh search issues --repo microsoft/vscode --label <label name> --milestone <milestone name> --state closed \"closed:>=<latest update date>\" -L 100`\n\n1. Verify that each candidate is available in the public Insiders build. Exclude and report internal-only candidates instead of creating entries for them.\n\n1. Ignore issues that are marked as duplicate or not planned.\n\n1. For each issue in the JSON result, run a subagent to update the release notes and TOC with a concise, technically accurate summary of the issue. Use associated PRs to verify details, but do not include implementation details in the entry. At the end of the summary, include a link to the GH issue which include the issue number and title (format: #12345: Issue title). Group issues under an H2 section that represents the closed date.\n\n### Phrasing guidelines for Insiders entries\n\n- Treat each entry as a changelog item. Use one short sentence whenever possible.\n- State only the user-visible change and essential configuration or lifecycle information.\n- Add a second sentence only when a constraint, fallback, or compatibility detail is necessary to use the feature correctly.\n- Omit background context, implementation details, testing instructions, and information already clear from the issue link.\n- When describing new capabilities, prefer the format \"Add support for ...\" over \"... now supports ...\". For example, write \"Add support for sorting sessions by date\" rather than \"The sessions view now supports sorting by date\".\n- Avoid using the word \"now\" in entries. State what changed directly instead. For example, write \"Branch names are generated based on the user's prompt\" rather than \"Branch names are now generated based on the user's prompt\".\n\n## Stable Release Notes\n\nStable release notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no release month and year are specified, ask the user for the release month and year.\nDO NOT continue until you have the release version and release month and year!!\n\n### File format\n\nUse [this template](../../../templates/template-release-note-endgame.md) for generating the initial Stable release notes.\n\n### Generation steps\n\n1. If there is not an existing release note for the specified version, create a new release note file using the Stable release note template.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. If there is an existing release note for the specified version, and it's an Insiders release note, replace the content with the Stable release note template content.\n\n1. If there is an existing Stable release note for the specified version, perform a code review of the existing release note to ensure it adheres to the writing guidelines. Suggest improvements as needed.\n\n1. Verify that each feature is available in the Stable release being documented. Exclude and report internal-only features, and do not infer availability from source-code existence alone.\n\n### Value proposition and feature framing\n\nThe [writing instructions](../../instructions/release-notes-writing.instructions.md) define the value-proposition and feature-continuity rules. When writing Stable entries, keep these essentials top of mind:\n\n* Open each entry with the user benefit or the problem being solved, then explain mechanics.\n* For multi-release features, re-establish context in 1-2 sentences so the entry stands on its own.\n* For admin/policy features, cover both the admin use case and the developer-facing impact.\n* Prefer concrete examples and before/after comparisons over vague claims.\n\n### Verify context gaps with the user\n\nAfter a first pass of all feature sections, review the draft for gaps you cannot resolve from the issue, PR, or existing docs. Batch all gaps into a single ask-questions prompt rather than interrupting per section. Ask when:\n\n* **Value prop unclear**: You cannot confidently write a benefit-first opening from the source material.\n* **Multi-release context missing**: A feature builds on prior work but you cannot find earlier entries to reference.\n* **Audience ambiguous**: Framing differs depending on whether the audience is developers, admins, or extension authors.\n* **Docs coverage thin**: A feature references a concept that is undocumented or only mentioned as a sidenote, and you need guidance on how much to explain inline.\n\nFor each gap, include your best-guess draft so the user can confirm or correct rather than write from scratch.\n\nBefore asking, search the `docs/` folder for any referenced concepts. If docs coverage is thorough, link to the page and skip the question. Only flag concepts where coverage is thin or absent.\n\n## Recovery release notes\n\nWhen a recovery release is needed, a note is added to the top of the release notes that links to the issues resolved in the recovery release. In addition, the download version is updated to the recovery release version. The rest of the release notes remain unchanged.\n\nPerform these steps to update the release notes for a recovery release:\n\n1. Update the `DownloadVersion` in the frontmatter to the recovery release version.\n\n1. Add a note at the top of the release notes, right after the release date, that links to the issues resolved in the recovery release:\n\n    ```markdown\n    **Update <recovery version>**: The update addresses these [issues](https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A<recovery version>).\n    ```\n\n    When multiple recovery releases are needed, add the note for each recovery release in chronological order.\n\n\n## Review Procedure\n\nTo review release notes, follow the full [review procedure](./review-procedure.md). This covers both standalone review and post-write validation, with checklists for Insiders and Stable release notes.\n",".github/skills/content-redirect/SKILL.md":"---\nname: content-redirect\ndescription: 'Create and manage redirects in VS Code documentation when pages are moved, renamed, or deleted. Use when moving docs pages, renaming files, restructuring content, or when the user asks about redirects.'\nargument-hint: '<old-path> <new-path>'\n---\n\n# Content Redirect\n\nYou are a redirect specialist for VS Code docs. Your job is to create and manage redirects in `redirection.json` when documentation pages are moved, renamed, or deleted. Each content area has its own `redirection.json` file.\n\n## When to Use\n\nUse this skill whenever:\n\n* A markdown file is **moved** or **renamed** (the URL path changes).\n* A markdown file is **deleted** and its content now lives elsewhere.\n* You are explicitly asked to add a redirect.\n\n## Redirect Files\n\nEach top-level content folder has its own redirect file:\n\n| Content area | Redirect file |\n|-------------|---------------|\n| `docs/`     | `docs/redirection.json` |\n| `api/`      | `api/redirection.json` |\n| `blogs/`    | `blogs/redirection.json` |\n| `remote/`   | `remote/redirection.json` |\n\n## Entry Format\n\nEach redirect is a JSON object with three fields:\n\n```json\n{ \"from\": \"/docs/old/path\", \"to\": \"/docs/new/path\", \"status\": 301 }\n```\n\n| Field    | Description |\n|----------|-------------|\n| `from`   | The old URL path (without file extension, without domain). Must start with `/` followed by the content area prefix (e.g., `/docs/`, `/api/`). |\n| `to`     | The new URL path the old URL should redirect to. Same format as `from`. |\n| `status` | Always `301` (permanent redirect). |\n\n## Procedure\n\n### 1. Determine the old and new paths\n\n- Strip the file extension (`.md`) and the repo-root prefix to get the URL path.\n- Example: moving `docs/copilot/overview.md` → `docs/copilot/getting-started.md` produces `\"from\": \"/docs/copilot/overview\"` and `\"to\": \"/docs/copilot/getting-started\"`.\n- For `index.md` files, the URL path is the folder path without `/index` (e.g., `docs/copilot/index.md` → `/docs/copilot`).\n\n### 2. Identify the correct redirect file\n\nChoose the `redirection.json` that matches the content area of the **old** path (the `from` path).\n\n### 3. Add the redirect entry\n\n- Open the appropriate `redirection.json` file.\n- Append the new entry to the JSON array.\n- Keep the array sorted or append at the end — either is acceptable.\n- Ensure the JSON is valid (proper commas, no trailing comma on the last entry).\n\n### 4. Check for redirect chains\n\nSearch the same `redirection.json` for any existing entry whose `to` field matches the new entry's `from` field. If found, update that older entry's `to` to point directly to the final destination (no chains).\n\n### 5. Update internal links\n\nSearch the repository for any links pointing to the old path and update them to the new path. Use Grep to find references to the old path in markdown files and `toc.json` files and update them accordingly.\n\n### 6. Verify\n\n- Confirm the `redirection.json` file is valid JSON.\n- Confirm no duplicate `from` paths exist in the file.\n- If the file was moved (not deleted), confirm the new file exists at the target path.\n",".github/skills/doc-writer/SKILL.md":"---\nname: doc-writer\ndescription: 'Plan and write VS Code documentation for a new or updated feature. ALWAYS use this skill when the user asks to \"document\", \"add docs for\", \"write docs for\", or \"update the docs for\" a feature, or provides a GitHub issue/PR link to document — even if the change seems small. Proposes a documentation plan and asks clarifying questions first — it does not edit any files until you approve the plan.'\nargument-hint: 'Feature to document, or a link to the relevant issue/PR.'\n---\n\n# Document a Feature\n\nHelp document a new or updated VS Code feature in the project documentation (the `docs/` folder) and keep its required navigation metadata current. This skill works in two phases: it first **researches the feature and proposes a documentation plan**, then implements the changes **only after you approve**. It is acceptable to conclude that no documentation update is needed.\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these — do not start editing docs directly without first running Phase 1:\n\n* The user says \"document this\", \"document this functionality/feature\", \"add docs for…\", \"write docs for…\", or \"update the docs for…\".\n* The user pastes a GitHub issue or PR link and asks you to document or address it in the docs.\n* Documenting a new or changed VS Code or GitHub Copilot feature.\n* Turning a GitHub issue or PR into concrete `docs/` updates.\n* Auditing whether existing docs need updating after a feature change.\n\nThis applies even when the change looks small (a clarification, a few added steps, a single section). Run the plan-first workflow rather than jumping straight to edits.\n\nDo **not** use this skill for release notes, API reference docs, redirects, image swaps, or pure copy-edits — those are handled by other skills (`release-note-writer`, `content-redirect`, `frontmatter-description`) or direct edits.\n\n## Guardrails\n\n* **Docs and sitemap only.** Limit content changes to the `docs/` folder. When you add an article or change an article URL, update `build/sitemap.xml` in the same change. Do **not** update release notes or API docs (`api/`) unless the user explicitly asks.\n* **Public functionality only.** Do not add or retain documentation for internal builds, dogfood-only functionality, hidden settings or commands, source-only implementation, or manually settable internal feature flags.\n* **Never edit `enterprise/policies.md`.** This file is generated from the enterprise policy definitions in the VS Code source. Edit `enterprise/policies-template.md` instead, which is used to regenerate `policies.md`.\n* **Screenshots are human work.** When a screenshot needs to be added or updated, insert a `TODO` comment in the doc for a human to capture and insert it later — do not fabricate image references.\n* **Style compliance.** All writing must follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## Phase 1 — Research & Propose a Plan (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the feature.** Read the feature description, issue, or PR provided. If the description is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Infer them from the existing content, documentation journey, source material, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the content, ask the writer to confirm before planning edits.\n3. **Check the source if needed.** To understand the implementation, inspect the source code in the `microsoft/vscode` repo. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being documented | Primary source repo |\n   |----------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n   | Enterprise policies | `microsoft/vscode` (policy definitions) |\n\n4. **Verify public availability.** Check every feature, setting, and command against the public product channel intended for the article. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Inspect registration metadata, product quality gates, feature flags, and the relevant public release. Treat metadata such as `included: false` as internal unless product evidence shows otherwise. If functionality is not public, do not document it. During an audit or review, propose removing existing coverage.\n5. **Identify affected docs.** Search the `docs/` folder for the pages that need to be created or updated. Map each change to a specific file and section. Include `docs/toc.json` and `build/sitemap.xml` in the plan when you add an article or change an article URL.\n6. **Present the plan.** Summarize:\n   * The primary persona, reader intent, and article purpose.\n   * Which `docs/` files and required navigation metadata you propose to create or change, and a short description of each edit.\n   * Any `TODO` screenshot placeholders that will be needed.\n   * Open questions or assumptions.\n\n   If you conclude that **no documentation update is needed**, say so and ask the user to confirm before closing out.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the plan (or adjusts it).\n\n## Phase 2 — Confirm the Branch & Implement (after approval)\n\nOnce the user approves the plan:\n\n1. **Confirm the branch before editing.** Use the user-question tool to ask whether to create a new branch from `main` before implementing the documentation updates. Offer these choices:\n   * `Yes, create a new branch from main (Recommended)`\n   * `No, continue on the current branch`\n\n   Do not modify documentation files until the user answers. If the user chooses a new branch, ask for a branch name unless they already supplied one, then create the branch from `main` before editing. If uncommitted changes prevent safe branch creation, stop and explain the conflict instead of stashing or reverting changes. If the user chooses the current branch, continue without changing branches.\n2. Apply the documentation edits exactly as agreed, following the [docs-writing style guide](../../instructions/docs-writing.instructions.md) and the approved content framing.\n3. Add `TODO` comments where screenshots need to be captured by a human.\n4. Respect the guardrails above (docs content and required sitemap updates only; no release notes/API docs unless asked; never edit generated `policies.md`).\n5. Verify that the introduction, main content, examples, and next steps serve the approved primary persona and reader intent.\n6. Summarize the changes you made and call out any remaining `TODO`s for the user.\n\n## Orchestrate your documentation updates\n\n- Act as a reviewer and coordinator\n- Delegate work to GPT-5.6 Sol subagents, in parallel when feasible.\n- The subagents should not themselves run validation on their work, that's your job! You own the plan; delegate work in parallel when reasonable.\n- Monitor the progress of subagents and integrate their contributions into the final documentation.\n",".github/skills/frontmatter-description/SKILL.md":"---\nname: frontmatter-description\ndescription: 'Check and optimize MetaDescription frontmatter fields in VS Code documentation. Use when auditing, adding, or improving page descriptions for SEO and discoverability. Apply this when making content changes to markdown articles.'\n---\n\n# Frontmatter Description\n\nCheck and optimize `MetaDescription` frontmatter fields in markdown documentation files. Produces actionable fixes for descriptions that violate the rules below.\n\n## When to Use\n\n* Adding or editing a documentation page and need to write a `MetaDescription`.\n* Auditing existing pages for SEO or discoverability improvements.\n* Asked to check, review, or optimize frontmatter descriptions.\n* Editing content articles and want to ensure the `MetaDescription` reflects the updated content.\n\n## Rules\n\nEvery `MetaDescription` value must satisfy **all** of the following:\n\n| Rule | Detail |\n|------|--------|\n| **Length** | Maximum 160 characters. |\n| **Tone** | Action-oriented, value-focused, factual, and impersonal. |\n| **Voice** | No \"you can\", \"users can\", or \"this page explains\". |\n| **Sentences** | Complete sentences, not fragments or labels. |\n| **No colons** | Do not include `:` in the value — it breaks YAML parsing. |\n| **Uniqueness** | Each description must be unique across the docs. |\n| **Reusable variables** | Preserve existing `{% data variables.<group>.<name> %}` references. Do not replace them with rendered product names. |\n\nDescriptions must also reflect the page's primary persona, reader intent, and article purpose. Establish that framing by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing) before suggesting or applying a description. If the existing page and writer's request support multiple materially different interpretations, ask the writer to confirm the framing before editing.\n\n## Procedure\n\n### 1. Identify target files\n\nDetermine which files to check:\n\n* If given specific files, use those.\n* If asked to audit a folder (e.g., `docs/copilot/`), find all `.md` files in that folder recursively.\n* Skip files that have no YAML frontmatter (e.g., `README.md` files without `---` delimiters).\n\n### 2. Extract and validate\n\nFor each file, read enough of the page to identify its primary persona, reader intent, and article purpose. Then read the YAML frontmatter and check the `MetaDescription` field:\n\n1. **Missing** — Flag if `MetaDescription` is absent.\n2. **Length** — Flag if the value exceeds 160 characters. Report the current length.\n3. **Voice** — Flag if it contains \"you can\", \"users can\", \"this page explains\", or similar reader-addressing phrases.\n4. **Tone** — Flag if the description is a fragment, a label, or passive rather than action-oriented.\n5. **Context** — Flag if the description does not mention the relevant feature or tool.\n6. **Content alignment** — Flag if the description does not represent the page's purpose or the outcome sought by its primary persona.\n7. **Forbidden words** — Flag any occurrence of \"teaching\", \"enable\", \"disable\", or condescending terms.\n8. **Colons** — Flag any `:` character in the value.\n9. **Versions** — Flag any version numbers (e.g., \"v1.90\", \"VS Code 1.90\").\n10. **Formatting** — Flag Jinja2 variables (`{{...}}`), HTML tags, or Markdown formatting. Do not flag supported reusable data variables (`{% data variables.<group>.<name> %}`).\n11. **Reusable variables** — When a description contains a reusable data variable, verify that its full path exists in [`data/variables`](../../../data/variables/README.md) and resolves to the intended text. Preserve valid variables exactly as written.\n\n### 3. Report findings\n\nPresent results as a table:\n\n```\n| File | Issue | Current value | Suggested fix |\n|------|-------|---------------|---------------|\n```\n\n* Group by file path.\n* For each issue, provide the current `MetaDescription` and a rewritten suggestion that passes all rules.\n* If a description passes all checks, omit it from the table (or mark it as passing if the user asked for a full report).\n\n### 4. Apply fixes (when asked)\n\n* Edit the `MetaDescription` value in the YAML frontmatter.\n* Do not change any other frontmatter fields.\n* Do not alter the page body content.\n* Preserve existing reusable data variables. Never replace a variable with its rendered product name.\n* Verify the fix passes all rules and reflects the confirmed page framing before applying.\n\n## Examples\n\n**Good descriptions:**\n\n* `Get AI-powered inline suggestions from GitHub Copilot in VS Code, including ghost text completions and next edit suggestions.`\n* `Configure and manage extensions in Visual Studio Code to customize your development environment.`\n* `Debug Python applications in Visual Studio Code with breakpoints, variable inspection, and integrated terminal output.`\n* `Build a web app with an AI agent in {% data variables.product.prodname_vscode_shortname %}, then review and validate the result.`\n\n**Bad descriptions and why:**\n\n| Description | Problem |\n|-------------|---------|\n| `This page explains how to use Copilot.` | Uses \"this page explains\". |\n| `You can debug your code with VS Code.` | Uses \"you can\". |\n| `Copilot` | Fragment, not a sentence. |\n| `Learn how to enable the new feature in VS Code 1.90.` | Uses \"enable\" and includes a version number. |\n| `Set up debugging: configure launch.json for Python.` | Contains a colon. |\n",".github/skills/pr-review/SKILL.md":"---\nname: pr-review\ndescription: 'Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode and microsoft/vscode-copilot-chat. Use when reviewing a docs PR for factual correctness — setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.'\nargument-hint: '<PR number or branch> (defaults to the current PR / branch)'\n---\n\n# PR Technical Accuracy Review\n\nReview a vscode-docs pull request and verify every factual claim about VS Code behavior against the source code in `microsoft/vscode` and `microsoft/vscode-copilot-chat`. Produce an actionable list of findings the author can address before merging.\n\nThis skill checks **technical accuracy only**. It does not enforce writing style, frontmatter, or release-notes structure — use the `release-note-writer` or `frontmatter-description` skills for those.\n\n## When to Use\n\n* Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.\n* Auditing existing docs for drift after a feature has changed.\n* Asked to \"fact-check\", \"verify\", or \"validate\" a docs change against the product.\n* Before merging a PR that touches `docs/`, `api/`, `remote/`, or release-notes content tied to a specific behavior.\n\nDo **not** use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.\n\n## Repos to Check\n\n| Area being documented | Primary source repo(s) |\n|----------------------|------------------------|\n| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat | `microsoft/vscode-copilot-chat` |\n| Extension API, contribution points, `package.json` schema | `microsoft/vscode` (under `src/vs/workbench/api/`, `src/vscode-dts/`, and `extensions/`) |\n| Enterprise policies | `microsoft/vscode` (policy definitions) — note that `enterprise/policies.md` is generated; verify against source, not the generated file |\n\nUse the `gh` CLI for all GitHub interactions (see user memory `gh-cli-powershell.md` for PowerShell-specific patterns).\n\n## Procedure\n\n### 1. Identify the PR and its diff\n\n* If a PR number was given, run `gh pr view <number> --json number,title,headRefName,baseRefName,files,body` to get metadata and the file list.\n* If no argument was given, run `gh pr view --json ...` to use the PR for the current branch. If there is no associated PR, fall back to `git diff origin/main...HEAD`.\n* Get the actual changed lines with `gh pr diff <number>` (or `git diff` for a branch).\n* Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).\n\n### 2. Extract verifiable claims\n\nWalk the diff and build a list of every claim that can be checked against source code. Include line numbers from the new file content. Categories to look for:\n\n| Category | Examples |\n|----------|----------|\n| **Setting** | `editor.fontSize`, `chat.agent.enabled`, default values, allowed enum values, deprecation status |\n| **Command** | Command IDs (`workbench.action.*`), command palette titles, the action they perform |\n| **Keybinding** | Default key bindings, `when` clauses, platform-specific overrides |\n| **Menu / UI label** | Menu item text, button labels, view titles, walkthrough step titles |\n| **API** | Names, signatures, and shapes in `vscode.d.ts` / `vscode.proposed.*.d.ts` |\n| **Contribution point** | `package.json` schema entries (`contributes.*`), required fields |\n| **Chat tool / participant** | Tool names, participant IDs, tool input/output schemas, agent mode availability |\n| **MCP** | Server config schema, supported transports, capability flags |\n| **Version availability** | \"Available since 1.X\" / \"New in 1.X\" claims |\n| **Default behavior** | What happens out-of-the-box, what is on/off by default |\n| **Policy** | Policy names, supported values, scope |\n\nTreat anchor-style references (e.g., `setting(chat.agent.enabled)`, `command:workbench.action.X`) as claims to verify.\n\n### 3. Verify each claim\n\nFor every claim, locate the source of truth and compare. Prefer one targeted lookup per claim — do not download full files when a search will do.\n\n**Search the source repos** (parallelize independent lookups):\n\n* `gh search code --repo microsoft/vscode '\"<exact-string>\"'` for setting IDs, command IDs, contribution keys.\n* `gh search code --repo microsoft/vscode-copilot-chat '\"<exact-string>\"'` for chat tool names, participant IDs, agent-mode flags.\n* `gh api \"search/code?q=<query>+repo:microsoft/vscode\"` when the `gh search` CLI quotes the query in a way that breaks qualifiers (see user memory `gh-cli-powershell.md`).\n* `gh api repos/microsoft/vscode/contents/<path>?ref=main` to read a specific file.\n\n**Where things live (common starting points):**\n\n* Settings — search for `'<setting.id>'` near `registerConfiguration` calls; default values are in the `default:` field of the schema.\n* Commands — search for `CommandsRegistry.registerCommand` or `registerAction2` with the matching `id`.\n* Keybindings — search for `KeybindingsRegistry.registerKeybindingRule` or look in `src/vs/workbench/browser/parts/editor/...` and feature folders.\n* Extension API — `src/vscode-dts/vscode.d.ts` (stable) and `src/vscode-dts/vscode.proposed.*.d.ts` (proposed).\n* Chat tools — search `microsoft/vscode-copilot-chat` for `displayName`, `toolReferenceName`, or the tool ID string.\n* Contribution points — `extensions/<ext>/package.json` and the schema in `src/vs/workbench/api/common/extHost*.ts`.\n\n**Version availability** — when a doc claims \"since 1.X\":\n\n* `gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X` to see if the symbol existed in that branch, or\n* `gh search commits --repo microsoft/vscode '<symbol>'` to find when it was introduced.\n\nIf a claim cannot be verified after a reasonable search, mark it **Unverified** rather than failing it — the author may have access to context the source does not expose.\n\n### 4. Categorize each finding\n\n| Severity | Use when |\n|----------|----------|\n| **Error** | The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |\n| **Warning** | The claim is partially correct but misleading (default changed in a recent release, behavior is platform-specific and the doc does not say so, feature is behind a setting the doc does not mention). |\n| **Suggestion** | Optional clarification — link to the source, add a \"since 1.X\" note, mention a related setting. |\n| **Unverified** | Could not locate the source of truth; ask the author to confirm. |\n\n### 5. Produce the findings list\n\nOutput a Markdown report with this structure:\n\n```markdown\n## PR Accuracy Review: #<number> — <title>\n\n**Files reviewed:** <count>\n**Claims checked:** <count>\n**Result:** <Pass | Pass with warnings | Needs changes>\n\n### Errors\n\n* **`<file>`:L<line>** (`<category>`) — <one-line description>\n  * Doc says: `<quoted text>`\n  * Source: `<repo>/<path>#L<line>` — <what the source actually says>\n  * Fix: <specific suggested correction>\n\n### Warnings\n\n* ...\n\n### Suggestions\n\n* ...\n\n### Unverified\n\n* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.\n```\n\nRules for the report:\n\n* Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the `fileLinkification` rules.\n* For source-code citations, include the repo, file path, and (when known) line or commit. A `gh`-friendly URL is fine: `https://github.com/microsoft/vscode/blob/main/<path>#L<line>`.\n* Quote the doc text exactly so the author can search for it.\n* Keep each finding to one issue — split combined problems into separate items.\n* If everything checks out, say so explicitly and skip the empty sections.\n\n### 6. Summary\n\nEnd with:\n\n* Counts by severity.\n* An overall verdict: **Pass**, **Pass with warnings**, or **Needs changes** (any Errors → Needs changes).\n* A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.\n\n## Notes\n\n* Do **not** push commits or post review comments on the PR unless the user explicitly asks. This skill produces a report for the user to act on.\n* Do **not** edit `enterprise/policies.md` — it is generated; flag policy issues against `enterprise/policies-template.md` and the source policy definitions instead.\n* When the doc references screenshots or videos, do not attempt to verify their contents — only verify any captions, labels, or alt text that make factual claims.\n* Prefer `main` as the source-of-truth ref unless the PR explicitly documents behavior on a release branch or Insiders-only feature, in which case check `release/1.X` or recent commits accordingly.\n",".github/copilot-instructions.md":"# VS Code Docs Writing Guidelines\n\nFollow the [documentation writing guidelines](instructions/docs-writing.instructions.md) when reviewing or writing documentation.\n",".github/agents/code-reviewer.agent.md":"---\nname: Code Reviewer Agent\ndescription: 'Code Reviewer Agent: Reviews code changes for quality, style, and best practices.'\nargument-hint: 'Provide the code changes or pull request details you want reviewed.'\ntools: ['read', 'search', 'web', 'agent', 'todo']\n---\nPlease review the provided code changes or pull request details for quality, style, and adherence to best practices. Provide constructive feedback and suggest improvements where necessary.\n",".github/skills/blog-writer/SKILL.md":"---\nname: blog-writer\ndescription: 'Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to \"write a blog post\", \"draft a blog\", \"add a blog post for\", \"review this blog post\", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.'\nargument-hint: 'Topic to blog about (or a link to the relevant issue/PR), or a blog post to review.'\n---\n\n# Write or Review a Blog Post\n\nHelp author a new VS Code blog post or review an existing one in the `blogs/` folder. The skill has two modes:\n\n* **Write mode** works in two phases: it first **researches the topic and proposes an outline**, then drafts the post **only after you approve**.\n* **Review mode** evaluates an existing draft for clarity, conciseness, and style, and reports concrete suggestions without editing unless asked.\n\nAll work must follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md), which in turn builds on the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these:\n\n* The user says \"write a blog post\", \"draft a blog\", \"add a blog post for…\", or \"announce this on the blog\".\n* The user pastes a GitHub issue or PR link and asks you to turn it into a blog post.\n* The user asks you to \"review this blog post\", check a draft, or improve an existing post in `blogs/`.\n* Announcing or explaining a new or changed VS Code or GitHub Copilot feature in a narrative, conversational format.\n\nFor new posts, run the plan-first workflow rather than jumping straight to a draft, even when the topic seems small.\n\nDo **not** use this skill for reference documentation, release notes, or API docs. Those are handled by other skills (`doc-writer`, `release-note-writer`) or direct edits. If the user wants reference docs rather than a narrative post, switch to `doc-writer`.\n\n## Guardrails\n\n* **Blogs only.** Limit changes to the `blogs/` folder. Do **not** update reference docs, release notes, or API docs as part of this skill.\n* **Public functionality only.** Announce functionality only when it is publicly available in the named channel by the post's publication date. Do not announce internal dogfood or source-only functionality.\n* **Folder structure.** A new post MUST live in `blogs/<year>/<month>/<day>/` with each date level as its own subfolder. Store images and the social image alongside the post.\n* **Frontmatter is required.** Every post needs the YAML frontmatter fields from the style guide (`Order`, `TOCTitle`, `PageTitle`, `MetaDescription`, `MetaSocialImage`, `Date`, `Author`). `Order` must be unique and higher than the most recent post, so check existing posts before assigning it.\n* **Images and screenshots are human work.** When a hero image or screenshot is needed, insert a `TODO` comment for a human to capture and add it later. Do not fabricate image references or invent file names beyond the placeholder.\n* **Style compliance.** Follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md): engaging, conversational tone, active voice, first-person plural (\"we\"), contractions, and a closing call to action ending with `Happy coding! 💙`.\n\n## Phase 1 — Research & Propose an Outline (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the topic.** Read the feature description, issue, or PR provided. If it is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and narrative purpose by following the [blog content-framing guidance](../../instructions/blog-writing.instructions.md#content-framing). Infer them from the topic, source material, existing coverage, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the angle, ask the writer to confirm before proposing the outline.\n3. **Check the source if needed.** To understand the feature, inspect the source code in the `microsoft/vscode` and `microsoft/vscode-copilot-chat` repos. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being written about | Primary source repo |\n   |--------------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n\n4. **Verify public availability.** Confirm that each announced capability is available to users in the named public channel by the publication date. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Exclude planned, hidden, internal dogfood, and source-only functionality.\n5. **Determine placement and metadata.** Decide the target folder (`blogs/<year>/<month>/<day>/`) and the next available `Order` value by checking recent posts. Confirm the author name and social media profile link with the user if unknown.\n6. **Present the outline.** Summarize:\n   * The primary persona, reader intent, and narrative purpose.\n   * The proposed title, target folder path, and draft frontmatter values.\n   * A section-by-section outline (H2 headings) with a one-line description of each.\n   * Any `TODO` image placeholders that will be needed (hero/social image, inline screenshots).\n   * Open questions or assumptions.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the outline (or adjusts it).\n\n## Phase 2 — Draft the Post (after approval)\n\nOnce the user approves the outline:\n\n1. Create the post at `blogs/<year>/<month>/<day>/<slug>.md` with complete YAML frontmatter.\n2. Write the body following the approved content framing and the content structure from the style guide:\n   * An H1 title, followed by a byline `<Month> <day>, <year> by [<author>](<social link>)` and a blank line.\n   * A brief introduction that summarizes the main points.\n   * H2 sections as outlined, in an engaging, conversational tone using active voice, \"we\", and contractions.\n   * Images via relative paths with descriptive alt text. Use absolute URLs for links to documentation articles.\n   * A closing call to action, ending with `Happy coding! 💙`.\n3. Add `TODO` comments where images or screenshots need to be captured by a human.\n4. Verify that the opening, examples, terminology, key takeaways, and call to action serve the approved primary persona and reader intent.\n5. Summarize the post you created and call out any remaining `TODO`s for the user.\n\n## Review Mode\n\nWhen the user asks you to review an existing blog post instead of writing one:\n\n1. Read the draft and check it against the [blog-writing style guide](../../instructions/blog-writing.instructions.md):\n   * Content framing (a clear primary persona, reader intent, and narrative purpose reflected consistently throughout the post).\n   * Frontmatter completeness and correctness (all required fields, unique `Order`, `MetaDescription` under 160 chars, `TOCTitle` under 30 chars).\n   * Folder structure (`blogs/<year>/<month>/<day>/`).\n   * Content structure (H1 title, byline, intro, H2 sections, alt text on images, absolute URLs for doc links, closing call to action ending with `Happy coding! 💙`).\n   * Writing style (engaging and conversational, active voice, first-person plural, contractions, clear language for a developer audience).\n2. Verify technical claims against the source where practical (setting names, command IDs, version availability), using the `gh` CLI.\n3. Verify that announced functionality is public in the named channel by the post's publication date. Flag content that presents planned, hidden, internal dogfood, or source-only functionality as available.\n4. Report concrete, practical suggestions grouped by theme. **Do not edit the file** unless the user asks you to apply the changes.\n",".github/skills/write-my-release-notes/SKILL.md":"---\nname: write-my-release-notes\ndescription: 'Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to \"write release notes for my features\", \"document my milestone features\", or \"generate release notes from my issues\". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.'\nargument-hint: '<milestone name>'\n---\n\n# VS Code Release Features Writer\n\nThis skill turns the features you worked on in a VS Code milestone into polished, user-focused release note sections. It gathers the features you own from GitHub using the `gh` CLI, then documents every one of them in the milestone's release notes file.\n\nUse this skill when the user wants to draft or update the feature sections of a milestone's release notes based on the issues and test plan items they worked on.\n\n## Prerequisites\n\n* **Prefer the GitHub MCP server** for all GitHub queries when it is available. Use its issue search and issue read capabilities to run the queries and read the bodies, labels, and comments described below.\n* **Fall back to the `gh` CLI** only when the GitHub MCP server is not available. In that case, ensure it is authenticated (`gh auth status`); the `gh` commands below implement the same queries.\n* Queries use `@me`, so results are scoped to the authenticated user.\n\n## Input parameters\n\n* **Milestone name**: If the user does not provide a milestone name, ask the user for it. Do not continue until you have the milestone name.\n\n## Locate the release notes file\n\n1. Confirm the milestone name with the user.\n1. Find the release notes file under the `/release-notes` folder. The file name does **not** match the milestone name, so search the folder contents for the text `TOCTitle: <milestone name>` (for example, `TOCTitle: April 2016`).\n1. If no file exists for the milestone, create one using the appropriate template in `/templates` and a filename of the form `v<version>.md` (for example, `v1_109.md`).\n\n## Identify features to document\n\nGather the features the user owns by running the following GitHub search queries. Use the **GitHub MCP server** if available; otherwise use the **`gh` CLI** commands shown below. Substitute `<milestone>` with the milestone name (keep the surrounding quotes). Collect each issue's `number`, `title`, `body`, `url`, `labels`, and comments.\n\n### Step 0 — Consult prior context (optional).\nIf you have persistent memory, notes, or prior context about this milestone (coverage decisions, features you own that the label queries won't surface, work intentionally excluded), review it before the GitHub queries and reconcile against the results. Skip if you have none.\n\n### Step 1 — Feature-request issues assigned to you\n\n```bash\ngh search issues 'org:microsoft milestone:\"<milestone>\" label:feature-request assignee:@me' \\\n  --limit 100 --json number,title,body,url,labels,repository\n```\n\nProcess the results:\n\n* **Skip** any issue labeled `*duplicate` or `*out-of-scope`.\n* If an issue is labeled `on-testplan`, **set it aside** — do not document it directly. It will be attached as a related issue to its test plan item in Step 2.\n* All remaining issues are release features to document.\n\n### Step 2 — Test plan items authored by you\n\n```bash\ngh search issues 'repo:microsoft/vscode milestone:\"<milestone>\" label:testplan-item author:@me' \\\n  --limit 100 --json number,title,body,url,labels\n```\n\nEach test plan item is also a release feature to document. List the test plan item features **first**, before the feature-request features from Step 1. For each test plan item, collect related issues that provide the real feature detail:\n\n* **Issues filed against the test plan item** — closed issues that reference it during testing:\n\n    ```bash\n    gh search issues 'repo:microsoft/vscode is:closed Testing <testplan-item-number>' \\\n      --limit 100 --json number,title,body,url,labels\n    ```\n\n* **Set-aside `on-testplan` issues from Step 1** whose issue number appears in the test plan item's body — attach these as related issues too.\n\n### Step 2.5 — Reconcile against all your milestone work (catch mislabeled features)\n\nThe label queries in Steps 1 and 2 only find issues labeled `feature-request` or `testplan-item`. Real features are often tracked under other labels during the endgame — for example a feature that shipped a fix may carry `bug`, `verification-needed`, or `polish` instead. **Do not trust the label queries to be exhaustive.** Run these broader queries and reconcile the results against what Steps 1 and 2 already surfaced:\n\n```bash\ngh search issues --owner microsoft --assignee @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\ngh search issues --owner microsoft --author @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\n```\n\nFor every issue these return that is **not** already covered by Steps 1 and 2, judge it on its content, not its label:\n\n* If it describes a **user-facing capability** (a new command, setting, UI, deep link, workflow), document it as a feature — regardless of whether it is labeled `bug`, `verification-needed`, `polish`, or something else. A \"bug\" that adds or restores a capability users will notice is a release feature.\n* If it is a **pure defect fix, internal cleanup, or minor polish** with no user-facing capability, leave it out of the feature sections (it belongs in \"Notable fixes\" at most).\n* When in doubt, read the body and comments (Step 3) before deciding, and ask the user whether to include it.\n\nIf you have persistent memory or prior context about this milestone (Step 0), cross-check each remembered feature you own against the combined results here — a feature noted in memory but missing from the query output is exactly the kind of item that slips through mislabeling.\n\n### Step 3 — Fetch comments for each issue\n\nThe search queries above may not return comments (the `gh search issues` `--json` output does not include them). For every feature and related issue you plan to use, read the full body and comments for context — use the GitHub MCP server's issue read capability if available, otherwise the `gh` CLI:\n\n```bash\ngh issue view <number> --repo <owner/repo> --json number,title,body,url,labels,comments\n```\n\nDocument **every** feature gathered from Steps 1, 2, and 2.5 — none should be skipped. Most features are identified by one of these labels:\n\n* `feature-request` — a standard feature request issue. Its description and comments contain the feature details.\n* `testplan-item` — a structured test plan for the feature. Its description contains in-depth details plus setup and test steps.\n\nSome features surface only through Step 2.5 under other labels (for example `bug`, `verification-needed`, or `polish`). Treat those as features too when they describe a user-facing capability — the label does not disqualify them.\n\nUse the related issues (from Step 2) to pull in additional context (their summary, description, and comments).\n\n## Build each feature section\n\nGather and analyze all relevant details before writing:\n\n* The summary, description, and comments of the feature itself.\n* The summary, description, and comments of every related issue.\n\nThen write a comprehensive, user-focused section for each feature:\n\n* **Feature title**\n    * Use a concise, descriptive title that identifies the feature. Use sentence case.\n    * Do **not** take the title from a `testplan-item`, because that title is written for testing.\n    * If the feature is in Preview or Experimental, include that status in the heading, for example `### New JavaScript debugging experience (Preview)`.\n* **Feature description**\n    * Do not add a \"Feature Description\" header — start directly with the prose under the heading.\n    * Explain the feature, its purpose, and any constraints users should be aware of.\n    * Never include testing content: no setup, test instructions, or validation steps.\n* **Value proposition** — every section must answer \"Why should the user care?\"\n    * Lead with the user benefit or the problem being solved, then explain the mechanics. State the pain point first, then the resolution.\n    * Avoid describing only what changed. A mechanism (\"buffer-based rendering\") is not a benefit (\"chat responses feel more fluid\").\n    * Link to relevant [VS Code documentation](https://code.visualstudio.com/docs/) when referencing tools, APIs, or concepts that are not common developer knowledge. Expand inline when docs coverage is thin.\n    * For admin and policy features, cover both the administrative use case (compliance, security, cost control) and the developer-productivity impact.\n* **Feature continuity for multi-release features**\n    * For features that span multiple releases (for example, Agents, Customization UI, Sandboxing), add a 1-2 sentence reminder of what the feature is and its goal before describing what changed this release.\n    * The first release of a feature should lead with benefit-oriented bullets. Later releases should still re-establish context.\n\n## Writing guidelines\n\nFollow the [release notes writing instructions](../../instructions/release-notes-writing.instructions.md) first, then the [VS Code documentation writing guidelines](../../instructions/docs-writing.instructions.md). Key rules:\n\n* Use sentence case for headings; do not apply italic, bold, or inline code styling to headings.\n* Use absolute documentation links that start with `https://code.visualstudio.com/docs/` and omit the `.md` suffix. Use descriptive link text — never \"click here\", \"this link\", or \"here\".\n* Image alt text must describe the content and start with \"Screenshot showing\" or \"Screenshot of\". Video alt text must start with \"Video showing\" or \"Video of\" and use the `<video>` tag: `<video src=\"[URL]\" title=\"[description].\" autoplay loop controls muted></video>`.\n* Format notes and tips as block quotes with a bold **Note** or **Tip** prefix. Use asterisks for list items.\n* Reference settings with the `setting(setting.name)` format and keyboard shortcuts with the `kb(command.commandId)` format.\n* Avoid marketing language and the word \"now\". State what changed directly and prefer concrete before/after examples over vague claims like \"improved support\".\n* Group features that share a theme (for example, several agent improvements) and lead with the most impactful one.\n\n## Verify technical details\n\n* Only document settings and commands that actually exist. Verify setting names, values, and command IDs before referencing them.\n* Fact-check all technical details and confirm every link and reference resolves.\n* Keep terminology and structure consistent with existing release notes.\n\n## Writing to the file\n\n* Write **only** the feature documentation sections. Do not add version headers, welcome messages, or update summaries.\n* Start directly with `###` feature headings.\n* Do not leave TODO placeholders.\n* Save the changes to the milestone release notes file.\n","api/references/activation-events.md":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: C83BB647-A37E-45CE-BA4C-837B397C2ABE\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: To support lazy activation of Visual Studio Code extensions (plug-ins), your extension controls when it should be loaded through a set of Activation Events.\n---\n\n# Activation Events\n\n**Activation Events** is a set of JSON declarations that you make in the `activationEvents` field of `package.json` [Extension Manifest](/api/references/extension-manifest). Your extension becomes activated when the **Activation Event** happens. Here is a list of all available **Activation Events**:\n\n- [`onAuthenticationRequest`](/api/references/activation-events#onAuthenticationRequest)\n- [`onChatParticipant`](/api/references/activation-events#onChatParticipant)\n- [`onCommand`](/api/references/activation-events#onCommand)\n- [`onCustomEditor`](/api/references/activation-events#onCustomEditor)\n- [`onDebug`](/api/references/activation-events#onDebug)\n  - [`onDebugAdapterProtocolTracker`](/api/references/activation-events#onDebugAdapterProtocolTracker)\n  - [`onDebugDynamicConfigurations`](/api/references/activation-events#onDebugDynamicConfigurations)\n  - [`onDebugInitialConfigurations`](/api/references/activation-events#onDebugInitialConfigurations)\n  - [`onDebugResolve`](/api/references/activation-events#onDebugResolve)\n- [`onEditSession`](/api/references/activation-events#onEditSession)\n- [`onFileSystem`](/api/references/activation-events#onFileSystem)\n- [`onIssueReporterOpened`](/api/references/activation-events#onIssueReporterOpened)\n- [`onLanguage`](/api/references/activation-events#onLanguage)\n- [`onLanguageModelTool`](/api/references/activation-events#onLanguageModelTool)\n- [`onNotebook`](/api/references/activation-events#onNotebook)\n- [`onOpenExternalUri`](/api/references/activation-events#onOpenExternalUri)\n- [`onRenderer`](/api/references/activation-events#onRenderer)\n- [`onSearch`](/api/references/activation-events#onSearch)\n- [`onStartupFinished`](/api/references/activation-events#onStartupFinished)\n- [`onTaskType`](/api/references/activation-events#onTaskType)\n- [`onTerminal`](/api/references/activation-events.md#onTerminal)\n    - [`onTerminalProfile`](/api/references/activation-events#onTerminalProfile)\n    - [`onTerminalShellIntegration`](/api/references/activation-events.md#onTerminalShellIntegration)\n- [`onUri`](/api/references/activation-events#onUri)\n- [`onView`](/api/references/activation-events#onView)\n- [`onWalkthrough`](/api/references/activation-events#onWalkthrough)\n- [`onWebviewPanel`](/api/references/activation-events#onWebviewPanel)\n- [`workspaceContains`](/api/references/activation-events#workspaceContains)\n- [`*`](/api/references/activation-events#Start-up)\n\nWe also provide a reference of all fields in the [`package.json` extension manifest](/api/references/extension-manifest).\n\n## onLanguage\n\nThis activation event is emitted and interested extensions will be activated whenever a file that resolves to a certain language gets opened.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:python\"\n]\n```\n\nThe `onLanguage` event takes a [language identifier](/docs/languages/identifiers) value.\n\nMultiple languages can be declared with separate `onLanguage` entries in the `activationEvents` array.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:json\",\n    \"onLanguage:markdown\",\n    \"onLanguage:typescript\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, languages contributed by your extension do not require a corresponding `onLanguage` activation event declaration for your extension to be activated.\n\nAdditionally, if your extension needs to be activated before any language is used, you can use the generic `onLanguage` activation event to ensure this:\n\n```json\n\"activationEvents\": [\n    \"onLanguage\"\n]\n```\n\n> **Note**: It is best practice to activate only when a user needs your extension. If your extension works on a subset of languages, it is better for the user to list that subset than to activate on all languages.\n\n## onCommand\n\nThis activation event is emitted and interested extensions will be activated whenever a command is being invoked:\n\n```json\n\"activationEvents\": [\n    \"onCommand:extension.sayHello\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, commands contributed by your extension do not require a corresponding `onCommand` activation event declaration for your extension to be activated.\n\n## onDebug\n\nThis activation event is emitted and interested extensions will be activated before a debug session is started:\n\n```json\n\"activationEvents\": [\n    \"onDebug\"\n]\n```\n\nThese are four more fine-grained `onDebug` activation events:\n\n### onDebugAdapterProtocolTracker\n\n`onDebugAdapterProtocolTracker` is emitted whenever a debug session with the specific type is about to be launched and a debug protocol tracker might be needed.\n\n### onDebugDynamicConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide dynamic debug configurations when the user asks for them, such as through the UI via the \"Select and Start Debugging\" command.\n\nThe presence of this activation event is used as a signal that the extension contributes dynamic debug configurations.\n\n### onDebugInitialConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide initial debug configurations, such as whenever a `launch.json` needs to be created.\n\n### onDebugResolve\n\n`onDebugResolve:type` is fired just before the `resolveDebugConfiguration` method of the `DebugConfigurationProvider` for the specified type is called.\n\n**Rule of thumb:** If activation of a debug extension is lightweight, use `onDebug`. If it is heavyweight, use `onDebugInitialConfigurations` and/or `onDebugResolve` depending on whether the `DebugConfigurationProvider` implements the corresponding methods `provideDebugConfigurations` and/or `resolveDebugConfiguration`. See [Using a DebugConfigurationProvider](/api/extension-guides/debugger-extension#using-a-debugconfigurationprovider) for more details on these methods.\n\n## workspaceContains\n\n`workspaceContains:path` is emitted and interested extensions will be activated whenever a folder is opened and the folder contains at least one file that matches a [glob pattern](/docs/editor/glob-patterns).\n\n```json\n\"activationEvents\": [\n    \"workspaceContains:**/.editorconfig\"\n]\n```\n\n## onFileSystem\n\n`onFileSystem:scheme` is emitted and interested extensions will be activated whenever a file or folder from a specific _scheme_ is read. This is usually the `file`-scheme, but with custom file system providers more schemes come into place, e.g `ftp` or `ssh`.\n\n```json\n\"activationEvents\": [\n    \"onFileSystem:sftp\"\n]\n```\n\n## onView\n\nThis activation event is emitted and interested extensions will be activated whenever a view of the specified id is expanded in the VS Code sidebar. Built-in views do not emit an activation event.\n\nThe activation event below will fire whenever a view with the `nodeDependencies` id is visible:\n\n```json\n\"activationEvents\": [\n    \"onView:nodeDependencies\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, views contributed by your extension do not require a corresponding `onView` activation event declaration for your extension to be activated.\n\n## onUri\n\nThis activation event is emitted and interested extensions will be activated whenever a system-wide Uri for that extension is opened. The Uri scheme is fixed to either `vscode` or `vscode-insiders`. The Uri authority must be the extension's identifier. The rest of the Uri is arbitrary.\n\n```json\n\"activationEvents\": [\n    \"onUri\"\n]\n```\n\nIf the `vscode.git` extension defines `onUri` as an activation event, it will be activated in any of the following Uris are open:\n\n- `vscode://vscode.git/init`\n- `vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git`\n- `vscode-insiders://vscode.git/init` (for VS Code Insiders)\n\n## onWebviewPanel\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to restore a [webview](/api/extension-guides/webview) with the matching `viewType`.\n\nFor example, the declaration of `onWebviewPanel` below:\n\n```json\n\"activationEvents\": [\n    \"onWebviewPanel:catCoding\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a webview with the viewType: `catCoding`. The viewType is set in the call to `window.createWebviewPanel` and you will need to have another activation event (for example, onCommand) to initially activate your extension and create the webview.\n\n## onCustomEditor\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to create a [custom editor](/api/extension-guides/custom-editors) with the matching `viewType`.\n\nFor example, the declaration of `onCustomEditor` below:\n\n```json\n\"activationEvents\": [\n    \"onCustomEditor:catCustoms.pawDraw\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a custom editor with the viewType: `catCustoms.pawDraw`. The viewType is set in the [`customEditors` contribution point](/api/extension-guides/custom-editors#contribution-point) and bound to a provider with `registerCustomEditorProvider`.\n\n> **Note**: Beginning with VS Code 1.74.0, custom editors contributed by your extension do not require a corresponding `onCustomEditor` activation event declaration for your extension to be activated.\n\n## onAuthenticationRequest\n\nThis activation event is emitted and interested extensions will be activated whenever an extension requests an authentication session (via the `authentication.getSession()` API) with the matching `providerId`.\n\nFor example, the declaration of `onAuthenticationRequest` below:\n\n```json\n\"activationEvents\": [\n    \"onAuthenticationRequest:github\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs retrieve an `AuthenticationSession` of type `github`.\n\n> **Note**: Beginning with VS Code 1.74.0, authentication providers contributed by your extension do not require a corresponding `onAuthenticationRequest` activation event declaration for your extension to be activated.\n\n## onStartupFinished\n\nThis activation event is emitted and interested extensions will be activated **some time after** VS Code starts up. This is similar to the `*` activation event, but it will not slow down VS Code startup. Currently, this event is emitted after all the `*` activated extensions have finished activating.\n\n```json\n\"activationEvents\": [\n    \"onStartupFinished\"\n]\n```\n\n## onTaskType\n\n`onTaskType:type` is emitted whenever tasks of a certain type need to be listed or resolved.\n\n```json\n\"activationEvents\": [\n    \"onTaskType:npm\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.76.0, tasks contributed by your extension do not require a corresponding `onTaskType` activation event declaration for your extension to be activated.\n\n## onEditSession\n\n`onEditSession:scheme` is emitted when an edit session is accessed with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onEditSession:file\"\n]\n```\n\n## onSearch\n\n`onSearch:scheme` is emitted when a search is started in the folder with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onSearch:file\"\n]\n```\n\n## onOpenExternalUri\n\nAn activation event emitted whenever an external URI, such as an http or https link, is being opened.\n\n```json\n\"activationEvents\": [\n    \"onOpenExternalUri\"\n]\n```\n\n## onNotebook\n\n`onNotebook:type` is emitted when the specified notebook document type is opened.\n\n```json\n\"activationEvents\": [\n    \"onNotebook:jupyter-notebook\",\n    \"onNotebook:interactive\"\n]\n```\n\n## onRenderer\n\n`onRenderer:id` is emitted when a notebook output renderer is used.\n\n```json\n\"activationEvents\": [\n    \"onRenderer:ms-toolsai.jupyter-renderers\"\n]\n```\n\n## onTerminal\n\n`onTerminal:shellType` is emitted when a specific terminal with the given shell type is opened.\n\n```json\n\"activationEvents\": [\n  \"onTerminal:bash\"\n]\n```\n\n## onTerminalProfile\n\n`onTerminalProfile:id` is emitted when a specific terminal profile is launched.\n\n```json\n\"activationEvents\": [\n    \"onTerminalProfile:terminalTest.terminal-profile\"\n]\n```\n\n## onTerminalShellIntegration\n\n`onTerminalShellIntegration:shellType` is emitted when a terminal with the given shell type has shell integration activated.\n\n```json\n\"activationEvents\": [\n    \"onTerminalShellIntegration:bash\"\n]\n```\n\n## onWalkthrough\n\n`onWalkthrough:id` is emitted when a specified walkthrough is opened.\n\n```json\n\"activationEvents\": [\n    \"onWalkthrough:nodejsWelcome\"\n]\n```\n\n## onIssueReporterOpened\n\nThis activation event is emitted when the issue reporter is opened (for example, by using **Help: Report Issue**).\n\n```json\n\"activationEvents\": [\n    \"onIssueReporterOpened\"\n]\n```\n\n## onChatParticipant\n\nAn activation event emitted when the specified chat participant is invoked.\n\nChat participants are deprecated and are not supported in the Copilot harness. This event remains relevant for Local harness compatibility. See [Replace chat participants](/docs/agent-customization/migrate-customizations.md#replace-chat-participants).\n\n```json\n\"activationEvents\": [\n    \"onChatParticipant:my-chat-participant\"\n]\n```\n\n## onLanguageModelTool\n\nAn activation event emitted when the specified language model tool is invoked.\n\n```json\n\"activationEvents\": [\n    \"onLanguageModelTool:my-language-model-tool\"\n]\n```\n\n## Start up\n\nThe `*` activation event is emitted and interested extensions will be activated whenever VS Code starts up.\n\n> **Note:** To ensure a great user experience, please use this activation event in your extension only when no other activation events combination works in your use-case.\n\n```json\n\"activationEvents\": [\n    \"*\"\n]\n```\n\n> **Note:** An extension can listen to multiple activation events, and that is preferable to listening to `\"*\"`.\n\n> **Note:** An extension **must** export an `activate()` function from its main module and it will be invoked **only once** by VS Code when any of the specified activation events is emitted. Also, an extension **should** export a `deactivate()` function from its main module to perform cleanup tasks on VS Code shutdown. Extension **must** return a Promise from `deactivate()` if the cleanup process is asynchronous. An extension may return `undefined` from `deactivate()` if the cleanup runs synchronously.\n",".github/skills/docs-product-alignment/SKILL.md":"---\nname: docs-product-alignment\ndescription: 'Audit and update docs/copilot/ documentation to accurately reflect current VS Code AI capabilities. Use when: competitive analysis reveals gaps, product launches new features, docs use outdated framing, or keyword coverage needs strengthening for discoverability by users and AI agents. Produces a gap analysis plus targeted edits across affected files.'\n---\n\n# Documentation Product Alignment\n\nAudit VS Code Copilot documentation against current product capabilities and produce targeted, style-compliant edits. Follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md) for all writing rules.\n\n## Guardrails\n\n- **Factual only.** Every claim must map to something the product does today. No superlatives, no competitive comparisons, no invented terminology.\n- **Content framing.** Establish each page's primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Ask the writer before editing when the framing is ambiguous and would change the audit or recommendations.\n- **Two consumers.** The primary persona reads the prose; AI agents and search crawlers index Keywords, MetaDescriptions, and opening paragraphs. Both matter.\n- **Minimal edits.** Change only what is inaccurate, outdated, or missing. One precise sentence beats a rewritten section.\n- **Verifiable.** If you cannot point to a UI element, setting, or documented behavior, do not write it.\n\n## Workflow\n\n1. **Gather context and frame each page.** Read the latest [release notes](/release-notes/), check [github.com/features/copilot](https://github.com/features/copilot), and review any competitive claims or feature matrices the user provides. For each page, record its primary persona, reader intent, and article purpose before proposing edits.\n2. **Audit high-traffic pages.** Read each page and compare against current product truth. Focus on MetaDescriptions, Keywords, opening paragraphs, and terminology.\n3. **Gap analysis.** List what is inaccurate, outdated, or missing. Map each gap to a file and location. Include the page framing in the analysis, and prioritize by page traffic and impact on the primary persona's intent.\n4. **Edit.** Apply targeted changes that support the recorded framing. Vary phrasing across pages to avoid repetition.\n5. **Verify.** Search changed files for banned words, em-dashes, and MetaDescription length violations. Confirm that each changed page still serves its recorded primary persona and reader intent.\n\n**High-traffic pages to always check:**\n- [docs/copilot/overview.md](/docs/copilot/overview.md), [docs/copilot/concepts/overview.md](/docs/agents/concepts/overview.md), [docs/agents/reference/ai-features-cheat-sheet.md](/docs/agents/reference/ai-features-cheat-sheet.md)\n- [docs/copilot/getting-started.md](/docs/copilot/getting-started.md), [docs/agents/overview.md](/docs/agents/overview.md)\n- [docs/agents/reference/workspace-context.md](/docs/agents/reference/workspace-context.md), [docs/agents/agent-troubleshooting/faq.md](/docs/agents/agent-troubleshooting/faq.md)\n\n## Terminology\n\nUse these terms consistently. The \"Avoid\" column lists terms that creep in but should not.\n\n| Concept | Use | Avoid |\n|---------|-----|-------|\n| Autonomous coding sessions | agents | agent mode, agentic workflows |\n| Running without user interaction | background agents | background agent mode |\n| Code suggestions as you type | inline suggestions | code completions, autocomplete |\n| Predicted next edit location | next edit suggestions (NES) | predictive edits |\n| Understanding code across files | workspace context, cross-file reasoning | deep semantic understanding (overuse) |\n| GitHub's search for code context | GitHub's code search | remote search |\n| VS Code's type/symbol analysis | language intelligence (IntelliSense, LSP) | code intelligence |\n| Multiple AI model options | multiple AI models | leading AI models |\n| Plan then implement workflow | Plan agent, implementation agent | planning mode |\n\n## Capability areas\n\nWhen auditing, ensure docs accurately cover these areas:\n\n- **Agents**: plan, implement, verify, parallel sessions, local/background/cloud, third-party support\n- **Context**: semantic search, language intelligence (LSP), GitHub code search, cross-repo awareness\n- **Multi-file editing**: coordinated changes, architecture-level refactoring, framework migrations\n- **Enterprise**: organization policies, model access controls, content exclusions, trust boundaries\n- **SDLC workflow**: Plan agent, implementation agent, Copilot code review, background/cloud handoff\n- **Scale**: large codebases, monorepos, multi-root workspaces, remote indexing\n","api/references/commands.md":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: A010AEDF-EF37-406E-96F5-E129408FFDE1\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: Visual Studio Code built-in commands reference.\n---\n\n# Built-in Commands\n\nThis document lists a subset of Visual Studio Code commands that you might use with `vscode.commands.executeCommand` API.\n\nRead the [Commands guide](/api/extension-guides/command) for how to use the commands API.\n\nThe following is a sample of how to open a new folder in VS Code:\n\n```javascript\nlet uri = Uri.file('/some/path/to/folder');\nlet success = await commands.executeCommand('vscode.openFolder', uri);\n```\n\n>**Note**: You can review the full set of VS Code commands via the Keyboard Shortcuts editor **File** > **Preferences** > **Keyboard Shortcuts**. The Keyboard Shortcuts editor lists all commands built into VS Code or contributed by extensions, along with their keybindings and visibility when clauses.\n\n## Commands\n\n`vscode.executeDataToNotebook` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _data_ - Bytes to convert to data\n* _(returns)_ - Notebook Data\n\n`vscode.executeNotebookToData` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _NotebookData_ - Notebook data to convert to bytes\n* _(returns)_ - Bytes\n\n`notebook.selectKernel` - Trigger kernel picker for specified notebook editor widget\n\n* _options_ - Select kernel options\n* _(returns)_ - no result\n\n`interactive.open` - Open interactive window and return notebook editor and input URI\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Interactive editor title\n* _(returns)_ - Notebook and input URI\n\n`vscode.editorChat.start` - Invoke a new editor chat session\n\n* _Run arguments_ -\n* _(returns)_ - no result\n\n`vscode.executeDocumentHighlights` - Execute document highlight provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of DocumentHighlight-instances.\n\n`vscode.executeDocumentSymbolProvider` - Execute document symbol provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of SymbolInformation and DocumentSymbol instances.\n\n`vscode.executeFormatDocumentProvider` - Execute document format provider.\n\n* _uri_ - Uri of a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatRangeProvider` - Execute range format provider.\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatOnTypeProvider` - Execute format on type provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _ch_ - Trigger character\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeDefinitionProvider` - Execute all definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeTypeDefinitionProvider` - Execute all type definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeDeclarationProvider` - Execute all declaration providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeImplementationProvider` - Execute all implementation providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeReferenceProvider` - Execute all reference providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location-instances.\n\n`vscode.executeHoverProvider` - Execute all hover providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Hover-instances.\n\n`vscode.executeSelectionRangeProvider` - Execute selection range provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of ranges.\n\n`vscode.executeWorkspaceSymbolProvider` - Execute all workspace symbol providers.\n\n* _query_ - Search string\n* _(returns)_ - A promise that resolves to an array of SymbolInformation-instances.\n\n`vscode.prepareCallHierarchy` - Prepare call hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of CallHierarchyItem-instances\n\n`vscode.provideIncomingCalls` - Compute incoming calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyIncomingCall-instances\n\n`vscode.provideOutgoingCalls` - Compute outgoing calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyOutgoingCall-instances\n\n`vscode.prepareRename` - Execute the prepareRename of rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to a range and placeholder text.\n\n`vscode.executeDocumentRenameProvider` - Execute rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _newName_ - The new symbol name\n* _(returns)_ - A promise that resolves to a WorkspaceEdit.\n\n`vscode.executeLinkProvider` - Execute document link provider.\n\n* _uri_ - Uri of a text document\n* _linkResolveCount_ - (optional) Number of links that should be resolved, only when links are unresolved.\n* _(returns)_ - A promise that resolves to an array of DocumentLink-instances.\n\n`vscode.provideDocumentSemanticTokensLegend` - Provide semantic tokens legend for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentSemanticTokens` - Provide semantic tokens for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.provideDocumentRangeSemanticTokensLegend` - Provide semantic tokens legend for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - (optional) A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentRangeSemanticTokens` - Provide semantic tokens for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.executeCompletionItemProvider` - Execute completion item provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger completion when the user types the character, like `,` or `(`\n* _itemResolveCount_ - (optional) Number of completions to resolve (too large numbers slow down completions)\n* _(returns)_ - A promise that resolves to a CompletionList-instance.\n\n`vscode.executeSignatureHelpProvider` - Execute signature help provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger signature help when the user types the character, like `,` or `(`\n* _(returns)_ - A promise that resolves to SignatureHelp.\n\n`vscode.executeCodeLensProvider` - Execute code lens provider.\n\n* _uri_ - Uri of a text document\n* _itemResolveCount_ - (optional) Number of lenses that should be resolved and returned. Will only return resolved lenses, will impact performance\n* _(returns)_ - A promise that resolves to an array of CodeLens-instances.\n\n`vscode.executeCodeActionProvider` - Execute code action provider.\n\n* _uri_ - Uri of a text document\n* _rangeOrSelection_ - Range in a text document. Some refactoring provider requires Selection object.\n* _kind_ - (optional) Code action kind to return code actions for\n* _itemResolveCount_ - (optional) Number of code actions to resolve (too large numbers slow down code actions)\n* _(returns)_ - A promise that resolves to an array of Command-instances.\n\n`vscode.executeDocumentColorProvider` - Execute document color provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of ColorInformation objects.\n\n`vscode.executeColorPresentationProvider` - Execute color presentation provider.\n\n* _color_ - The color to show and insert\n* _context_ - Context object with uri and range\n* _(returns)_ - A promise that resolves to an array of ColorPresentation objects.\n\n`vscode.executeInlayHintProvider` - Execute inlay hints provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to an array of Inlay objects\n\n`vscode.executeFoldingRangeProvider` - Execute folding range provider\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of FoldingRange objects\n\n`vscode.resolveNotebookContentProviders` - Resolve Notebook Content Providers\n\n* _(returns)_ - A promise that resolves to an array of NotebookContentProvider static info objects.\n\n`vscode.executeInlineValueProvider` - Execute inline value provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _context_ - An InlineValueContext\n* _(returns)_ - A promise that resolves to an array of InlineValue objects\n\n`vscode.open` - Opens the provided resource in the editor. Can be a text or binary file, or an http(s) URL. If you need more control over the options for opening a text file, use `vscode.window.showTextDocument` instead.\n\n* _uri_ - Uri of a text or binary file, or an http(s) URL\n* _columnOrOptions_ - (optional) Either the column in which to open, or editor options, see `vscode.TextDocumentShowOptions`\n* _label_ - Editor label (optional)\n* _(returns)_ - no result\n\n`vscode.openWith` - Opens the provided resource with a specific editor.\n\n* _resource_ - Resource to open\n* _viewId_ - Custom editor view id or 'default' to use VS Code's default editor\n* _columnOrOptions_ - (optional) Either the column in which to open or editor options, see vscode.TextDocumentShowOptions\n* _(returns)_ - no result\n\n`vscode.diff` - Opens the provided resources in the diff editor to compare their contents.\n\n* _left_ - Left-hand side resource of the diff editor\n* _right_ - Right-hand side resource of the diff editor\n* _title_ - Human readable title for the diff editor\n* _options_ - (optional) Either the column in which to open, or editor options (see vscode.TextDocumentShowOptions)\n\n`vscode.changes` - Opens a list of resources in the changes editor to compare their contents.\n\n* _title_ - Human readable title for the changes editor\n* _resourceList_ - List of resources to compare\n\n`vscode.prepareTypeHierarchy` - Prepare type hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSupertypes` - Compute supertypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSubtypes` - Compute subtypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.revealTestInExplorer` - Reveals a test instance in the explorer\n\n* _testItem_ - A VS Code TestItem.\n* _(returns)_ - no result\n\n`setContext` - Set a custom context key value that can be used in when clauses.\n\n* _name_ - The context key name\n* _value_ - The context key value\n* _(returns)_ - no result\n\n`cursorMove` - Move cursor to a logical position in the view\n\n* _Cursor move argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory logical position value providing where to move the cursor.\n    ```\n    'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n    'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n    'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n    'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'character', 'halfLine'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'select': If 'true' makes the selection. Default is 'false'.\n\n`editorScroll` - Scroll editor in the given direction\n\n* _Editor scroll argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory direction value.\n    ```\n    'up', 'down'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\n`revealLine` - Reveal the given line at the given logical position\n\n* _Reveal line argument object_ - Property-value pairs that can be passed through this argument:\n  * 'lineNumber': A mandatory line number value.\n  * 'at': Logical position at which line has to be revealed.\n    ```\n    'top', 'center', 'bottom'\n    ```\n\n`editor.unfold` - Unfold the content in the editor\n\n* _Unfold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to unfold. If not set, defaults to 1.\n  * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not\n  set, the active selection(s) will be used.\n\n`editor.fold` - Fold the content in the editor\n\n* _Fold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to fold.\n  * 'direction': If 'up', folds given number of levels up otherwise folds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n  If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\n`editor.toggleFold` - Folds or unfolds the content in the editor depending on its current state\n\n`editor.actions.findWithArgs` - Open a new In-Editor Find Widget with specific options.\n\n* searchString - String to prefill the find input\n* replaceString - String to prefill the replace input\n* isRegex - enable regex\n* preserveCase - try to keep the same case when replacing\n* findInSelection - restrict the find location to the current selection\n* matchWholeWord\n* isCaseSensitive\n\n`editor.action.goToLocations` - Go to locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n* _noResultsMessage_ - Human readable message that shows when locations is empty.\n\n`editor.action.peekLocations` - Peek locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n\n`workbench.action.quickOpen` - Quick access\n\n* _prefix_ -\n\n`notebook.cell.toggleOutputs` - Toggle Outputs\n\n* _options_ - The cell range options\n\n`notebook.fold` - Fold Cell\n\n* _index_ - The cell index\n\n`notebook.unfold` - Unfold Cell\n\n* _index_ - The cell index\n\n`notebook.selectKernel` - Notebook Kernel Args\n\n* _kernelInfo_ - The kernel info\n\n`notebook.cell.changeLanguage` - Change Cell Language\n\n* _range_ - The cell range\n* _language_ - The target cell language\n\n`notebook.execute` - Run All\n\n* _uri_ - The document uri\n\n`notebook.cell.execute` - Execute Cell\n\n* _options_ - The cell range options\n\n`notebook.cell.executeAndFocusContainer` - Execute Cell and Focus Container\n\n* _options_ - The cell range options\n\n`notebook.cell.cancelExecution` - Stop Cell Execution\n\n* _options_ - The cell range options\n\n`workbench.action.findInFiles` - Open a workspace search\n\n* _A set of options for the search_ -\n\n`_interactive.open` - Open Interactive Window\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Notebook editor title\n\n`interactive.execute` - Execute the Contents of the Input Box\n\n* _resource_ - Interactive resource Uri\n\n`search.action.openNewEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openNewEditorToSide` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`vscode.openFolder` - Open a folder or workspace in the current window or new window depending on the newWindow argument. Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder/workspace unless the newWindow parameter is set to true.\n\n* _uri_ - (optional) Uri of the folder or workspace file to open. If not provided, a native dialog will ask the user for the folder\n* _options_ - (optional) Options. Object with the following properties: `forceNewWindow`: Whether to open the folder/workspace in a new window or the same. Defaults to opening in the same window. `forceReuseWindow`: Whether to force opening the folder/workspace in the same window.  Defaults to false. `noRecentEntry`: Whether the opened URI will appear in the 'Open Recent' list. Defaults to false. Note, for backward compatibility, options can also be of type boolean, representing the `forceNewWindow` setting.\n\n`vscode.newWindow` - Opens an new window depending on the newWindow argument.\n\n* _options_ - (optional) Options. Object with the following properties: `reuseWindow`: Whether to open a new window or the same. Defaults to opening in a new window.\n\n`vscode.removeFromRecentlyOpened` - Removes an entry with the given path from the recently opened list.\n\n* _path_ - URI or URI string to remove from recently opened.\n\n`moveActiveEditor` - Move the active editor by tabs or groups\n\n* _Active editor move argument_ - Argument Properties:\n  * 'to': String value providing where to move.\n  * 'by': String value providing the unit for move (by tab or by group).\n  * 'value': Number value providing how many positions or an absolute position to move.\n\n`copyActiveEditor` - Copy the active editor by groups\n\n* _Active editor copy argument_ - Argument Properties:\n  * 'to': String value providing where to copy.\n  * 'value': Number value providing how many positions or an absolute position to copy.\n\n`vscode.getEditorLayout` - Get Editor Layout\n\n* _(returns)_ - An editor layout object, in the same format as vscode.setEditorLayout\n\n`workbench.action.files.newUntitledFile` - New Untitled Text File\n\n* _New Untitled Text File arguments_ - The editor view type or language ID if known\n\n`workbench.extensions.installExtension` - Install the given extension\n\n* _extensionIdOrVSIXUri_ - Extension id or VSIX resource uri\n* _options_ - (optional) Options for installing the extension. Object with the following properties: `installOnlyNewlyAddedFromExtensionPackVSIX`: When enabled, VS Code installs only newly added extensions from the extension pack VSIX. This option is considered only when installing VSIX.\n\n`workbench.extensions.uninstallExtension` - Uninstall the given extension\n\n* _Id of the extension to uninstall_ -\n\n`workbench.extensions.search` - Search for a specific extension\n\n* _Query to use in search_ -\n\n`workbench.action.tasks.runTask` - Run Task\n\n* _args_ - Filters the tasks shown in the Quick Pick\n\n`workbench.action.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`vscode.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`workbench.action.openLogFile` - workbench.action.openLogFile\n\n* _logFile_ -\n\n`workbench.action.openWalkthrough` - Open the walkthrough.\n\n* _walkthroughID_ - ID of the walkthrough to open.\n* _toSide_ - Opens the walkthrough in a new editor group to the side.\n\n## Simple commands\n\nSimple commands that do not require parameters can be found in the Keyboard Shortcuts list in the default `keybindings.json` file. The unbound commands are listed in a comment block at the bottom of the file.\n\nTo review the default `keybindings.json`, run **Preferences: Open Default Keyboard Shortcuts (JSON)** from the Command Palette (`kb(workbench.action.showCommands)`).\n","api/references/contribution-points.md":"# References Skill\n\nPath: `api/references/contribution-points.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/contribution-points.md)","api/references/document-selector.md":"# References Skill\n\nPath: `api/references/document-selector.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/document-selector.md)","api/references/extension-manifest.md":"# References Skill\n\nPath: `api/references/extension-manifest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/extension-manifest.md)","api/references/icons-in-labels.md":"# References Skill\n\nPath: `api/references/icons-in-labels.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/icons-in-labels.md)","api/references/theme-color.md":"# References Skill\n\nPath: `api/references/theme-color.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/theme-color.md)","api/references/when-clause-contexts.md":"# References Skill\n\nPath: `api/references/when-clause-contexts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/when-clause-contexts.md)","docs/agents/agents-handoff-tutorial.md":"# Subagent: agents-handoff-tutorial\n\nPath: `docs/agents/agents-handoff-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-handoff-tutorial.md)","docs/agents/agents-tutorial.md":"# Subagent: agents-tutorial\n\nPath: `docs/agents/agents-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-tutorial.md)","docs/agents/best-practices.md":"# Subagent: best-practices\n\nPath: `docs/agents/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/best-practices.md)","docs/agents/overview.md":"# Subagent: overview\n\nPath: `docs/agents/overview.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/overview.md)","docs/agents/quickstart.md":"# Subagent: quickstart\n\nPath: `docs/agents/quickstart.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/quickstart.md)","learn/agents/1-using-tools-with-agents.md":"# Subagent: 1-using-tools-with-agents\n\nPath: `learn/agents/1-using-tools-with-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/1-using-tools-with-agents.md)","learn/agents/2-extending-agents-with-mcp-servers.md":"# Subagent: 2-extending-agents-with-mcp-servers\n\nPath: `learn/agents/2-extending-agents-with-mcp-servers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/2-extending-agents-with-mcp-servers.md)","learn/agents/3-agent-plugins.md":"# Subagent: 3-agent-plugins\n\nPath: `learn/agents/3-agent-plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/3-agent-plugins.md)","learn/agents/4-using-third-party-agents-in-vs-code.md":"# Subagent: 4-using-third-party-agents-in-vs-code\n\nPath: `learn/agents/4-using-third-party-agents-in-vs-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/4-using-third-party-agents-in-vs-code.md)",".github/skills/release-note-writer/review-procedure.md":"# Release-note-writer Skill\n\nPath: `.github/skills/release-note-writer/review-procedure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/review-procedure.md)",".vscode/extensions/doc-assistant/package.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package.json)",".vscode/extensions/doc-assistant/package-lock.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package-lock.json)",".vscode/extensions/doc-assistant/README.md":"# doc-assistant Documentation\n\nPath: `.vscode/extensions/doc-assistant/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/README.md)",".vscode/extensions/doc-assistant/tsconfig.json":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/tsconfig.json)","docs/configure/extensions/extension-marketplace.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-marketplace.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-marketplace.md)","docs/configure/extensions/extension-runtime-security.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-runtime-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-runtime-security.md)","docs/configure/extensions/extensions.md":"# Extensions Skill\n\nPath: `docs/configure/extensions/extensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extensions.md)","docs/agents/agent-troubleshooting/cache-explorer.md":"# Subagent: cache-explorer\n\nPath: `docs/agents/agent-troubleshooting/cache-explorer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/cache-explorer.md)","docs/agents/agent-troubleshooting/chat-debug-view.md":"# Subagent: chat-debug-view\n\nPath: `docs/agents/agent-troubleshooting/chat-debug-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/chat-debug-view.md)","docs/agents/agent-troubleshooting/faq.md":"# Subagent: faq\n\nPath: `docs/agents/agent-troubleshooting/faq.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/faq.md)","docs/agents/agent-troubleshooting/troubleshooting.md":"# Subagent: troubleshooting\n\nPath: `docs/agents/agent-troubleshooting/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/troubleshooting.md)","docs/agents/concepts/agent-harnesses.md":"# Subagent: agent-harnesses\n\nPath: `docs/agents/concepts/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-harnesses.md)","docs/agents/concepts/agent-host.md":"# Subagent: agent-host\n\nPath: `docs/agents/concepts/agent-host.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-host.md)","docs/agents/concepts/agents.md":"# Subagent: agents\n\nPath: `docs/agents/concepts/agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agents.md)","docs/agents/concepts/context.md":"# Subagent: context\n\nPath: `docs/agents/concepts/context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/context.md)","docs/agents/concepts/customization.md":"# Subagent: customization\n\nPath: `docs/agents/concepts/customization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/customization.md)","docs/agents/concepts/language-models.md":"# Subagent: language-models\n\nPath: `docs/agents/concepts/language-models.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/language-models.md)","docs/agents/concepts/sessions.md":"# Subagent: sessions\n\nPath: `docs/agents/concepts/sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/sessions.md)","docs/agents/concepts/tools.md":"# Subagent: tools\n\nPath: `docs/agents/concepts/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/tools.md)","docs/agents/concepts/trust-and-safety.md":"# Subagent: trust-and-safety\n\nPath: `docs/agents/concepts/trust-and-safety.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/trust-and-safety.md)","docs/agents/guides/browser-agent-testing-guide.md":"# Subagent: browser-agent-testing-guide\n\nPath: `docs/agents/guides/browser-agent-testing-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/browser-agent-testing-guide.md)","docs/agents/guides/code-review-with-copilot.md":"# Subagent: code-review-with-copilot\n\nPath: `docs/agents/guides/code-review-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/code-review-with-copilot.md)","docs/agents/guides/context-engineering-guide.md":"# Subagent: context-engineering-guide\n\nPath: `docs/agents/guides/context-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/context-engineering-guide.md)","docs/agents/guides/customize-copilot-guide.md":"# Subagent: customize-copilot-guide\n\nPath: `docs/agents/guides/customize-copilot-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/customize-copilot-guide.md)","docs/agents/guides/debug-with-copilot.md":"# Subagent: debug-with-copilot\n\nPath: `docs/agents/guides/debug-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/debug-with-copilot.md)","docs/agents/guides/mcp-developer-guide.md":"# Subagent: mcp-developer-guide\n\nPath: `docs/agents/guides/mcp-developer-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/mcp-developer-guide.md)","docs/agents/guides/monitoring-agents.md":"# Subagent: monitoring-agents\n\nPath: `docs/agents/guides/monitoring-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/monitoring-agents.md)","docs/agents/guides/notebooks-with-ai.md":"# Subagent: notebooks-with-ai\n\nPath: `docs/agents/guides/notebooks-with-ai.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/notebooks-with-ai.md)","docs/agents/guides/optimize-usage.md":"# Subagent: optimize-usage\n\nPath: `docs/agents/guides/optimize-usage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/optimize-usage.md)","docs/agents/guides/prompt-engineering-guide.md":"# Subagent: prompt-engineering-guide\n\nPath: `docs/agents/guides/prompt-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-engineering-guide.md)","docs/agents/guides/prompt-examples.md":"# Subagent: prompt-examples\n\nPath: `docs/agents/guides/prompt-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-examples.md)","docs/agents/guides/test-driven-development-guide.md":"# Subagent: test-driven-development-guide\n\nPath: `docs/agents/guides/test-driven-development-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-driven-development-guide.md)","docs/agents/guides/test-with-copilot.md":"# Subagent: test-with-copilot\n\nPath: `docs/agents/guides/test-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-with-copilot.md)","docs/agents/reference/ai-features-cheat-sheet.md":"# Subagent: ai-features-cheat-sheet\n\nPath: `docs/agents/reference/ai-features-cheat-sheet.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-features-cheat-sheet.md)","docs/agents/reference/ai-settings.md":"# Subagent: ai-settings\n\nPath: `docs/agents/reference/ai-settings.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-settings.md)","docs/agents/reference/hooks-reference.md":"# Subagent: hooks-reference\n\nPath: `docs/agents/reference/hooks-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/hooks-reference.md)","docs/agents/reference/mcp-configuration.md":"# Subagent: mcp-configuration\n\nPath: `docs/agents/reference/mcp-configuration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/mcp-configuration.md)","docs/agents/reference/workspace-context.md":"# Subagent: workspace-context\n\nPath: `docs/agents/reference/workspace-context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/workspace-context.md)","docs/agents/run/agent-harnesses.md":"# Subagent: agent-harnesses\n\nPath: `docs/agents/run/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agent-harnesses.md)","docs/agents/run/agents-window.md":"# Subagent: agents-window\n\nPath: `docs/agents/run/agents-window.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agents-window.md)","docs/agents/run/approvals.md":"# Subagent: approvals\n\nPath: `docs/agents/run/approvals.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/approvals.md)","docs/agents/run/artifacts.md":"# Subagent: artifacts\n\nPath: `docs/agents/run/artifacts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/artifacts.md)","docs/agents/run/browser-tools.md":"# Subagent: browser-tools\n\nPath: `docs/agents/run/browser-tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/browser-tools.md)","docs/agents/run/chat-view.md":"# Subagent: chat-view\n\nPath: `docs/agents/run/chat-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/chat-view.md)","docs/agents/run/memory.md":"# Subagent: memory\n\nPath: `docs/agents/run/memory.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/memory.md)","docs/agents/run/planning.md":"# Subagent: planning\n\nPath: `docs/agents/run/planning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/planning.md)","docs/agents/run/remote-agent-sessions.md":"# Subagent: remote-agent-sessions\n\nPath: `docs/agents/run/remote-agent-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/remote-agent-sessions.md)","docs/agents/run/review-code-edits.md":"# Subagent: review-code-edits\n\nPath: `docs/agents/run/review-code-edits.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/review-code-edits.md)","docs/agents/run/security.md":"# Subagent: security\n\nPath: `docs/agents/run/security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/security.md)","docs/agents/run/subagents.md":"# Subagent: subagents\n\nPath: `docs/agents/run/subagents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/subagents.md)","docs/agents/run/tools.md":"# Subagent: tools\n\nPath: `docs/agents/run/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/tools.md)",".github/skills/release-note-writer/examples/v1_109.md":"# Examples Skill\n\nPath: `.github/skills/release-note-writer/examples/v1_109.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/examples/v1_109.md)",".vscode/extensions/doc-assistant/.vscode/launch.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/launch.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/launch.json)",".vscode/extensions/doc-assistant/.vscode/settings.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/settings.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/settings.json)",".vscode/extensions/doc-assistant/.vscode/tasks.json":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/tasks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/tasks.json)","blogs/2025/03/.github/copilot-instructions.md":"# GitHub Copilot Instructions\n\nPath: `blogs/2025/03/.github/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/blogs/2025/03/.github/copilot-instructions.md)","docs/agents/run/sessions/manage-sessions.md":"# Subagent: manage-sessions\n\nPath: `docs/agents/run/sessions/manage-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/manage-sessions.md)","docs/agents/run/sessions/session-history.md":"# Subagent: session-history\n\nPath: `docs/agents/run/sessions/session-history.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/session-history.md)"},"items":[{"name":"SKILL.md","path":".github/skills/blog-writer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/blog-writer/SKILL.md","title":"blog-writer","category":"anthropic-skill","format":"markdown","content":"---\nname: blog-writer\ndescription: 'Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to \"write a blog post\", \"draft a blog\", \"add a blog post for\", \"review this blog post\", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.'\nargument-hint: 'Topic to blog about (or a link to the relevant issue/PR), or a blog post to review.'\n---\n\n# Write or Review a Blog Post\n\nHelp author a new VS Code blog post or review an existing one in the `blogs/` folder. The skill has two modes:\n\n* **Write mode** works in two phases: it first **researches the topic and proposes an outline**, then drafts the post **only after you approve**.\n* **Review mode** evaluates an existing draft for clarity, conciseness, and style, and reports concrete suggestions without editing unless asked.\n\nAll work must follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md), which in turn builds on the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these:\n\n* The user says \"write a blog post\", \"draft a blog\", \"add a blog post for…\", or \"announce this on the blog\".\n* The user pastes a GitHub issue or PR link and asks you to turn it into a blog post.\n* The user asks you to \"review this blog post\", check a draft, or improve an existing post in `blogs/`.\n* Announcing or explaining a new or changed VS Code or GitHub Copilot feature in a narrative, conversational format.\n\nFor new posts, run the plan-first workflow rather than jumping straight to a draft, even when the topic seems small.\n\nDo **not** use this skill for reference documentation, release notes, or API docs. Those are handled by other skills (`doc-writer`, `release-note-writer`) or direct edits. If the user wants reference docs rather than a narrative post, switch to `doc-writer`.\n\n## Guardrails\n\n* **Blogs only.** Limit changes to the `blogs/` folder. Do **not** update reference docs, release notes, or API docs as part of this skill.\n* **Public functionality only.** Announce functionality only when it is publicly available in the named channel by the post's publication date. Do not announce internal dogfood or source-only functionality.\n* **Folder structure.** A new post MUST live in `blogs/<year>/<month>/<day>/` with each date level as its own subfolder. Store images and the social image alongside the post.\n* **Frontmatter is required.** Every post needs the YAML frontmatter fields from the style guide (`Order`, `TOCTitle`, `PageTitle`, `MetaDescription`, `MetaSocialImage`, `Date`, `Author`). `Order` must be unique and higher than the most recent post, so check existing posts before assigning it.\n* **Images and screenshots are human work.** When a hero image or screenshot is needed, insert a `TODO` comment for a human to capture and add it later. Do not fabricate image references or invent file names beyond the placeholder.\n* **Style compliance.** Follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md): engaging, conversational tone, active voice, first-person plural (\"we\"), contractions, and a closing call to action ending with `Happy coding! 💙`.\n\n## Phase 1 — Research & Propose an Outline (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the topic.** Read the feature description, issue, or PR provided. If it is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and narrative purpose by following the [blog content-framing guidance](../../instructions/blog-writing.instructions.md#content-framing). Infer them from the topic, source material, existing coverage, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the angle, ask the writer to confirm before proposing the outline.\n3. **Check the source if needed.** To understand the feature, inspect the source code in the `microsoft/vscode` and `microsoft/vscode-copilot-chat` repos. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being written about | Primary source repo |\n   |--------------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n\n4. **Verify public availability.** Confirm that each announced capability is available to users in the named public channel by the publication date. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Exclude planned, hidden, internal dogfood, and source-only functionality.\n5. **Determine placement and metadata.** Decide the target folder (`blogs/<year>/<month>/<day>/`) and the next available `Order` value by checking recent posts. Confirm the author name and social media profile link with the user if unknown.\n6. **Present the outline.** Summarize:\n   * The primary persona, reader intent, and narrative purpose.\n   * The proposed title, target folder path, and draft frontmatter values.\n   * A section-by-section outline (H2 headings) with a one-line description of each.\n   * Any `TODO` image placeholders that will be needed (hero/social image, inline screenshots).\n   * Open questions or assumptions.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the outline (or adjusts it).\n\n## Phase 2 — Draft the Post (after approval)\n\nOnce the user approves the outline:\n\n1. Create the post at `blogs/<year>/<month>/<day>/<slug>.md` with complete YAML frontmatter.\n2. Write the body following the approved content framing and the content structure from the style guide:\n   * An H1 title, followed by a byline `<Month> <day>, <year> by [<author>](<social link>)` and a blank line.\n   * A brief introduction that summarizes the main points.\n   * H2 sections as outlined, in an engaging, conversational tone using active voice, \"we\", and contractions.\n   * Images via relative paths with descriptive alt text. Use absolute URLs for links to documentation articles.\n   * A closing call to action, ending with `Happy coding! 💙`.\n3. Add `TODO` comments where images or screenshots need to be captured by a human.\n4. Verify that the opening, examples, terminology, key takeaways, and call to action serve the approved primary persona and reader intent.\n5. Summarize the post you created and call out any remaining `TODO`s for the user.\n\n## Review Mode\n\nWhen the user asks you to review an existing blog post instead of writing one:\n\n1. Read the draft and check it against the [blog-writing style guide](../../instructions/blog-writing.instructions.md):\n   * Content framing (a clear primary persona, reader intent, and narrative purpose reflected consistently throughout the post).\n   * Frontmatter completeness and correctness (all required fields, unique `Order`, `MetaDescription` under 160 chars, `TOCTitle` under 30 chars).\n   * Folder structure (`blogs/<year>/<month>/<day>/`).\n   * Content structure (H1 title, byline, intro, H2 sections, alt text on images, absolute URLs for doc links, closing call to action ending with `Happy coding! 💙`).\n   * Writing style (engaging and conversational, active voice, first-person plural, contractions, clear language for a developer audience).\n2. Verify technical claims against the source where practical (setting names, command IDs, version availability), using the `gh` CLI.\n3. Verify that announced functionality is public in the named channel by the post's publication date. Flag content that presents planned, hidden, internal dogfood, or source-only functionality as available.\n4. Report concrete, practical suggestions grouped by theme. **Do not edit the file** unless the user asks you to apply the changes.\n","frontmatter":{"name":"blog-writer","description":"Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to \"write a blog post\", \"draft a blog\", \"add a blog post for\", \"review this blog post\", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.","argument-hint":"Topic to blog about (or a link to the relevant issue/PR), or a blog post to review."},"isInternal":false,"tokens":1815,"sizeBytes":8229},{"name":"SKILL.md","path":".github/skills/content-redirect/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/content-redirect/SKILL.md","title":"content-redirect","category":"anthropic-skill","format":"markdown","content":"---\nname: content-redirect\ndescription: 'Create and manage redirects in VS Code documentation when pages are moved, renamed, or deleted. Use when moving docs pages, renaming files, restructuring content, or when the user asks about redirects.'\nargument-hint: '<old-path> <new-path>'\n---\n\n# Content Redirect\n\nYou are a redirect specialist for VS Code docs. Your job is to create and manage redirects in `redirection.json` when documentation pages are moved, renamed, or deleted. Each content area has its own `redirection.json` file.\n\n## When to Use\n\nUse this skill whenever:\n\n* A markdown file is **moved** or **renamed** (the URL path changes).\n* A markdown file is **deleted** and its content now lives elsewhere.\n* You are explicitly asked to add a redirect.\n\n## Redirect Files\n\nEach top-level content folder has its own redirect file:\n\n| Content area | Redirect file |\n|-------------|---------------|\n| `docs/`     | `docs/redirection.json` |\n| `api/`      | `api/redirection.json` |\n| `blogs/`    | `blogs/redirection.json` |\n| `remote/`   | `remote/redirection.json` |\n\n## Entry Format\n\nEach redirect is a JSON object with three fields:\n\n```json\n{ \"from\": \"/docs/old/path\", \"to\": \"/docs/new/path\", \"status\": 301 }\n```\n\n| Field    | Description |\n|----------|-------------|\n| `from`   | The old URL path (without file extension, without domain). Must start with `/` followed by the content area prefix (e.g., `/docs/`, `/api/`). |\n| `to`     | The new URL path the old URL should redirect to. Same format as `from`. |\n| `status` | Always `301` (permanent redirect). |\n\n## Procedure\n\n### 1. Determine the old and new paths\n\n- Strip the file extension (`.md`) and the repo-root prefix to get the URL path.\n- Example: moving `docs/copilot/overview.md` → `docs/copilot/getting-started.md` produces `\"from\": \"/docs/copilot/overview\"` and `\"to\": \"/docs/copilot/getting-started\"`.\n- For `index.md` files, the URL path is the folder path without `/index` (e.g., `docs/copilot/index.md` → `/docs/copilot`).\n\n### 2. Identify the correct redirect file\n\nChoose the `redirection.json` that matches the content area of the **old** path (the `from` path).\n\n### 3. Add the redirect entry\n\n- Open the appropriate `redirection.json` file.\n- Append the new entry to the JSON array.\n- Keep the array sorted or append at the end — either is acceptable.\n- Ensure the JSON is valid (proper commas, no trailing comma on the last entry).\n\n### 4. Check for redirect chains\n\nSearch the same `redirection.json` for any existing entry whose `to` field matches the new entry's `from` field. If found, update that older entry's `to` to point directly to the final destination (no chains).\n\n### 5. Update internal links\n\nSearch the repository for any links pointing to the old path and update them to the new path. Use Grep to find references to the old path in markdown files and `toc.json` files and update them accordingly.\n\n### 6. Verify\n\n- Confirm the `redirection.json` file is valid JSON.\n- Confirm no duplicate `from` paths exist in the file.\n- If the file was moved (not deleted), confirm the new file exists at the target path.\n","frontmatter":{"name":"content-redirect","description":"Create and manage redirects in VS Code documentation when pages are moved, renamed, or deleted. Use when moving docs pages, renaming files, restructuring content, or when the user asks about redirects.","argument-hint":"<old-path> <new-path>"},"isInternal":false,"tokens":762,"sizeBytes":3117},{"name":"SKILL.md","path":".github/skills/doc-writer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/doc-writer/SKILL.md","title":"doc-writer","category":"anthropic-skill","format":"markdown","content":"---\nname: doc-writer\ndescription: 'Plan and write VS Code documentation for a new or updated feature. ALWAYS use this skill when the user asks to \"document\", \"add docs for\", \"write docs for\", or \"update the docs for\" a feature, or provides a GitHub issue/PR link to document — even if the change seems small. Proposes a documentation plan and asks clarifying questions first — it does not edit any files until you approve the plan.'\nargument-hint: 'Feature to document, or a link to the relevant issue/PR.'\n---\n\n# Document a Feature\n\nHelp document a new or updated VS Code feature in the project documentation (the `docs/` folder) and keep its required navigation metadata current. This skill works in two phases: it first **researches the feature and proposes a documentation plan**, then implements the changes **only after you approve**. It is acceptable to conclude that no documentation update is needed.\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these — do not start editing docs directly without first running Phase 1:\n\n* The user says \"document this\", \"document this functionality/feature\", \"add docs for…\", \"write docs for…\", or \"update the docs for…\".\n* The user pastes a GitHub issue or PR link and asks you to document or address it in the docs.\n* Documenting a new or changed VS Code or GitHub Copilot feature.\n* Turning a GitHub issue or PR into concrete `docs/` updates.\n* Auditing whether existing docs need updating after a feature change.\n\nThis applies even when the change looks small (a clarification, a few added steps, a single section). Run the plan-first workflow rather than jumping straight to edits.\n\nDo **not** use this skill for release notes, API reference docs, redirects, image swaps, or pure copy-edits — those are handled by other skills (`release-note-writer`, `content-redirect`, `frontmatter-description`) or direct edits.\n\n## Guardrails\n\n* **Docs and sitemap only.** Limit content changes to the `docs/` folder. When you add an article or change an article URL, update `build/sitemap.xml` in the same change. Do **not** update release notes or API docs (`api/`) unless the user explicitly asks.\n* **Public functionality only.** Do not add or retain documentation for internal builds, dogfood-only functionality, hidden settings or commands, source-only implementation, or manually settable internal feature flags.\n* **Never edit `enterprise/policies.md`.** This file is generated from the enterprise policy definitions in the VS Code source. Edit `enterprise/policies-template.md` instead, which is used to regenerate `policies.md`.\n* **Screenshots are human work.** When a screenshot needs to be added or updated, insert a `TODO` comment in the doc for a human to capture and insert it later — do not fabricate image references.\n* **Style compliance.** All writing must follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## Phase 1 — Research & Propose a Plan (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the feature.** Read the feature description, issue, or PR provided. If the description is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Infer them from the existing content, documentation journey, source material, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the content, ask the writer to confirm before planning edits.\n3. **Check the source if needed.** To understand the implementation, inspect the source code in the `microsoft/vscode` repo. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being documented | Primary source repo |\n   |----------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n   | Enterprise policies | `microsoft/vscode` (policy definitions) |\n\n4. **Verify public availability.** Check every feature, setting, and command against the public product channel intended for the article. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Inspect registration metadata, product quality gates, feature flags, and the relevant public release. Treat metadata such as `included: false` as internal unless product evidence shows otherwise. If functionality is not public, do not document it. During an audit or review, propose removing existing coverage.\n5. **Identify affected docs.** Search the `docs/` folder for the pages that need to be created or updated. Map each change to a specific file and section. Include `docs/toc.json` and `build/sitemap.xml` in the plan when you add an article or change an article URL.\n6. **Present the plan.** Summarize:\n   * The primary persona, reader intent, and article purpose.\n   * Which `docs/` files and required navigation metadata you propose to create or change, and a short description of each edit.\n   * Any `TODO` screenshot placeholders that will be needed.\n   * Open questions or assumptions.\n\n   If you conclude that **no documentation update is needed**, say so and ask the user to confirm before closing out.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the plan (or adjusts it).\n\n## Phase 2 — Confirm the Branch & Implement (after approval)\n\nOnce the user approves the plan:\n\n1. **Confirm the branch before editing.** Use the user-question tool to ask whether to create a new branch from `main` before implementing the documentation updates. Offer these choices:\n   * `Yes, create a new branch from main (Recommended)`\n   * `No, continue on the current branch`\n\n   Do not modify documentation files until the user answers. If the user chooses a new branch, ask for a branch name unless they already supplied one, then create the branch from `main` before editing. If uncommitted changes prevent safe branch creation, stop and explain the conflict instead of stashing or reverting changes. If the user chooses the current branch, continue without changing branches.\n2. Apply the documentation edits exactly as agreed, following the [docs-writing style guide](../../instructions/docs-writing.instructions.md) and the approved content framing.\n3. Add `TODO` comments where screenshots need to be captured by a human.\n4. Respect the guardrails above (docs content and required sitemap updates only; no release notes/API docs unless asked; never edit generated `policies.md`).\n5. Verify that the introduction, main content, examples, and next steps serve the approved primary persona and reader intent.\n6. Summarize the changes you made and call out any remaining `TODO`s for the user.\n\n## Orchestrate your documentation updates\n\n- Act as a reviewer and coordinator\n- Delegate work to GPT-5.6 Sol subagents, in parallel when feasible.\n- The subagents should not themselves run validation on their work, that's your job! You own the plan; delegate work in parallel when reasonable.\n- Monitor the progress of subagents and integrate their contributions into the final documentation.\n","frontmatter":{"name":"doc-writer","description":"Plan and write VS Code documentation for a new or updated feature. ALWAYS use this skill when the user asks to \"document\", \"add docs for\", \"write docs for\", or \"update the docs for\" a feature, or provides a GitHub issue/PR link to document — even if the change seems small. Proposes a documentation plan and asks clarifying questions first — it does not edit any files until you approve the plan.","argument-hint":"Feature to document, or a link to the relevant issue/PR."},"isInternal":false,"tokens":1608,"sizeBytes":7579},{"name":"SKILL.md","path":".github/skills/docs-product-alignment/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/docs-product-alignment/SKILL.md","title":"docs-product-alignment","category":"anthropic-skill","format":"markdown","content":"---\nname: docs-product-alignment\ndescription: 'Audit and update docs/copilot/ documentation to accurately reflect current VS Code AI capabilities. Use when: competitive analysis reveals gaps, product launches new features, docs use outdated framing, or keyword coverage needs strengthening for discoverability by users and AI agents. Produces a gap analysis plus targeted edits across affected files.'\n---\n\n# Documentation Product Alignment\n\nAudit VS Code Copilot documentation against current product capabilities and produce targeted, style-compliant edits. Follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md) for all writing rules.\n\n## Guardrails\n\n- **Factual only.** Every claim must map to something the product does today. No superlatives, no competitive comparisons, no invented terminology.\n- **Content framing.** Establish each page's primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Ask the writer before editing when the framing is ambiguous and would change the audit or recommendations.\n- **Two consumers.** The primary persona reads the prose; AI agents and search crawlers index Keywords, MetaDescriptions, and opening paragraphs. Both matter.\n- **Minimal edits.** Change only what is inaccurate, outdated, or missing. One precise sentence beats a rewritten section.\n- **Verifiable.** If you cannot point to a UI element, setting, or documented behavior, do not write it.\n\n## Workflow\n\n1. **Gather context and frame each page.** Read the latest [release notes](/release-notes/), check [github.com/features/copilot](https://github.com/features/copilot), and review any competitive claims or feature matrices the user provides. For each page, record its primary persona, reader intent, and article purpose before proposing edits.\n2. **Audit high-traffic pages.** Read each page and compare against current product truth. Focus on MetaDescriptions, Keywords, opening paragraphs, and terminology.\n3. **Gap analysis.** List what is inaccurate, outdated, or missing. Map each gap to a file and location. Include the page framing in the analysis, and prioritize by page traffic and impact on the primary persona's intent.\n4. **Edit.** Apply targeted changes that support the recorded framing. Vary phrasing across pages to avoid repetition.\n5. **Verify.** Search changed files for banned words, em-dashes, and MetaDescription length violations. Confirm that each changed page still serves its recorded primary persona and reader intent.\n\n**High-traffic pages to always check:**\n- [docs/copilot/overview.md](/docs/copilot/overview.md), [docs/copilot/concepts/overview.md](/docs/agents/concepts/overview.md), [docs/agents/reference/ai-features-cheat-sheet.md](/docs/agents/reference/ai-features-cheat-sheet.md)\n- [docs/copilot/getting-started.md](/docs/copilot/getting-started.md), [docs/agents/overview.md](/docs/agents/overview.md)\n- [docs/agents/reference/workspace-context.md](/docs/agents/reference/workspace-context.md), [docs/agents/agent-troubleshooting/faq.md](/docs/agents/agent-troubleshooting/faq.md)\n\n## Terminology\n\nUse these terms consistently. The \"Avoid\" column lists terms that creep in but should not.\n\n| Concept | Use | Avoid |\n|---------|-----|-------|\n| Autonomous coding sessions | agents | agent mode, agentic workflows |\n| Running without user interaction | background agents | background agent mode |\n| Code suggestions as you type | inline suggestions | code completions, autocomplete |\n| Predicted next edit location | next edit suggestions (NES) | predictive edits |\n| Understanding code across files | workspace context, cross-file reasoning | deep semantic understanding (overuse) |\n| GitHub's search for code context | GitHub's code search | remote search |\n| VS Code's type/symbol analysis | language intelligence (IntelliSense, LSP) | code intelligence |\n| Multiple AI model options | multiple AI models | leading AI models |\n| Plan then implement workflow | Plan agent, implementation agent | planning mode |\n\n## Capability areas\n\nWhen auditing, ensure docs accurately cover these areas:\n\n- **Agents**: plan, implement, verify, parallel sessions, local/background/cloud, third-party support\n- **Context**: semantic search, language intelligence (LSP), GitHub code search, cross-repo awareness\n- **Multi-file editing**: coordinated changes, architecture-level refactoring, framework migrations\n- **Enterprise**: organization policies, model access controls, content exclusions, trust boundaries\n- **SDLC workflow**: Plan agent, implementation agent, Copilot code review, background/cloud handoff\n- **Scale**: large codebases, monorepos, multi-root workspaces, remote indexing\n","frontmatter":{"name":"docs-product-alignment","description":"Audit and update docs/copilot/ documentation to accurately reflect current VS Code AI capabilities. Use when: competitive analysis reveals gaps, product launches new features, docs use outdated framing, or keyword coverage needs strengthening for discoverability by users and AI agents. Produces a gap analysis plus targeted edits across affected files."},"isInternal":false,"tokens":987,"sizeBytes":4764},{"name":"SKILL.md","path":".github/skills/frontmatter-description/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/frontmatter-description/SKILL.md","title":"frontmatter-description","category":"anthropic-skill","format":"markdown","content":"---\nname: frontmatter-description\ndescription: 'Check and optimize MetaDescription frontmatter fields in VS Code documentation. Use when auditing, adding, or improving page descriptions for SEO and discoverability. Apply this when making content changes to markdown articles.'\n---\n\n# Frontmatter Description\n\nCheck and optimize `MetaDescription` frontmatter fields in markdown documentation files. Produces actionable fixes for descriptions that violate the rules below.\n\n## When to Use\n\n* Adding or editing a documentation page and need to write a `MetaDescription`.\n* Auditing existing pages for SEO or discoverability improvements.\n* Asked to check, review, or optimize frontmatter descriptions.\n* Editing content articles and want to ensure the `MetaDescription` reflects the updated content.\n\n## Rules\n\nEvery `MetaDescription` value must satisfy **all** of the following:\n\n| Rule | Detail |\n|------|--------|\n| **Length** | Maximum 160 characters. |\n| **Tone** | Action-oriented, value-focused, factual, and impersonal. |\n| **Voice** | No \"you can\", \"users can\", or \"this page explains\". |\n| **Sentences** | Complete sentences, not fragments or labels. |\n| **No colons** | Do not include `:` in the value — it breaks YAML parsing. |\n| **Uniqueness** | Each description must be unique across the docs. |\n| **Reusable variables** | Preserve existing `{% data variables.<group>.<name> %}` references. Do not replace them with rendered product names. |\n\nDescriptions must also reflect the page's primary persona, reader intent, and article purpose. Establish that framing by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing) before suggesting or applying a description. If the existing page and writer's request support multiple materially different interpretations, ask the writer to confirm the framing before editing.\n\n## Procedure\n\n### 1. Identify target files\n\nDetermine which files to check:\n\n* If given specific files, use those.\n* If asked to audit a folder (e.g., `docs/copilot/`), find all `.md` files in that folder recursively.\n* Skip files that have no YAML frontmatter (e.g., `README.md` files without `---` delimiters).\n\n### 2. Extract and validate\n\nFor each file, read enough of the page to identify its primary persona, reader intent, and article purpose. Then read the YAML frontmatter and check the `MetaDescription` field:\n\n1. **Missing** — Flag if `MetaDescription` is absent.\n2. **Length** — Flag if the value exceeds 160 characters. Report the current length.\n3. **Voice** — Flag if it contains \"you can\", \"users can\", \"this page explains\", or similar reader-addressing phrases.\n4. **Tone** — Flag if the description is a fragment, a label, or passive rather than action-oriented.\n5. **Context** — Flag if the description does not mention the relevant feature or tool.\n6. **Content alignment** — Flag if the description does not represent the page's purpose or the outcome sought by its primary persona.\n7. **Forbidden words** — Flag any occurrence of \"teaching\", \"enable\", \"disable\", or condescending terms.\n8. **Colons** — Flag any `:` character in the value.\n9. **Versions** — Flag any version numbers (e.g., \"v1.90\", \"VS Code 1.90\").\n10. **Formatting** — Flag Jinja2 variables (`{{...}}`), HTML tags, or Markdown formatting. Do not flag supported reusable data variables (`{% data variables.<group>.<name> %}`).\n11. **Reusable variables** — When a description contains a reusable data variable, verify that its full path exists in [`data/variables`](../../../data/variables/README.md) and resolves to the intended text. Preserve valid variables exactly as written.\n\n### 3. Report findings\n\nPresent results as a table:\n\n```\n| File | Issue | Current value | Suggested fix |\n|------|-------|---------------|---------------|\n```\n\n* Group by file path.\n* For each issue, provide the current `MetaDescription` and a rewritten suggestion that passes all rules.\n* If a description passes all checks, omit it from the table (or mark it as passing if the user asked for a full report).\n\n### 4. Apply fixes (when asked)\n\n* Edit the `MetaDescription` value in the YAML frontmatter.\n* Do not change any other frontmatter fields.\n* Do not alter the page body content.\n* Preserve existing reusable data variables. Never replace a variable with its rendered product name.\n* Verify the fix passes all rules and reflects the confirmed page framing before applying.\n\n## Examples\n\n**Good descriptions:**\n\n* `Get AI-powered inline suggestions from GitHub Copilot in VS Code, including ghost text completions and next edit suggestions.`\n* `Configure and manage extensions in Visual Studio Code to customize your development environment.`\n* `Debug Python applications in Visual Studio Code with breakpoints, variable inspection, and integrated terminal output.`\n* `Build a web app with an AI agent in {% data variables.product.prodname_vscode_shortname %}, then review and validate the result.`\n\n**Bad descriptions and why:**\n\n| Description | Problem |\n|-------------|---------|\n| `This page explains how to use Copilot.` | Uses \"this page explains\". |\n| `You can debug your code with VS Code.` | Uses \"you can\". |\n| `Copilot` | Fragment, not a sentence. |\n| `Learn how to enable the new feature in VS Code 1.90.` | Uses \"enable\" and includes a version number. |\n| `Set up debugging: configure launch.json for Python.` | Contains a colon. |\n","frontmatter":{"name":"frontmatter-description","description":"Check and optimize MetaDescription frontmatter fields in VS Code documentation. Use when auditing, adding, or improving page descriptions for SEO and discoverability. Apply this when making content changes to markdown articles."},"isInternal":false,"tokens":1194,"sizeBytes":5426},{"name":"SKILL.md","path":".github/skills/pr-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/pr-review/SKILL.md","title":"pr-review","category":"anthropic-skill","format":"markdown","content":"---\nname: pr-review\ndescription: 'Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode and microsoft/vscode-copilot-chat. Use when reviewing a docs PR for factual correctness — setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.'\nargument-hint: '<PR number or branch> (defaults to the current PR / branch)'\n---\n\n# PR Technical Accuracy Review\n\nReview a vscode-docs pull request and verify every factual claim about VS Code behavior against the source code in `microsoft/vscode` and `microsoft/vscode-copilot-chat`. Produce an actionable list of findings the author can address before merging.\n\nThis skill checks **technical accuracy only**. It does not enforce writing style, frontmatter, or release-notes structure — use the `release-note-writer` or `frontmatter-description` skills for those.\n\n## When to Use\n\n* Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.\n* Auditing existing docs for drift after a feature has changed.\n* Asked to \"fact-check\", \"verify\", or \"validate\" a docs change against the product.\n* Before merging a PR that touches `docs/`, `api/`, `remote/`, or release-notes content tied to a specific behavior.\n\nDo **not** use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.\n\n## Repos to Check\n\n| Area being documented | Primary source repo(s) |\n|----------------------|------------------------|\n| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat | `microsoft/vscode-copilot-chat` |\n| Extension API, contribution points, `package.json` schema | `microsoft/vscode` (under `src/vs/workbench/api/`, `src/vscode-dts/`, and `extensions/`) |\n| Enterprise policies | `microsoft/vscode` (policy definitions) — note that `enterprise/policies.md` is generated; verify against source, not the generated file |\n\nUse the `gh` CLI for all GitHub interactions (see user memory `gh-cli-powershell.md` for PowerShell-specific patterns).\n\n## Procedure\n\n### 1. Identify the PR and its diff\n\n* If a PR number was given, run `gh pr view <number> --json number,title,headRefName,baseRefName,files,body` to get metadata and the file list.\n* If no argument was given, run `gh pr view --json ...` to use the PR for the current branch. If there is no associated PR, fall back to `git diff origin/main...HEAD`.\n* Get the actual changed lines with `gh pr diff <number>` (or `git diff` for a branch).\n* Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).\n\n### 2. Extract verifiable claims\n\nWalk the diff and build a list of every claim that can be checked against source code. Include line numbers from the new file content. Categories to look for:\n\n| Category | Examples |\n|----------|----------|\n| **Setting** | `editor.fontSize`, `chat.agent.enabled`, default values, allowed enum values, deprecation status |\n| **Command** | Command IDs (`workbench.action.*`), command palette titles, the action they perform |\n| **Keybinding** | Default key bindings, `when` clauses, platform-specific overrides |\n| **Menu / UI label** | Menu item text, button labels, view titles, walkthrough step titles |\n| **API** | Names, signatures, and shapes in `vscode.d.ts` / `vscode.proposed.*.d.ts` |\n| **Contribution point** | `package.json` schema entries (`contributes.*`), required fields |\n| **Chat tool / participant** | Tool names, participant IDs, tool input/output schemas, agent mode availability |\n| **MCP** | Server config schema, supported transports, capability flags |\n| **Version availability** | \"Available since 1.X\" / \"New in 1.X\" claims |\n| **Default behavior** | What happens out-of-the-box, what is on/off by default |\n| **Policy** | Policy names, supported values, scope |\n\nTreat anchor-style references (e.g., `setting(chat.agent.enabled)`, `command:workbench.action.X`) as claims to verify.\n\n### 3. Verify each claim\n\nFor every claim, locate the source of truth and compare. Prefer one targeted lookup per claim — do not download full files when a search will do.\n\n**Search the source repos** (parallelize independent lookups):\n\n* `gh search code --repo microsoft/vscode '\"<exact-string>\"'` for setting IDs, command IDs, contribution keys.\n* `gh search code --repo microsoft/vscode-copilot-chat '\"<exact-string>\"'` for chat tool names, participant IDs, agent-mode flags.\n* `gh api \"search/code?q=<query>+repo:microsoft/vscode\"` when the `gh search` CLI quotes the query in a way that breaks qualifiers (see user memory `gh-cli-powershell.md`).\n* `gh api repos/microsoft/vscode/contents/<path>?ref=main` to read a specific file.\n\n**Where things live (common starting points):**\n\n* Settings — search for `'<setting.id>'` near `registerConfiguration` calls; default values are in the `default:` field of the schema.\n* Commands — search for `CommandsRegistry.registerCommand` or `registerAction2` with the matching `id`.\n* Keybindings — search for `KeybindingsRegistry.registerKeybindingRule` or look in `src/vs/workbench/browser/parts/editor/...` and feature folders.\n* Extension API — `src/vscode-dts/vscode.d.ts` (stable) and `src/vscode-dts/vscode.proposed.*.d.ts` (proposed).\n* Chat tools — search `microsoft/vscode-copilot-chat` for `displayName`, `toolReferenceName`, or the tool ID string.\n* Contribution points — `extensions/<ext>/package.json` and the schema in `src/vs/workbench/api/common/extHost*.ts`.\n\n**Version availability** — when a doc claims \"since 1.X\":\n\n* `gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X` to see if the symbol existed in that branch, or\n* `gh search commits --repo microsoft/vscode '<symbol>'` to find when it was introduced.\n\nIf a claim cannot be verified after a reasonable search, mark it **Unverified** rather than failing it — the author may have access to context the source does not expose.\n\n### 4. Categorize each finding\n\n| Severity | Use when |\n|----------|----------|\n| **Error** | The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |\n| **Warning** | The claim is partially correct but misleading (default changed in a recent release, behavior is platform-specific and the doc does not say so, feature is behind a setting the doc does not mention). |\n| **Suggestion** | Optional clarification — link to the source, add a \"since 1.X\" note, mention a related setting. |\n| **Unverified** | Could not locate the source of truth; ask the author to confirm. |\n\n### 5. Produce the findings list\n\nOutput a Markdown report with this structure:\n\n```markdown\n## PR Accuracy Review: #<number> — <title>\n\n**Files reviewed:** <count>\n**Claims checked:** <count>\n**Result:** <Pass | Pass with warnings | Needs changes>\n\n### Errors\n\n* **`<file>`:L<line>** (`<category>`) — <one-line description>\n  * Doc says: `<quoted text>`\n  * Source: `<repo>/<path>#L<line>` — <what the source actually says>\n  * Fix: <specific suggested correction>\n\n### Warnings\n\n* ...\n\n### Suggestions\n\n* ...\n\n### Unverified\n\n* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.\n```\n\nRules for the report:\n\n* Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the `fileLinkification` rules.\n* For source-code citations, include the repo, file path, and (when known) line or commit. A `gh`-friendly URL is fine: `https://github.com/microsoft/vscode/blob/main/<path>#L<line>`.\n* Quote the doc text exactly so the author can search for it.\n* Keep each finding to one issue — split combined problems into separate items.\n* If everything checks out, say so explicitly and skip the empty sections.\n\n### 6. Summary\n\nEnd with:\n\n* Counts by severity.\n* An overall verdict: **Pass**, **Pass with warnings**, or **Needs changes** (any Errors → Needs changes).\n* A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.\n\n## Notes\n\n* Do **not** push commits or post review comments on the PR unless the user explicitly asks. This skill produces a report for the user to act on.\n* Do **not** edit `enterprise/policies.md` — it is generated; flag policy issues against `enterprise/policies-template.md` and the source policy definitions instead.\n* When the doc references screenshots or videos, do not attempt to verify their contents — only verify any captions, labels, or alt text that make factual claims.\n* Prefer `main` as the source-of-truth ref unless the PR explicitly documents behavior on a release branch or Insiders-only feature, in which case check `release/1.X` or recent commits accordingly.\n","frontmatter":{"name":"pr-review","description":"Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode and microsoft/vscode-copilot-chat. Use when reviewing a docs PR for factual correctness — setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.","argument-hint":"<PR number or branch> (defaults to the current PR / branch)"},"isInternal":false,"tokens":2112,"sizeBytes":8890},{"name":"v1_109.md","path":".github/skills/release-note-writer/examples/v1_109.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/examples/v1_109.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"# Examples Skill\n\nPath: `.github/skills/release-note-writer/examples/v1_109.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/examples/v1_109.md)","tokens":300,"sizeBytes":225},{"name":"review-procedure.md","path":".github/skills/release-note-writer/review-procedure.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/review-procedure.md","title":"Release-note-writer Skill","category":"anthropic-skill","format":"markdown","content":"# Release-note-writer Skill\n\nPath: `.github/skills/release-note-writer/review-procedure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/review-procedure.md)","tokens":300,"sizeBytes":238},{"name":"SKILL.md","path":".github/skills/release-note-writer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/SKILL.md","title":"release-note-writer","category":"anthropic-skill","format":"markdown","content":"---\nname: release-note-writer\ndescription: Guidelines for writing and reviewing Insiders and Stable release notes for Visual Studio Code. This also includes instructions for updating release notes for recovery releases.\n---\n# Visual Studio Code Release Note Writer Guidelines\n\nThis skill is designed to help you write release notes for Visual Studio Code Insiders and Stable releases. It provides structured guidelines and examples to ensure consistency and clarity in the release notes.\n\nThere are two main types of release notes you can generate using this skill:\n\n1. **Insiders Release Notes**: These notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\n2. **Stable Release Notes**: These notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\nYour task is help generate these release notes based on the provided guidelines, examples, and templates.\n\n## General writing guidelines for release notes\n\nFollow the guidelines in this order of priority:\n\n1. [Release notes writing instructions](../../instructions/release-notes-writing.instructions.md)\n2. [Visual Studio Code documentation writing guidelines](../../instructions/docs-writing.instructions.md)\n\nBefore writing or retaining an entry, verify that the functionality is available in the public release channel covered by the notes. Public Insiders, Preview, and Experimental functionality qualifies when labeled clearly. Exclude and report internal dogfood, hidden settings or commands, source-only implementation, and manually settable internal feature flags. An internal setting can be referenced only under the narrow exception in the release notes writing instructions: the user must explicitly request the specific reference and then confirm it before you add it.\n\n## Insiders Release Notes\n\nInsiders release notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\nYour task is to generate release notes for the specified VS Code Insiders release version based on GitHub issues and PRs.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no milestone name is specified, check if the milestone name is in the frontmatter, otherwise ask the user for the milestone name.\nIf no label is specified, use the \"feature-request\" label by default.\n\nDO NOT continue until you have the release version and milestone name!!\n\n### File format\n\nIssues are grouped in H2 sections by their closed date. The TOC must be updated to reflect the new sections and issues added.\n\nUse [this template](../../../templates/template-release-note-insiders.md) for the Insiders release notes.\n\nThe [1.109 release notes](./examples/v1_109.md) are a concrete example of an Insiders release note.\n\n### Generation steps\n\n1. If there is not an existing Insiders release note for the specified version, create a new release note file using the Insiders release note template and replace the placeholders.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. Do not insert a banner image or add a statement that the release notes were generated by AI or GitHub Copilot.\n\n1. Get last update date from existing release notes for the specified release version. If no existing release notes, disregard last update date.\n\n1. Run a subagent to fetch all closed GitHub issues in the microsoft/vscode repo for the milestone that have the specified label and closed date as of the latest update date by using the github CLI. Save the JSON in the release note document.\n\n    Use this CLI command: `gh search issues --repo microsoft/vscode --label <label name> --milestone <milestone name> --state closed \"closed:>=<latest update date>\" -L 100`\n\n1. Verify that each candidate is available in the public Insiders build. Exclude and report internal-only candidates instead of creating entries for them.\n\n1. Ignore issues that are marked as duplicate or not planned.\n\n1. For each issue in the JSON result, run a subagent to update the release notes and TOC with a concise, technically accurate summary of the issue. Use associated PRs to verify details, but do not include implementation details in the entry. At the end of the summary, include a link to the GH issue which include the issue number and title (format: #12345: Issue title). Group issues under an H2 section that represents the closed date.\n\n### Phrasing guidelines for Insiders entries\n\n- Treat each entry as a changelog item. Use one short sentence whenever possible.\n- State only the user-visible change and essential configuration or lifecycle information.\n- Add a second sentence only when a constraint, fallback, or compatibility detail is necessary to use the feature correctly.\n- Omit background context, implementation details, testing instructions, and information already clear from the issue link.\n- When describing new capabilities, prefer the format \"Add support for ...\" over \"... now supports ...\". For example, write \"Add support for sorting sessions by date\" rather than \"The sessions view now supports sorting by date\".\n- Avoid using the word \"now\" in entries. State what changed directly instead. For example, write \"Branch names are generated based on the user's prompt\" rather than \"Branch names are now generated based on the user's prompt\".\n\n## Stable Release Notes\n\nStable release notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no release month and year are specified, ask the user for the release month and year.\nDO NOT continue until you have the release version and release month and year!!\n\n### File format\n\nUse [this template](../../../templates/template-release-note-endgame.md) for generating the initial Stable release notes.\n\n### Generation steps\n\n1. If there is not an existing release note for the specified version, create a new release note file using the Stable release note template.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. If there is an existing release note for the specified version, and it's an Insiders release note, replace the content with the Stable release note template content.\n\n1. If there is an existing Stable release note for the specified version, perform a code review of the existing release note to ensure it adheres to the writing guidelines. Suggest improvements as needed.\n\n1. Verify that each feature is available in the Stable release being documented. Exclude and report internal-only features, and do not infer availability from source-code existence alone.\n\n### Value proposition and feature framing\n\nThe [writing instructions](../../instructions/release-notes-writing.instructions.md) define the value-proposition and feature-continuity rules. When writing Stable entries, keep these essentials top of mind:\n\n* Open each entry with the user benefit or the problem being solved, then explain mechanics.\n* For multi-release features, re-establish context in 1-2 sentences so the entry stands on its own.\n* For admin/policy features, cover both the admin use case and the developer-facing impact.\n* Prefer concrete examples and before/after comparisons over vague claims.\n\n### Verify context gaps with the user\n\nAfter a first pass of all feature sections, review the draft for gaps you cannot resolve from the issue, PR, or existing docs. Batch all gaps into a single ask-questions prompt rather than interrupting per section. Ask when:\n\n* **Value prop unclear**: You cannot confidently write a benefit-first opening from the source material.\n* **Multi-release context missing**: A feature builds on prior work but you cannot find earlier entries to reference.\n* **Audience ambiguous**: Framing differs depending on whether the audience is developers, admins, or extension authors.\n* **Docs coverage thin**: A feature references a concept that is undocumented or only mentioned as a sidenote, and you need guidance on how much to explain inline.\n\nFor each gap, include your best-guess draft so the user can confirm or correct rather than write from scratch.\n\nBefore asking, search the `docs/` folder for any referenced concepts. If docs coverage is thorough, link to the page and skip the question. Only flag concepts where coverage is thin or absent.\n\n## Recovery release notes\n\nWhen a recovery release is needed, a note is added to the top of the release notes that links to the issues resolved in the recovery release. In addition, the download version is updated to the recovery release version. The rest of the release notes remain unchanged.\n\nPerform these steps to update the release notes for a recovery release:\n\n1. Update the `DownloadVersion` in the frontmatter to the recovery release version.\n\n1. Add a note at the top of the release notes, right after the release date, that links to the issues resolved in the recovery release:\n\n    ```markdown\n    **Update <recovery version>**: The update addresses these [issues](https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A<recovery version>).\n    ```\n\n    When multiple recovery releases are needed, add the note for each recovery release in chronological order.\n\n\n## Review Procedure\n\nTo review release notes, follow the full [review procedure](./review-procedure.md). This covers both standalone review and post-write validation, with checklists for Insiders and Stable release notes.\n","frontmatter":{"name":"release-note-writer","description":"Guidelines for writing and reviewing Insiders and Stable release notes for Visual Studio Code. This also includes instructions for updating release notes for recovery releases."},"isInternal":false,"tokens":2031,"sizeBytes":10327},{"name":"SKILL.md","path":".github/skills/write-my-release-notes/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/write-my-release-notes/SKILL.md","title":"write-my-release-notes","category":"anthropic-skill","format":"markdown","content":"---\nname: write-my-release-notes\ndescription: 'Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to \"write release notes for my features\", \"document my milestone features\", or \"generate release notes from my issues\". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.'\nargument-hint: '<milestone name>'\n---\n\n# VS Code Release Features Writer\n\nThis skill turns the features you worked on in a VS Code milestone into polished, user-focused release note sections. It gathers the features you own from GitHub using the `gh` CLI, then documents every one of them in the milestone's release notes file.\n\nUse this skill when the user wants to draft or update the feature sections of a milestone's release notes based on the issues and test plan items they worked on.\n\n## Prerequisites\n\n* **Prefer the GitHub MCP server** for all GitHub queries when it is available. Use its issue search and issue read capabilities to run the queries and read the bodies, labels, and comments described below.\n* **Fall back to the `gh` CLI** only when the GitHub MCP server is not available. In that case, ensure it is authenticated (`gh auth status`); the `gh` commands below implement the same queries.\n* Queries use `@me`, so results are scoped to the authenticated user.\n\n## Input parameters\n\n* **Milestone name**: If the user does not provide a milestone name, ask the user for it. Do not continue until you have the milestone name.\n\n## Locate the release notes file\n\n1. Confirm the milestone name with the user.\n1. Find the release notes file under the `/release-notes` folder. The file name does **not** match the milestone name, so search the folder contents for the text `TOCTitle: <milestone name>` (for example, `TOCTitle: April 2016`).\n1. If no file exists for the milestone, create one using the appropriate template in `/templates` and a filename of the form `v<version>.md` (for example, `v1_109.md`).\n\n## Identify features to document\n\nGather the features the user owns by running the following GitHub search queries. Use the **GitHub MCP server** if available; otherwise use the **`gh` CLI** commands shown below. Substitute `<milestone>` with the milestone name (keep the surrounding quotes). Collect each issue's `number`, `title`, `body`, `url`, `labels`, and comments.\n\n### Step 0 — Consult prior context (optional).\nIf you have persistent memory, notes, or prior context about this milestone (coverage decisions, features you own that the label queries won't surface, work intentionally excluded), review it before the GitHub queries and reconcile against the results. Skip if you have none.\n\n### Step 1 — Feature-request issues assigned to you\n\n```bash\ngh search issues 'org:microsoft milestone:\"<milestone>\" label:feature-request assignee:@me' \\\n  --limit 100 --json number,title,body,url,labels,repository\n```\n\nProcess the results:\n\n* **Skip** any issue labeled `*duplicate` or `*out-of-scope`.\n* If an issue is labeled `on-testplan`, **set it aside** — do not document it directly. It will be attached as a related issue to its test plan item in Step 2.\n* All remaining issues are release features to document.\n\n### Step 2 — Test plan items authored by you\n\n```bash\ngh search issues 'repo:microsoft/vscode milestone:\"<milestone>\" label:testplan-item author:@me' \\\n  --limit 100 --json number,title,body,url,labels\n```\n\nEach test plan item is also a release feature to document. List the test plan item features **first**, before the feature-request features from Step 1. For each test plan item, collect related issues that provide the real feature detail:\n\n* **Issues filed against the test plan item** — closed issues that reference it during testing:\n\n    ```bash\n    gh search issues 'repo:microsoft/vscode is:closed Testing <testplan-item-number>' \\\n      --limit 100 --json number,title,body,url,labels\n    ```\n\n* **Set-aside `on-testplan` issues from Step 1** whose issue number appears in the test plan item's body — attach these as related issues too.\n\n### Step 2.5 — Reconcile against all your milestone work (catch mislabeled features)\n\nThe label queries in Steps 1 and 2 only find issues labeled `feature-request` or `testplan-item`. Real features are often tracked under other labels during the endgame — for example a feature that shipped a fix may carry `bug`, `verification-needed`, or `polish` instead. **Do not trust the label queries to be exhaustive.** Run these broader queries and reconcile the results against what Steps 1 and 2 already surfaced:\n\n```bash\ngh search issues --owner microsoft --assignee @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\ngh search issues --owner microsoft --author @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\n```\n\nFor every issue these return that is **not** already covered by Steps 1 and 2, judge it on its content, not its label:\n\n* If it describes a **user-facing capability** (a new command, setting, UI, deep link, workflow), document it as a feature — regardless of whether it is labeled `bug`, `verification-needed`, `polish`, or something else. A \"bug\" that adds or restores a capability users will notice is a release feature.\n* If it is a **pure defect fix, internal cleanup, or minor polish** with no user-facing capability, leave it out of the feature sections (it belongs in \"Notable fixes\" at most).\n* When in doubt, read the body and comments (Step 3) before deciding, and ask the user whether to include it.\n\nIf you have persistent memory or prior context about this milestone (Step 0), cross-check each remembered feature you own against the combined results here — a feature noted in memory but missing from the query output is exactly the kind of item that slips through mislabeling.\n\n### Step 3 — Fetch comments for each issue\n\nThe search queries above may not return comments (the `gh search issues` `--json` output does not include them). For every feature and related issue you plan to use, read the full body and comments for context — use the GitHub MCP server's issue read capability if available, otherwise the `gh` CLI:\n\n```bash\ngh issue view <number> --repo <owner/repo> --json number,title,body,url,labels,comments\n```\n\nDocument **every** feature gathered from Steps 1, 2, and 2.5 — none should be skipped. Most features are identified by one of these labels:\n\n* `feature-request` — a standard feature request issue. Its description and comments contain the feature details.\n* `testplan-item` — a structured test plan for the feature. Its description contains in-depth details plus setup and test steps.\n\nSome features surface only through Step 2.5 under other labels (for example `bug`, `verification-needed`, or `polish`). Treat those as features too when they describe a user-facing capability — the label does not disqualify them.\n\nUse the related issues (from Step 2) to pull in additional context (their summary, description, and comments).\n\n## Build each feature section\n\nGather and analyze all relevant details before writing:\n\n* The summary, description, and comments of the feature itself.\n* The summary, description, and comments of every related issue.\n\nThen write a comprehensive, user-focused section for each feature:\n\n* **Feature title**\n    * Use a concise, descriptive title that identifies the feature. Use sentence case.\n    * Do **not** take the title from a `testplan-item`, because that title is written for testing.\n    * If the feature is in Preview or Experimental, include that status in the heading, for example `### New JavaScript debugging experience (Preview)`.\n* **Feature description**\n    * Do not add a \"Feature Description\" header — start directly with the prose under the heading.\n    * Explain the feature, its purpose, and any constraints users should be aware of.\n    * Never include testing content: no setup, test instructions, or validation steps.\n* **Value proposition** — every section must answer \"Why should the user care?\"\n    * Lead with the user benefit or the problem being solved, then explain the mechanics. State the pain point first, then the resolution.\n    * Avoid describing only what changed. A mechanism (\"buffer-based rendering\") is not a benefit (\"chat responses feel more fluid\").\n    * Link to relevant [VS Code documentation](https://code.visualstudio.com/docs/) when referencing tools, APIs, or concepts that are not common developer knowledge. Expand inline when docs coverage is thin.\n    * For admin and policy features, cover both the administrative use case (compliance, security, cost control) and the developer-productivity impact.\n* **Feature continuity for multi-release features**\n    * For features that span multiple releases (for example, Agents, Customization UI, Sandboxing), add a 1-2 sentence reminder of what the feature is and its goal before describing what changed this release.\n    * The first release of a feature should lead with benefit-oriented bullets. Later releases should still re-establish context.\n\n## Writing guidelines\n\nFollow the [release notes writing instructions](../../instructions/release-notes-writing.instructions.md) first, then the [VS Code documentation writing guidelines](../../instructions/docs-writing.instructions.md). Key rules:\n\n* Use sentence case for headings; do not apply italic, bold, or inline code styling to headings.\n* Use absolute documentation links that start with `https://code.visualstudio.com/docs/` and omit the `.md` suffix. Use descriptive link text — never \"click here\", \"this link\", or \"here\".\n* Image alt text must describe the content and start with \"Screenshot showing\" or \"Screenshot of\". Video alt text must start with \"Video showing\" or \"Video of\" and use the `<video>` tag: `<video src=\"[URL]\" title=\"[description].\" autoplay loop controls muted></video>`.\n* Format notes and tips as block quotes with a bold **Note** or **Tip** prefix. Use asterisks for list items.\n* Reference settings with the `setting(setting.name)` format and keyboard shortcuts with the `kb(command.commandId)` format.\n* Avoid marketing language and the word \"now\". State what changed directly and prefer concrete before/after examples over vague claims like \"improved support\".\n* Group features that share a theme (for example, several agent improvements) and lead with the most impactful one.\n\n## Verify technical details\n\n* Only document settings and commands that actually exist. Verify setting names, values, and command IDs before referencing them.\n* Fact-check all technical details and confirm every link and reference resolves.\n* Keep terminology and structure consistent with existing release notes.\n\n## Writing to the file\n\n* Write **only** the feature documentation sections. Do not add version headers, welcome messages, or update summaries.\n* Start directly with `###` feature headings.\n* Do not leave TODO placeholders.\n* Save the changes to the milestone release notes file.\n","frontmatter":{"name":"write-my-release-notes","description":"Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to \"write release notes for my features\", \"document my milestone features\", or \"generate release notes from my issues\". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.","argument-hint":"<milestone name>"},"isInternal":false,"tokens":2384,"sizeBytes":11105},{"name":"launch.json","path":".vscode/extensions/doc-assistant/.vscode/launch.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/launch.json","title":".vscode Skill","category":"anthropic-skill","format":"json","content":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/launch.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/launch.json)","tokens":300,"sizeBytes":222},{"name":"settings.json","path":".vscode/extensions/doc-assistant/.vscode/settings.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/settings.json","title":".vscode Skill","category":"anthropic-skill","format":"json","content":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/settings.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/settings.json)","tokens":300,"sizeBytes":226},{"name":"tasks.json","path":".vscode/extensions/doc-assistant/.vscode/tasks.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/tasks.json","title":".vscode Skill","category":"anthropic-skill","format":"json","content":"# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/tasks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/tasks.json)","tokens":300,"sizeBytes":220},{"name":"package-lock.json","path":".vscode/extensions/doc-assistant/package-lock.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package-lock.json","title":"Doc-assistant Skill","category":"anthropic-skill","format":"json","content":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package-lock.json)","tokens":300,"sizeBytes":224},{"name":"package.json","path":".vscode/extensions/doc-assistant/package.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package.json","title":"Doc-assistant Skill","category":"anthropic-skill","format":"json","content":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package.json)","tokens":300,"sizeBytes":214},{"name":"tsconfig.json","path":".vscode/extensions/doc-assistant/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/tsconfig.json","title":"Doc-assistant Skill","category":"anthropic-skill","format":"json","content":"# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/tsconfig.json)","tokens":300,"sizeBytes":216},{"name":"activation-events.md","path":"api/references/activation-events.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/activation-events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: C83BB647-A37E-45CE-BA4C-837B397C2ABE\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: To support lazy activation of Visual Studio Code extensions (plug-ins), your extension controls when it should be loaded through a set of Activation Events.\n---\n\n# Activation Events\n\n**Activation Events** is a set of JSON declarations that you make in the `activationEvents` field of `package.json` [Extension Manifest](/api/references/extension-manifest). Your extension becomes activated when the **Activation Event** happens. Here is a list of all available **Activation Events**:\n\n- [`onAuthenticationRequest`](/api/references/activation-events#onAuthenticationRequest)\n- [`onChatParticipant`](/api/references/activation-events#onChatParticipant)\n- [`onCommand`](/api/references/activation-events#onCommand)\n- [`onCustomEditor`](/api/references/activation-events#onCustomEditor)\n- [`onDebug`](/api/references/activation-events#onDebug)\n  - [`onDebugAdapterProtocolTracker`](/api/references/activation-events#onDebugAdapterProtocolTracker)\n  - [`onDebugDynamicConfigurations`](/api/references/activation-events#onDebugDynamicConfigurations)\n  - [`onDebugInitialConfigurations`](/api/references/activation-events#onDebugInitialConfigurations)\n  - [`onDebugResolve`](/api/references/activation-events#onDebugResolve)\n- [`onEditSession`](/api/references/activation-events#onEditSession)\n- [`onFileSystem`](/api/references/activation-events#onFileSystem)\n- [`onIssueReporterOpened`](/api/references/activation-events#onIssueReporterOpened)\n- [`onLanguage`](/api/references/activation-events#onLanguage)\n- [`onLanguageModelTool`](/api/references/activation-events#onLanguageModelTool)\n- [`onNotebook`](/api/references/activation-events#onNotebook)\n- [`onOpenExternalUri`](/api/references/activation-events#onOpenExternalUri)\n- [`onRenderer`](/api/references/activation-events#onRenderer)\n- [`onSearch`](/api/references/activation-events#onSearch)\n- [`onStartupFinished`](/api/references/activation-events#onStartupFinished)\n- [`onTaskType`](/api/references/activation-events#onTaskType)\n- [`onTerminal`](/api/references/activation-events.md#onTerminal)\n    - [`onTerminalProfile`](/api/references/activation-events#onTerminalProfile)\n    - [`onTerminalShellIntegration`](/api/references/activation-events.md#onTerminalShellIntegration)\n- [`onUri`](/api/references/activation-events#onUri)\n- [`onView`](/api/references/activation-events#onView)\n- [`onWalkthrough`](/api/references/activation-events#onWalkthrough)\n- [`onWebviewPanel`](/api/references/activation-events#onWebviewPanel)\n- [`workspaceContains`](/api/references/activation-events#workspaceContains)\n- [`*`](/api/references/activation-events#Start-up)\n\nWe also provide a reference of all fields in the [`package.json` extension manifest](/api/references/extension-manifest).\n\n## onLanguage\n\nThis activation event is emitted and interested extensions will be activated whenever a file that resolves to a certain language gets opened.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:python\"\n]\n```\n\nThe `onLanguage` event takes a [language identifier](/docs/languages/identifiers) value.\n\nMultiple languages can be declared with separate `onLanguage` entries in the `activationEvents` array.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:json\",\n    \"onLanguage:markdown\",\n    \"onLanguage:typescript\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, languages contributed by your extension do not require a corresponding `onLanguage` activation event declaration for your extension to be activated.\n\nAdditionally, if your extension needs to be activated before any language is used, you can use the generic `onLanguage` activation event to ensure this:\n\n```json\n\"activationEvents\": [\n    \"onLanguage\"\n]\n```\n\n> **Note**: It is best practice to activate only when a user needs your extension. If your extension works on a subset of languages, it is better for the user to list that subset than to activate on all languages.\n\n## onCommand\n\nThis activation event is emitted and interested extensions will be activated whenever a command is being invoked:\n\n```json\n\"activationEvents\": [\n    \"onCommand:extension.sayHello\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, commands contributed by your extension do not require a corresponding `onCommand` activation event declaration for your extension to be activated.\n\n## onDebug\n\nThis activation event is emitted and interested extensions will be activated before a debug session is started:\n\n```json\n\"activationEvents\": [\n    \"onDebug\"\n]\n```\n\nThese are four more fine-grained `onDebug` activation events:\n\n### onDebugAdapterProtocolTracker\n\n`onDebugAdapterProtocolTracker` is emitted whenever a debug session with the specific type is about to be launched and a debug protocol tracker might be needed.\n\n### onDebugDynamicConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide dynamic debug configurations when the user asks for them, such as through the UI via the \"Select and Start Debugging\" command.\n\nThe presence of this activation event is used as a signal that the extension contributes dynamic debug configurations.\n\n### onDebugInitialConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide initial debug configurations, such as whenever a `launch.json` needs to be created.\n\n### onDebugResolve\n\n`onDebugResolve:type` is fired just before the `resolveDebugConfiguration` method of the `DebugConfigurationProvider` for the specified type is called.\n\n**Rule of thumb:** If activation of a debug extension is lightweight, use `onDebug`. If it is heavyweight, use `onDebugInitialConfigurations` and/or `onDebugResolve` depending on whether the `DebugConfigurationProvider` implements the corresponding methods `provideDebugConfigurations` and/or `resolveDebugConfiguration`. See [Using a DebugConfigurationProvider](/api/extension-guides/debugger-extension#using-a-debugconfigurationprovider) for more details on these methods.\n\n## workspaceContains\n\n`workspaceContains:path` is emitted and interested extensions will be activated whenever a folder is opened and the folder contains at least one file that matches a [glob pattern](/docs/editor/glob-patterns).\n\n```json\n\"activationEvents\": [\n    \"workspaceContains:**/.editorconfig\"\n]\n```\n\n## onFileSystem\n\n`onFileSystem:scheme` is emitted and interested extensions will be activated whenever a file or folder from a specific _scheme_ is read. This is usually the `file`-scheme, but with custom file system providers more schemes come into place, e.g `ftp` or `ssh`.\n\n```json\n\"activationEvents\": [\n    \"onFileSystem:sftp\"\n]\n```\n\n## onView\n\nThis activation event is emitted and interested extensions will be activated whenever a view of the specified id is expanded in the VS Code sidebar. Built-in views do not emit an activation event.\n\nThe activation event below will fire whenever a view with the `nodeDependencies` id is visible:\n\n```json\n\"activationEvents\": [\n    \"onView:nodeDependencies\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, views contributed by your extension do not require a corresponding `onView` activation event declaration for your extension to be activated.\n\n## onUri\n\nThis activation event is emitted and interested extensions will be activated whenever a system-wide Uri for that extension is opened. The Uri scheme is fixed to either `vscode` or `vscode-insiders`. The Uri authority must be the extension's identifier. The rest of the Uri is arbitrary.\n\n```json\n\"activationEvents\": [\n    \"onUri\"\n]\n```\n\nIf the `vscode.git` extension defines `onUri` as an activation event, it will be activated in any of the following Uris are open:\n\n- `vscode://vscode.git/init`\n- `vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git`\n- `vscode-insiders://vscode.git/init` (for VS Code Insiders)\n\n## onWebviewPanel\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to restore a [webview](/api/extension-guides/webview) with the matching `viewType`.\n\nFor example, the declaration of `onWebviewPanel` below:\n\n```json\n\"activationEvents\": [\n    \"onWebviewPanel:catCoding\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a webview with the viewType: `catCoding`. The viewType is set in the call to `window.createWebviewPanel` and you will need to have another activation event (for example, onCommand) to initially activate your extension and create the webview.\n\n## onCustomEditor\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to create a [custom editor](/api/extension-guides/custom-editors) with the matching `viewType`.\n\nFor example, the declaration of `onCustomEditor` below:\n\n```json\n\"activationEvents\": [\n    \"onCustomEditor:catCustoms.pawDraw\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a custom editor with the viewType: `catCustoms.pawDraw`. The viewType is set in the [`customEditors` contribution point](/api/extension-guides/custom-editors#contribution-point) and bound to a provider with `registerCustomEditorProvider`.\n\n> **Note**: Beginning with VS Code 1.74.0, custom editors contributed by your extension do not require a corresponding `onCustomEditor` activation event declaration for your extension to be activated.\n\n## onAuthenticationRequest\n\nThis activation event is emitted and interested extensions will be activated whenever an extension requests an authentication session (via the `authentication.getSession()` API) with the matching `providerId`.\n\nFor example, the declaration of `onAuthenticationRequest` below:\n\n```json\n\"activationEvents\": [\n    \"onAuthenticationRequest:github\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs retrieve an `AuthenticationSession` of type `github`.\n\n> **Note**: Beginning with VS Code 1.74.0, authentication providers contributed by your extension do not require a corresponding `onAuthenticationRequest` activation event declaration for your extension to be activated.\n\n## onStartupFinished\n\nThis activation event is emitted and interested extensions will be activated **some time after** VS Code starts up. This is similar to the `*` activation event, but it will not slow down VS Code startup. Currently, this event is emitted after all the `*` activated extensions have finished activating.\n\n```json\n\"activationEvents\": [\n    \"onStartupFinished\"\n]\n```\n\n## onTaskType\n\n`onTaskType:type` is emitted whenever tasks of a certain type need to be listed or resolved.\n\n```json\n\"activationEvents\": [\n    \"onTaskType:npm\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.76.0, tasks contributed by your extension do not require a corresponding `onTaskType` activation event declaration for your extension to be activated.\n\n## onEditSession\n\n`onEditSession:scheme` is emitted when an edit session is accessed with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onEditSession:file\"\n]\n```\n\n## onSearch\n\n`onSearch:scheme` is emitted when a search is started in the folder with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onSearch:file\"\n]\n```\n\n## onOpenExternalUri\n\nAn activation event emitted whenever an external URI, such as an http or https link, is being opened.\n\n```json\n\"activationEvents\": [\n    \"onOpenExternalUri\"\n]\n```\n\n## onNotebook\n\n`onNotebook:type` is emitted when the specified notebook document type is opened.\n\n```json\n\"activationEvents\": [\n    \"onNotebook:jupyter-notebook\",\n    \"onNotebook:interactive\"\n]\n```\n\n## onRenderer\n\n`onRenderer:id` is emitted when a notebook output renderer is used.\n\n```json\n\"activationEvents\": [\n    \"onRenderer:ms-toolsai.jupyter-renderers\"\n]\n```\n\n## onTerminal\n\n`onTerminal:shellType` is emitted when a specific terminal with the given shell type is opened.\n\n```json\n\"activationEvents\": [\n  \"onTerminal:bash\"\n]\n```\n\n## onTerminalProfile\n\n`onTerminalProfile:id` is emitted when a specific terminal profile is launched.\n\n```json\n\"activationEvents\": [\n    \"onTerminalProfile:terminalTest.terminal-profile\"\n]\n```\n\n## onTerminalShellIntegration\n\n`onTerminalShellIntegration:shellType` is emitted when a terminal with the given shell type has shell integration activated.\n\n```json\n\"activationEvents\": [\n    \"onTerminalShellIntegration:bash\"\n]\n```\n\n## onWalkthrough\n\n`onWalkthrough:id` is emitted when a specified walkthrough is opened.\n\n```json\n\"activationEvents\": [\n    \"onWalkthrough:nodejsWelcome\"\n]\n```\n\n## onIssueReporterOpened\n\nThis activation event is emitted when the issue reporter is opened (for example, by using **Help: Report Issue**).\n\n```json\n\"activationEvents\": [\n    \"onIssueReporterOpened\"\n]\n```\n\n## onChatParticipant\n\nAn activation event emitted when the specified chat participant is invoked.\n\nChat participants are deprecated and are not supported in the Copilot harness. This event remains relevant for Local harness compatibility. See [Replace chat participants](/docs/agent-customization/migrate-customizations.md#replace-chat-participants).\n\n```json\n\"activationEvents\": [\n    \"onChatParticipant:my-chat-participant\"\n]\n```\n\n## onLanguageModelTool\n\nAn activation event emitted when the specified language model tool is invoked.\n\n```json\n\"activationEvents\": [\n    \"onLanguageModelTool:my-language-model-tool\"\n]\n```\n\n## Start up\n\nThe `*` activation event is emitted and interested extensions will be activated whenever VS Code starts up.\n\n> **Note:** To ensure a great user experience, please use this activation event in your extension only when no other activation events combination works in your use-case.\n\n```json\n\"activationEvents\": [\n    \"*\"\n]\n```\n\n> **Note:** An extension can listen to multiple activation events, and that is preferable to listening to `\"*\"`.\n\n> **Note:** An extension **must** export an `activate()` function from its main module and it will be invoked **only once** by VS Code when any of the specified activation events is emitted. Also, an extension **should** export a `deactivate()` function from its main module to perform cleanup tasks on VS Code shutdown. Extension **must** return a Promise from `deactivate()` if the cleanup process is asynchronous. An extension may return `undefined` from `deactivate()` if the cleanup runs synchronously.\n","frontmatter":{"ContentId":"C83BB647-A37E-45CE-BA4C-837B397C2ABE","DateApproved":"10/21/2026","MetaDescription":"To support lazy activation of Visual Studio Code extensions (plug-ins), your extension controls when it should be loaded through a set of Activation Events."},"isInternal":false,"tokens":3249,"sizeBytes":14508},{"name":"commands.md","path":"api/references/commands.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/commands.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\n# DO NOT TOUCH — Managed by doc writer\nContentId: A010AEDF-EF37-406E-96F5-E129408FFDE1\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: Visual Studio Code built-in commands reference.\n---\n\n# Built-in Commands\n\nThis document lists a subset of Visual Studio Code commands that you might use with `vscode.commands.executeCommand` API.\n\nRead the [Commands guide](/api/extension-guides/command) for how to use the commands API.\n\nThe following is a sample of how to open a new folder in VS Code:\n\n```javascript\nlet uri = Uri.file('/some/path/to/folder');\nlet success = await commands.executeCommand('vscode.openFolder', uri);\n```\n\n>**Note**: You can review the full set of VS Code commands via the Keyboard Shortcuts editor **File** > **Preferences** > **Keyboard Shortcuts**. The Keyboard Shortcuts editor lists all commands built into VS Code or contributed by extensions, along with their keybindings and visibility when clauses.\n\n## Commands\n\n`vscode.executeDataToNotebook` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _data_ - Bytes to convert to data\n* _(returns)_ - Notebook Data\n\n`vscode.executeNotebookToData` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _NotebookData_ - Notebook data to convert to bytes\n* _(returns)_ - Bytes\n\n`notebook.selectKernel` - Trigger kernel picker for specified notebook editor widget\n\n* _options_ - Select kernel options\n* _(returns)_ - no result\n\n`interactive.open` - Open interactive window and return notebook editor and input URI\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Interactive editor title\n* _(returns)_ - Notebook and input URI\n\n`vscode.editorChat.start` - Invoke a new editor chat session\n\n* _Run arguments_ -\n* _(returns)_ - no result\n\n`vscode.executeDocumentHighlights` - Execute document highlight provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of DocumentHighlight-instances.\n\n`vscode.executeDocumentSymbolProvider` - Execute document symbol provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of SymbolInformation and DocumentSymbol instances.\n\n`vscode.executeFormatDocumentProvider` - Execute document format provider.\n\n* _uri_ - Uri of a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatRangeProvider` - Execute range format provider.\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatOnTypeProvider` - Execute format on type provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _ch_ - Trigger character\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeDefinitionProvider` - Execute all definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeTypeDefinitionProvider` - Execute all type definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeDeclarationProvider` - Execute all declaration providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeImplementationProvider` - Execute all implementation providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeReferenceProvider` - Execute all reference providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location-instances.\n\n`vscode.executeHoverProvider` - Execute all hover providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Hover-instances.\n\n`vscode.executeSelectionRangeProvider` - Execute selection range provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of ranges.\n\n`vscode.executeWorkspaceSymbolProvider` - Execute all workspace symbol providers.\n\n* _query_ - Search string\n* _(returns)_ - A promise that resolves to an array of SymbolInformation-instances.\n\n`vscode.prepareCallHierarchy` - Prepare call hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of CallHierarchyItem-instances\n\n`vscode.provideIncomingCalls` - Compute incoming calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyIncomingCall-instances\n\n`vscode.provideOutgoingCalls` - Compute outgoing calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyOutgoingCall-instances\n\n`vscode.prepareRename` - Execute the prepareRename of rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to a range and placeholder text.\n\n`vscode.executeDocumentRenameProvider` - Execute rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _newName_ - The new symbol name\n* _(returns)_ - A promise that resolves to a WorkspaceEdit.\n\n`vscode.executeLinkProvider` - Execute document link provider.\n\n* _uri_ - Uri of a text document\n* _linkResolveCount_ - (optional) Number of links that should be resolved, only when links are unresolved.\n* _(returns)_ - A promise that resolves to an array of DocumentLink-instances.\n\n`vscode.provideDocumentSemanticTokensLegend` - Provide semantic tokens legend for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentSemanticTokens` - Provide semantic tokens for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.provideDocumentRangeSemanticTokensLegend` - Provide semantic tokens legend for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - (optional) A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentRangeSemanticTokens` - Provide semantic tokens for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.executeCompletionItemProvider` - Execute completion item provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger completion when the user types the character, like `,` or `(`\n* _itemResolveCount_ - (optional) Number of completions to resolve (too large numbers slow down completions)\n* _(returns)_ - A promise that resolves to a CompletionList-instance.\n\n`vscode.executeSignatureHelpProvider` - Execute signature help provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger signature help when the user types the character, like `,` or `(`\n* _(returns)_ - A promise that resolves to SignatureHelp.\n\n`vscode.executeCodeLensProvider` - Execute code lens provider.\n\n* _uri_ - Uri of a text document\n* _itemResolveCount_ - (optional) Number of lenses that should be resolved and returned. Will only return resolved lenses, will impact performance\n* _(returns)_ - A promise that resolves to an array of CodeLens-instances.\n\n`vscode.executeCodeActionProvider` - Execute code action provider.\n\n* _uri_ - Uri of a text document\n* _rangeOrSelection_ - Range in a text document. Some refactoring provider requires Selection object.\n* _kind_ - (optional) Code action kind to return code actions for\n* _itemResolveCount_ - (optional) Number of code actions to resolve (too large numbers slow down code actions)\n* _(returns)_ - A promise that resolves to an array of Command-instances.\n\n`vscode.executeDocumentColorProvider` - Execute document color provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of ColorInformation objects.\n\n`vscode.executeColorPresentationProvider` - Execute color presentation provider.\n\n* _color_ - The color to show and insert\n* _context_ - Context object with uri and range\n* _(returns)_ - A promise that resolves to an array of ColorPresentation objects.\n\n`vscode.executeInlayHintProvider` - Execute inlay hints provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to an array of Inlay objects\n\n`vscode.executeFoldingRangeProvider` - Execute folding range provider\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of FoldingRange objects\n\n`vscode.resolveNotebookContentProviders` - Resolve Notebook Content Providers\n\n* _(returns)_ - A promise that resolves to an array of NotebookContentProvider static info objects.\n\n`vscode.executeInlineValueProvider` - Execute inline value provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _context_ - An InlineValueContext\n* _(returns)_ - A promise that resolves to an array of InlineValue objects\n\n`vscode.open` - Opens the provided resource in the editor. Can be a text or binary file, or an http(s) URL. If you need more control over the options for opening a text file, use `vscode.window.showTextDocument` instead.\n\n* _uri_ - Uri of a text or binary file, or an http(s) URL\n* _columnOrOptions_ - (optional) Either the column in which to open, or editor options, see `vscode.TextDocumentShowOptions`\n* _label_ - Editor label (optional)\n* _(returns)_ - no result\n\n`vscode.openWith` - Opens the provided resource with a specific editor.\n\n* _resource_ - Resource to open\n* _viewId_ - Custom editor view id or 'default' to use VS Code's default editor\n* _columnOrOptions_ - (optional) Either the column in which to open or editor options, see vscode.TextDocumentShowOptions\n* _(returns)_ - no result\n\n`vscode.diff` - Opens the provided resources in the diff editor to compare their contents.\n\n* _left_ - Left-hand side resource of the diff editor\n* _right_ - Right-hand side resource of the diff editor\n* _title_ - Human readable title for the diff editor\n* _options_ - (optional) Either the column in which to open, or editor options (see vscode.TextDocumentShowOptions)\n\n`vscode.changes` - Opens a list of resources in the changes editor to compare their contents.\n\n* _title_ - Human readable title for the changes editor\n* _resourceList_ - List of resources to compare\n\n`vscode.prepareTypeHierarchy` - Prepare type hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSupertypes` - Compute supertypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSubtypes` - Compute subtypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.revealTestInExplorer` - Reveals a test instance in the explorer\n\n* _testItem_ - A VS Code TestItem.\n* _(returns)_ - no result\n\n`setContext` - Set a custom context key value that can be used in when clauses.\n\n* _name_ - The context key name\n* _value_ - The context key value\n* _(returns)_ - no result\n\n`cursorMove` - Move cursor to a logical position in the view\n\n* _Cursor move argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory logical position value providing where to move the cursor.\n    ```\n    'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n    'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n    'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n    'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'character', 'halfLine'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'select': If 'true' makes the selection. Default is 'false'.\n\n`editorScroll` - Scroll editor in the given direction\n\n* _Editor scroll argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory direction value.\n    ```\n    'up', 'down'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\n`revealLine` - Reveal the given line at the given logical position\n\n* _Reveal line argument object_ - Property-value pairs that can be passed through this argument:\n  * 'lineNumber': A mandatory line number value.\n  * 'at': Logical position at which line has to be revealed.\n    ```\n    'top', 'center', 'bottom'\n    ```\n\n`editor.unfold` - Unfold the content in the editor\n\n* _Unfold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to unfold. If not set, defaults to 1.\n  * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not\n  set, the active selection(s) will be used.\n\n`editor.fold` - Fold the content in the editor\n\n* _Fold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to fold.\n  * 'direction': If 'up', folds given number of levels up otherwise folds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n  If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\n`editor.toggleFold` - Folds or unfolds the content in the editor depending on its current state\n\n`editor.actions.findWithArgs` - Open a new In-Editor Find Widget with specific options.\n\n* searchString - String to prefill the find input\n* replaceString - String to prefill the replace input\n* isRegex - enable regex\n* preserveCase - try to keep the same case when replacing\n* findInSelection - restrict the find location to the current selection\n* matchWholeWord\n* isCaseSensitive\n\n`editor.action.goToLocations` - Go to locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n* _noResultsMessage_ - Human readable message that shows when locations is empty.\n\n`editor.action.peekLocations` - Peek locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n\n`workbench.action.quickOpen` - Quick access\n\n* _prefix_ -\n\n`notebook.cell.toggleOutputs` - Toggle Outputs\n\n* _options_ - The cell range options\n\n`notebook.fold` - Fold Cell\n\n* _index_ - The cell index\n\n`notebook.unfold` - Unfold Cell\n\n* _index_ - The cell index\n\n`notebook.selectKernel` - Notebook Kernel Args\n\n* _kernelInfo_ - The kernel info\n\n`notebook.cell.changeLanguage` - Change Cell Language\n\n* _range_ - The cell range\n* _language_ - The target cell language\n\n`notebook.execute` - Run All\n\n* _uri_ - The document uri\n\n`notebook.cell.execute` - Execute Cell\n\n* _options_ - The cell range options\n\n`notebook.cell.executeAndFocusContainer` - Execute Cell and Focus Container\n\n* _options_ - The cell range options\n\n`notebook.cell.cancelExecution` - Stop Cell Execution\n\n* _options_ - The cell range options\n\n`workbench.action.findInFiles` - Open a workspace search\n\n* _A set of options for the search_ -\n\n`_interactive.open` - Open Interactive Window\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Notebook editor title\n\n`interactive.execute` - Execute the Contents of the Input Box\n\n* _resource_ - Interactive resource Uri\n\n`search.action.openNewEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openNewEditorToSide` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`vscode.openFolder` - Open a folder or workspace in the current window or new window depending on the newWindow argument. Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder/workspace unless the newWindow parameter is set to true.\n\n* _uri_ - (optional) Uri of the folder or workspace file to open. If not provided, a native dialog will ask the user for the folder\n* _options_ - (optional) Options. Object with the following properties: `forceNewWindow`: Whether to open the folder/workspace in a new window or the same. Defaults to opening in the same window. `forceReuseWindow`: Whether to force opening the folder/workspace in the same window.  Defaults to false. `noRecentEntry`: Whether the opened URI will appear in the 'Open Recent' list. Defaults to false. Note, for backward compatibility, options can also be of type boolean, representing the `forceNewWindow` setting.\n\n`vscode.newWindow` - Opens an new window depending on the newWindow argument.\n\n* _options_ - (optional) Options. Object with the following properties: `reuseWindow`: Whether to open a new window or the same. Defaults to opening in a new window.\n\n`vscode.removeFromRecentlyOpened` - Removes an entry with the given path from the recently opened list.\n\n* _path_ - URI or URI string to remove from recently opened.\n\n`moveActiveEditor` - Move the active editor by tabs or groups\n\n* _Active editor move argument_ - Argument Properties:\n  * 'to': String value providing where to move.\n  * 'by': String value providing the unit for move (by tab or by group).\n  * 'value': Number value providing how many positions or an absolute position to move.\n\n`copyActiveEditor` - Copy the active editor by groups\n\n* _Active editor copy argument_ - Argument Properties:\n  * 'to': String value providing where to copy.\n  * 'value': Number value providing how many positions or an absolute position to copy.\n\n`vscode.getEditorLayout` - Get Editor Layout\n\n* _(returns)_ - An editor layout object, in the same format as vscode.setEditorLayout\n\n`workbench.action.files.newUntitledFile` - New Untitled Text File\n\n* _New Untitled Text File arguments_ - The editor view type or language ID if known\n\n`workbench.extensions.installExtension` - Install the given extension\n\n* _extensionIdOrVSIXUri_ - Extension id or VSIX resource uri\n* _options_ - (optional) Options for installing the extension. Object with the following properties: `installOnlyNewlyAddedFromExtensionPackVSIX`: When enabled, VS Code installs only newly added extensions from the extension pack VSIX. This option is considered only when installing VSIX.\n\n`workbench.extensions.uninstallExtension` - Uninstall the given extension\n\n* _Id of the extension to uninstall_ -\n\n`workbench.extensions.search` - Search for a specific extension\n\n* _Query to use in search_ -\n\n`workbench.action.tasks.runTask` - Run Task\n\n* _args_ - Filters the tasks shown in the Quick Pick\n\n`workbench.action.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`vscode.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`workbench.action.openLogFile` - workbench.action.openLogFile\n\n* _logFile_ -\n\n`workbench.action.openWalkthrough` - Open the walkthrough.\n\n* _walkthroughID_ - ID of the walkthrough to open.\n* _toSide_ - Opens the walkthrough in a new editor group to the side.\n\n## Simple commands\n\nSimple commands that do not require parameters can be found in the Keyboard Shortcuts list in the default `keybindings.json` file. The unbound commands are listed in a comment block at the bottom of the file.\n\nTo review the default `keybindings.json`, run **Preferences: Open Default Keyboard Shortcuts (JSON)** from the Command Palette (`kb(workbench.action.showCommands)`).\n","frontmatter":{"ContentId":"A010AEDF-EF37-406E-96F5-E129408FFDE1","DateApproved":"10/21/2026","MetaDescription":"Visual Studio Code built-in commands reference."},"isInternal":false,"tokens":5150,"sizeBytes":21664},{"name":"contribution-points.md","path":"api/references/contribution-points.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/contribution-points.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/contribution-points.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/contribution-points.md)","tokens":300,"sizeBytes":195},{"name":"document-selector.md","path":"api/references/document-selector.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/document-selector.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/document-selector.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/document-selector.md)","tokens":300,"sizeBytes":191},{"name":"extension-manifest.md","path":"api/references/extension-manifest.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/extension-manifest.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/extension-manifest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/extension-manifest.md)","tokens":300,"sizeBytes":193},{"name":"icons-in-labels.md","path":"api/references/icons-in-labels.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/icons-in-labels.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/icons-in-labels.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/icons-in-labels.md)","tokens":300,"sizeBytes":187},{"name":"theme-color.md","path":"api/references/theme-color.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/theme-color.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/theme-color.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/theme-color.md)","tokens":300,"sizeBytes":179},{"name":"when-clause-contexts.md","path":"api/references/when-clause-contexts.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/when-clause-contexts.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `api/references/when-clause-contexts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/when-clause-contexts.md)","tokens":300,"sizeBytes":197},{"name":"extension-marketplace.md","path":"docs/configure/extensions/extension-marketplace.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-marketplace.md","title":"Extensions Skill","category":"anthropic-skill","format":"markdown","content":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-marketplace.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-marketplace.md)","tokens":300,"sizeBytes":221},{"name":"extension-runtime-security.md","path":"docs/configure/extensions/extension-runtime-security.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-runtime-security.md","title":"Extensions Skill","category":"anthropic-skill","format":"markdown","content":"# Extensions Skill\n\nPath: `docs/configure/extensions/extension-runtime-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-runtime-security.md)","tokens":300,"sizeBytes":231},{"name":"extensions.md","path":"docs/configure/extensions/extensions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extensions.md","title":"Extensions Skill","category":"anthropic-skill","format":"markdown","content":"# Extensions Skill\n\nPath: `docs/configure/extensions/extensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extensions.md)","tokens":300,"sizeBytes":199},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/copilot-instructions.md","title":"GitHub Copilot Instructions","category":"copilot-instructions","format":"markdown","content":"# VS Code Docs Writing Guidelines\n\nFollow the [documentation writing guidelines](instructions/docs-writing.instructions.md) when reviewing or writing documentation.\n","isInternal":false,"tokens":26,"sizeBytes":165},{"name":"copilot-instructions.md","path":"blogs/2025/03/.github/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/blogs/2025/03/.github/copilot-instructions.md","title":"GitHub Copilot Instructions","category":"copilot-instructions","format":"markdown","content":"# GitHub Copilot Instructions\n\nPath: `blogs/2025/03/.github/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/blogs/2025/03/.github/copilot-instructions.md)","tokens":300,"sizeBytes":222},{"name":"README.md","path":".vscode/extensions/doc-assistant/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/README.md","title":"doc-assistant Documentation","category":"plugin-manifest","format":"markdown","content":"# doc-assistant Documentation\n\nPath: `.vscode/extensions/doc-assistant/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/README.md)","tokens":300,"sizeBytes":216},{"name":"code-reviewer.agent.md","path":".github/agents/code-reviewer.agent.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/agents/code-reviewer.agent.md","title":"Code Reviewer Agent","category":"subagent-persona","format":"markdown","content":"---\nname: Code Reviewer Agent\ndescription: 'Code Reviewer Agent: Reviews code changes for quality, style, and best practices.'\nargument-hint: 'Provide the code changes or pull request details you want reviewed.'\ntools: ['read', 'search', 'web', 'agent', 'todo']\n---\nPlease review the provided code changes or pull request details for quality, style, and adherence to best practices. Provide constructive feedback and suggest improvements where necessary.\n","frontmatter":{"name":"Code Reviewer Agent","description":"Code Reviewer Agent: Reviews code changes for quality, style, and best practices.","argument-hint":"Provide the code changes or pull request details you want reviewed.","tools":["read","search","web","agent","todo"]},"isInternal":false,"tokens":93,"sizeBytes":455},{"name":"cache-explorer.md","path":"docs/agents/agent-troubleshooting/cache-explorer.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/cache-explorer.md","title":"Subagent: cache-explorer","category":"subagent-persona","format":"markdown","content":"# Subagent: cache-explorer\n\nPath: `docs/agents/agent-troubleshooting/cache-explorer.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/cache-explorer.md)","tokens":300,"sizeBytes":231},{"name":"chat-debug-view.md","path":"docs/agents/agent-troubleshooting/chat-debug-view.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/chat-debug-view.md","title":"Subagent: chat-debug-view","category":"subagent-persona","format":"markdown","content":"# Subagent: chat-debug-view\n\nPath: `docs/agents/agent-troubleshooting/chat-debug-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/chat-debug-view.md)","tokens":300,"sizeBytes":234},{"name":"faq.md","path":"docs/agents/agent-troubleshooting/faq.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/faq.md","title":"Subagent: faq","category":"subagent-persona","format":"markdown","content":"# Subagent: faq\n\nPath: `docs/agents/agent-troubleshooting/faq.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/faq.md)","tokens":300,"sizeBytes":198},{"name":"troubleshooting.md","path":"docs/agents/agent-troubleshooting/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/troubleshooting.md","title":"Subagent: troubleshooting","category":"subagent-persona","format":"markdown","content":"# Subagent: troubleshooting\n\nPath: `docs/agents/agent-troubleshooting/troubleshooting.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agent-troubleshooting/troubleshooting.md)","tokens":300,"sizeBytes":234},{"name":"agents-handoff-tutorial.md","path":"docs/agents/agents-handoff-tutorial.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-handoff-tutorial.md","title":"Subagent: agents-handoff-tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: agents-handoff-tutorial\n\nPath: `docs/agents/agents-handoff-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-handoff-tutorial.md)","tokens":300,"sizeBytes":214},{"name":"agents-tutorial.md","path":"docs/agents/agents-tutorial.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-tutorial.md","title":"Subagent: agents-tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: agents-tutorial\n\nPath: `docs/agents/agents-tutorial.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/agents-tutorial.md)","tokens":300,"sizeBytes":190},{"name":"best-practices.md","path":"docs/agents/best-practices.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/best-practices.md","title":"Subagent: best-practices","category":"subagent-persona","format":"markdown","content":"# Subagent: best-practices\n\nPath: `docs/agents/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/best-practices.md)","tokens":300,"sizeBytes":187},{"name":"agent-harnesses.md","path":"docs/agents/concepts/agent-harnesses.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-harnesses.md","title":"Subagent: agent-harnesses","category":"subagent-persona","format":"markdown","content":"# Subagent: agent-harnesses\n\nPath: `docs/agents/concepts/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-harnesses.md)","tokens":300,"sizeBytes":208},{"name":"agent-host.md","path":"docs/agents/concepts/agent-host.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-host.md","title":"Subagent: agent-host","category":"subagent-persona","format":"markdown","content":"# Subagent: agent-host\n\nPath: `docs/agents/concepts/agent-host.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agent-host.md)","tokens":300,"sizeBytes":193},{"name":"agents.md","path":"docs/agents/concepts/agents.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agents.md","title":"Subagent: agents","category":"subagent-persona","format":"markdown","content":"# Subagent: agents\n\nPath: `docs/agents/concepts/agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/agents.md)","tokens":300,"sizeBytes":181},{"name":"context.md","path":"docs/agents/concepts/context.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/context.md","title":"Subagent: context","category":"subagent-persona","format":"markdown","content":"# Subagent: context\n\nPath: `docs/agents/concepts/context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/context.md)","tokens":300,"sizeBytes":184},{"name":"customization.md","path":"docs/agents/concepts/customization.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/customization.md","title":"Subagent: customization","category":"subagent-persona","format":"markdown","content":"# Subagent: customization\n\nPath: `docs/agents/concepts/customization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/customization.md)","tokens":300,"sizeBytes":202},{"name":"language-models.md","path":"docs/agents/concepts/language-models.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/language-models.md","title":"Subagent: language-models","category":"subagent-persona","format":"markdown","content":"# Subagent: language-models\n\nPath: `docs/agents/concepts/language-models.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/language-models.md)","tokens":300,"sizeBytes":208},{"name":"sessions.md","path":"docs/agents/concepts/sessions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/sessions.md","title":"Subagent: sessions","category":"subagent-persona","format":"markdown","content":"# Subagent: sessions\n\nPath: `docs/agents/concepts/sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/sessions.md)","tokens":300,"sizeBytes":187},{"name":"tools.md","path":"docs/agents/concepts/tools.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/tools.md","title":"Subagent: tools","category":"subagent-persona","format":"markdown","content":"# Subagent: tools\n\nPath: `docs/agents/concepts/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/tools.md)","tokens":300,"sizeBytes":178},{"name":"trust-and-safety.md","path":"docs/agents/concepts/trust-and-safety.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/trust-and-safety.md","title":"Subagent: trust-and-safety","category":"subagent-persona","format":"markdown","content":"# Subagent: trust-and-safety\n\nPath: `docs/agents/concepts/trust-and-safety.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/concepts/trust-and-safety.md)","tokens":300,"sizeBytes":211},{"name":"browser-agent-testing-guide.md","path":"docs/agents/guides/browser-agent-testing-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/browser-agent-testing-guide.md","title":"Subagent: browser-agent-testing-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: browser-agent-testing-guide\n\nPath: `docs/agents/guides/browser-agent-testing-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/browser-agent-testing-guide.md)","tokens":300,"sizeBytes":240},{"name":"code-review-with-copilot.md","path":"docs/agents/guides/code-review-with-copilot.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/code-review-with-copilot.md","title":"Subagent: code-review-with-copilot","category":"subagent-persona","format":"markdown","content":"# Subagent: code-review-with-copilot\n\nPath: `docs/agents/guides/code-review-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/code-review-with-copilot.md)","tokens":300,"sizeBytes":231},{"name":"context-engineering-guide.md","path":"docs/agents/guides/context-engineering-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/context-engineering-guide.md","title":"Subagent: context-engineering-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: context-engineering-guide\n\nPath: `docs/agents/guides/context-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/context-engineering-guide.md)","tokens":300,"sizeBytes":234},{"name":"customize-copilot-guide.md","path":"docs/agents/guides/customize-copilot-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/customize-copilot-guide.md","title":"Subagent: customize-copilot-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: customize-copilot-guide\n\nPath: `docs/agents/guides/customize-copilot-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/customize-copilot-guide.md)","tokens":300,"sizeBytes":228},{"name":"debug-with-copilot.md","path":"docs/agents/guides/debug-with-copilot.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/debug-with-copilot.md","title":"Subagent: debug-with-copilot","category":"subagent-persona","format":"markdown","content":"# Subagent: debug-with-copilot\n\nPath: `docs/agents/guides/debug-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/debug-with-copilot.md)","tokens":300,"sizeBytes":213},{"name":"mcp-developer-guide.md","path":"docs/agents/guides/mcp-developer-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/mcp-developer-guide.md","title":"Subagent: mcp-developer-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: mcp-developer-guide\n\nPath: `docs/agents/guides/mcp-developer-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/mcp-developer-guide.md)","tokens":300,"sizeBytes":216},{"name":"monitoring-agents.md","path":"docs/agents/guides/monitoring-agents.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/monitoring-agents.md","title":"Subagent: monitoring-agents","category":"subagent-persona","format":"markdown","content":"# Subagent: monitoring-agents\n\nPath: `docs/agents/guides/monitoring-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/monitoring-agents.md)","tokens":300,"sizeBytes":210},{"name":"notebooks-with-ai.md","path":"docs/agents/guides/notebooks-with-ai.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/notebooks-with-ai.md","title":"Subagent: notebooks-with-ai","category":"subagent-persona","format":"markdown","content":"# Subagent: notebooks-with-ai\n\nPath: `docs/agents/guides/notebooks-with-ai.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/notebooks-with-ai.md)","tokens":300,"sizeBytes":210},{"name":"optimize-usage.md","path":"docs/agents/guides/optimize-usage.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/optimize-usage.md","title":"Subagent: optimize-usage","category":"subagent-persona","format":"markdown","content":"# Subagent: optimize-usage\n\nPath: `docs/agents/guides/optimize-usage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/optimize-usage.md)","tokens":300,"sizeBytes":201},{"name":"prompt-engineering-guide.md","path":"docs/agents/guides/prompt-engineering-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-engineering-guide.md","title":"Subagent: prompt-engineering-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: prompt-engineering-guide\n\nPath: `docs/agents/guides/prompt-engineering-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-engineering-guide.md)","tokens":300,"sizeBytes":231},{"name":"prompt-examples.md","path":"docs/agents/guides/prompt-examples.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-examples.md","title":"Subagent: prompt-examples","category":"subagent-persona","format":"markdown","content":"# Subagent: prompt-examples\n\nPath: `docs/agents/guides/prompt-examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/prompt-examples.md)","tokens":300,"sizeBytes":204},{"name":"test-driven-development-guide.md","path":"docs/agents/guides/test-driven-development-guide.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-driven-development-guide.md","title":"Subagent: test-driven-development-guide","category":"subagent-persona","format":"markdown","content":"# Subagent: test-driven-development-guide\n\nPath: `docs/agents/guides/test-driven-development-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-driven-development-guide.md)","tokens":300,"sizeBytes":246},{"name":"test-with-copilot.md","path":"docs/agents/guides/test-with-copilot.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-with-copilot.md","title":"Subagent: test-with-copilot","category":"subagent-persona","format":"markdown","content":"# Subagent: test-with-copilot\n\nPath: `docs/agents/guides/test-with-copilot.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/guides/test-with-copilot.md)","tokens":300,"sizeBytes":210},{"name":"overview.md","path":"docs/agents/overview.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/overview.md","title":"Subagent: overview","category":"subagent-persona","format":"markdown","content":"# Subagent: overview\n\nPath: `docs/agents/overview.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/overview.md)","tokens":300,"sizeBytes":169},{"name":"quickstart.md","path":"docs/agents/quickstart.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/quickstart.md","title":"Subagent: quickstart","category":"subagent-persona","format":"markdown","content":"# Subagent: quickstart\n\nPath: `docs/agents/quickstart.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/quickstart.md)","tokens":300,"sizeBytes":175},{"name":"ai-features-cheat-sheet.md","path":"docs/agents/reference/ai-features-cheat-sheet.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-features-cheat-sheet.md","title":"Subagent: ai-features-cheat-sheet","category":"subagent-persona","format":"markdown","content":"# Subagent: ai-features-cheat-sheet\n\nPath: `docs/agents/reference/ai-features-cheat-sheet.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-features-cheat-sheet.md)","tokens":300,"sizeBytes":234},{"name":"ai-settings.md","path":"docs/agents/reference/ai-settings.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-settings.md","title":"Subagent: ai-settings","category":"subagent-persona","format":"markdown","content":"# Subagent: ai-settings\n\nPath: `docs/agents/reference/ai-settings.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/ai-settings.md)","tokens":300,"sizeBytes":198},{"name":"hooks-reference.md","path":"docs/agents/reference/hooks-reference.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/hooks-reference.md","title":"Subagent: hooks-reference","category":"subagent-persona","format":"markdown","content":"# Subagent: hooks-reference\n\nPath: `docs/agents/reference/hooks-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/hooks-reference.md)","tokens":300,"sizeBytes":210},{"name":"mcp-configuration.md","path":"docs/agents/reference/mcp-configuration.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/mcp-configuration.md","title":"Subagent: mcp-configuration","category":"subagent-persona","format":"markdown","content":"# Subagent: mcp-configuration\n\nPath: `docs/agents/reference/mcp-configuration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/mcp-configuration.md)","tokens":300,"sizeBytes":216},{"name":"workspace-context.md","path":"docs/agents/reference/workspace-context.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/workspace-context.md","title":"Subagent: workspace-context","category":"subagent-persona","format":"markdown","content":"# Subagent: workspace-context\n\nPath: `docs/agents/reference/workspace-context.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/reference/workspace-context.md)","tokens":300,"sizeBytes":216},{"name":"agent-harnesses.md","path":"docs/agents/run/agent-harnesses.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agent-harnesses.md","title":"Subagent: agent-harnesses","category":"subagent-persona","format":"markdown","content":"# Subagent: agent-harnesses\n\nPath: `docs/agents/run/agent-harnesses.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agent-harnesses.md)","tokens":300,"sizeBytes":198},{"name":"agents-window.md","path":"docs/agents/run/agents-window.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agents-window.md","title":"Subagent: agents-window","category":"subagent-persona","format":"markdown","content":"# Subagent: agents-window\n\nPath: `docs/agents/run/agents-window.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/agents-window.md)","tokens":300,"sizeBytes":192},{"name":"approvals.md","path":"docs/agents/run/approvals.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/approvals.md","title":"Subagent: approvals","category":"subagent-persona","format":"markdown","content":"# Subagent: approvals\n\nPath: `docs/agents/run/approvals.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/approvals.md)","tokens":300,"sizeBytes":180},{"name":"artifacts.md","path":"docs/agents/run/artifacts.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/artifacts.md","title":"Subagent: artifacts","category":"subagent-persona","format":"markdown","content":"# Subagent: artifacts\n\nPath: `docs/agents/run/artifacts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/artifacts.md)","tokens":300,"sizeBytes":180},{"name":"browser-tools.md","path":"docs/agents/run/browser-tools.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/browser-tools.md","title":"Subagent: browser-tools","category":"subagent-persona","format":"markdown","content":"# Subagent: browser-tools\n\nPath: `docs/agents/run/browser-tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/browser-tools.md)","tokens":300,"sizeBytes":192},{"name":"chat-view.md","path":"docs/agents/run/chat-view.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/chat-view.md","title":"Subagent: chat-view","category":"subagent-persona","format":"markdown","content":"# Subagent: chat-view\n\nPath: `docs/agents/run/chat-view.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/chat-view.md)","tokens":300,"sizeBytes":180},{"name":"memory.md","path":"docs/agents/run/memory.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/memory.md","title":"Subagent: memory","category":"subagent-persona","format":"markdown","content":"# Subagent: memory\n\nPath: `docs/agents/run/memory.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/memory.md)","tokens":300,"sizeBytes":171},{"name":"planning.md","path":"docs/agents/run/planning.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/planning.md","title":"Subagent: planning","category":"subagent-persona","format":"markdown","content":"# Subagent: planning\n\nPath: `docs/agents/run/planning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/planning.md)","tokens":300,"sizeBytes":177},{"name":"remote-agent-sessions.md","path":"docs/agents/run/remote-agent-sessions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/remote-agent-sessions.md","title":"Subagent: remote-agent-sessions","category":"subagent-persona","format":"markdown","content":"# Subagent: remote-agent-sessions\n\nPath: `docs/agents/run/remote-agent-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/remote-agent-sessions.md)","tokens":300,"sizeBytes":216},{"name":"review-code-edits.md","path":"docs/agents/run/review-code-edits.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/review-code-edits.md","title":"Subagent: review-code-edits","category":"subagent-persona","format":"markdown","content":"# Subagent: review-code-edits\n\nPath: `docs/agents/run/review-code-edits.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/review-code-edits.md)","tokens":300,"sizeBytes":204},{"name":"security.md","path":"docs/agents/run/security.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/security.md","title":"Subagent: security","category":"subagent-persona","format":"markdown","content":"# Subagent: security\n\nPath: `docs/agents/run/security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/security.md)","tokens":300,"sizeBytes":177},{"name":"manage-sessions.md","path":"docs/agents/run/sessions/manage-sessions.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/manage-sessions.md","title":"Subagent: manage-sessions","category":"subagent-persona","format":"markdown","content":"# Subagent: manage-sessions\n\nPath: `docs/agents/run/sessions/manage-sessions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/manage-sessions.md)","tokens":300,"sizeBytes":216},{"name":"session-history.md","path":"docs/agents/run/sessions/session-history.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/session-history.md","title":"Subagent: session-history","category":"subagent-persona","format":"markdown","content":"# Subagent: session-history\n\nPath: `docs/agents/run/sessions/session-history.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/sessions/session-history.md)","tokens":300,"sizeBytes":216},{"name":"subagents.md","path":"docs/agents/run/subagents.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/subagents.md","title":"Subagent: subagents","category":"subagent-persona","format":"markdown","content":"# Subagent: subagents\n\nPath: `docs/agents/run/subagents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/subagents.md)","tokens":300,"sizeBytes":180},{"name":"tools.md","path":"docs/agents/run/tools.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/tools.md","title":"Subagent: tools","category":"subagent-persona","format":"markdown","content":"# Subagent: tools\n\nPath: `docs/agents/run/tools.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/agents/run/tools.md)","tokens":300,"sizeBytes":168},{"name":"1-using-tools-with-agents.md","path":"learn/agents/1-using-tools-with-agents.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/1-using-tools-with-agents.md","title":"Subagent: 1-using-tools-with-agents","category":"subagent-persona","format":"markdown","content":"# Subagent: 1-using-tools-with-agents\n\nPath: `learn/agents/1-using-tools-with-agents.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/1-using-tools-with-agents.md)","tokens":300,"sizeBytes":222},{"name":"2-extending-agents-with-mcp-servers.md","path":"learn/agents/2-extending-agents-with-mcp-servers.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/2-extending-agents-with-mcp-servers.md","title":"Subagent: 2-extending-agents-with-mcp-servers","category":"subagent-persona","format":"markdown","content":"# Subagent: 2-extending-agents-with-mcp-servers\n\nPath: `learn/agents/2-extending-agents-with-mcp-servers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/2-extending-agents-with-mcp-servers.md)","tokens":300,"sizeBytes":252},{"name":"3-agent-plugins.md","path":"learn/agents/3-agent-plugins.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/3-agent-plugins.md","title":"Subagent: 3-agent-plugins","category":"subagent-persona","format":"markdown","content":"# Subagent: 3-agent-plugins\n\nPath: `learn/agents/3-agent-plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/3-agent-plugins.md)","tokens":300,"sizeBytes":192},{"name":"4-using-third-party-agents-in-vs-code.md","path":"learn/agents/4-using-third-party-agents-in-vs-code.md","rawUrl":"https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/4-using-third-party-agents-in-vs-code.md","title":"Subagent: 4-using-third-party-agents-in-vs-code","category":"subagent-persona","format":"markdown","content":"# Subagent: 4-using-third-party-agents-in-vs-code\n\nPath: `learn/agents/4-using-third-party-agents-in-vs-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/learn/agents/4-using-third-party-agents-in-vs-code.md)","tokens":300,"sizeBytes":258}],"systemPromptSnippet":"<yakaai_skills repo=\"microsoft/vscode-docs\">\n<!-- File: .github/skills/blog-writer/SKILL.md (Tokens: ~1815 | Category: anthropic-skill) -->\n---\nname: blog-writer\ndescription: 'Plan, write, and review VS Code blog posts. ALWAYS use this skill when the user asks to \"write a blog post\", \"draft a blog\", \"add a blog post for\", \"review this blog post\", or provides a feature/issue/PR to announce on the VS Code blog. For new posts, it proposes an outline and asks clarifying questions first, and does not edit any files until you approve the plan.'\nargument-hint: 'Topic to blog about (or a link to the relevant issue/PR), or a blog post to review.'\n---\n\n# Write or Review a Blog Post\n\nHelp author a new VS Code blog post or review an existing one in the `blogs/` folder. The skill has two modes:\n\n* **Write mode** works in two phases: it first **researches the topic and proposes an outline**, then drafts the post **only after you approve**.\n* **Review mode** evaluates an existing draft for clarity, conciseness, and style, and reports concrete suggestions without editing unless asked.\n\nAll work must follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md), which in turn builds on the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these:\n\n* The user says \"write a blog post\", \"draft a blog\", \"add a blog post for…\", or \"announce this on the blog\".\n* The user pastes a GitHub issue or PR link and asks you to turn it into a blog post.\n* The user asks you to \"review this blog post\", check a draft, or improve an existing post in `blogs/`.\n* Announcing or explaining a new or changed VS Code or GitHub Copilot feature in a narrative, conversational format.\n\nFor new posts, run the plan-first workflow rather than jumping straight to a draft, even when the topic seems small.\n\nDo **not** use this skill for reference documentation, release notes, or API docs. Those are handled by other skills (`doc-writer`, `release-note-writer`) or direct edits. If the user wants reference docs rather than a narrative post, switch to `doc-writer`.\n\n## Guardrails\n\n* **Blogs only.** Limit changes to the `blogs/` folder. Do **not** update reference docs, release notes, or API docs as part of this skill.\n* **Public functionality only.** Announce functionality only when it is publicly available in the named channel by the post's publication date. Do not announce internal dogfood or source-only functionality.\n* **Folder structure.** A new post MUST live in `blogs/<year>/<month>/<day>/` with each date level as its own subfolder. Store images and the social image alongside the post.\n* **Frontmatter is required.** Every post needs the YAML frontmatter fields from the style guide (`Order`, `TOCTitle`, `PageTitle`, `MetaDescription`, `MetaSocialImage`, `Date`, `Author`). `Order` must be unique and higher than the most recent post, so check existing posts before assigning it.\n* **Images and screenshots are human work.** When a hero image or screenshot is needed, insert a `TODO` comment for a human to capture and add it later. Do not fabricate image references or invent file names beyond the placeholder.\n* **Style compliance.** Follow the [blog-writing style guide](../../instructions/blog-writing.instructions.md): engaging, conversational tone, active voice, first-person plural (\"we\"), contractions, and a closing call to action ending with `Happy coding! 💙`.\n\n## Phase 1 — Research & Propose an Outline (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the topic.** Read the feature description, issue, or PR provided. If it is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and narrative purpose by following the [blog content-framing guidance](../../instructions/blog-writing.instructions.md#content-framing). Infer them from the topic, source material, existing coverage, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the angle, ask the writer to confirm before proposing the outline.\n3. **Check the source if needed.** To understand the feature, inspect the source code in the `microsoft/vscode` and `microsoft/vscode-copilot-chat` repos. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being written about | Primary source repo |\n   |--------------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n\n4. **Verify public availability.** Confirm that each announced capability is available to users in the named public channel by the publication date. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Exclude planned, hidden, internal dogfood, and source-only functionality.\n5. **Determine placement and metadata.** Decide the target folder (`blogs/<year>/<month>/<day>/`) and the next available `Order` value by checking recent posts. Confirm the author name and social media profile link with the user if unknown.\n6. **Present the outline.** Summarize:\n   * The primary persona, reader intent, and narrative purpose.\n   * The proposed title, target folder path, and draft frontmatter values.\n   * A section-by-section outline (H2 headings) with a one-line description of each.\n   * Any `TODO` image placeholders that will be needed (hero/social image, inline screenshots).\n   * Open questions or assumptions.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the outline (or adjusts it).\n\n## Phase 2 — Draft the Post (after approval)\n\nOnce the user approves the outline:\n\n1. Create the post at `blogs/<year>/<month>/<day>/<slug>.md` with complete YAML frontmatter.\n2. Write the body following the approved content framing and the content structure from the style guide:\n   * An H1 title, followed by a byline `<Month> <day>, <year> by [<author>](<social link>)` and a blank line.\n   * A brief introduction that summarizes the main points.\n   * H2 sections as outlined, in an engaging, conversational tone using active voice, \"we\", and contractions.\n   * Images via relative paths with descriptive alt text. Use absolute URLs for links to documentation articles.\n   * A closing call to action, ending with `Happy coding! 💙`.\n3. Add `TODO` comments where images or screenshots need to be captured by a human.\n4. Verify that the opening, examples, terminology, key takeaways, and call to action serve the approved primary persona and reader intent.\n5. Summarize the post you created and call out any remaining `TODO`s for the user.\n\n## Review Mode\n\nWhen the user asks you to review an existing blog post instead of writing one:\n\n1. Read the draft and check it against the [blog-writing style guide](../../instructions/blog-writing.instructions.md):\n   * Content framing (a clear primary persona, reader intent, and narrative purpose reflected consistently throughout the post).\n   * Frontmatter completeness and correctness (all required fields, unique `Order`, `MetaDescription` under 160 chars, `TOCTitle` under 30 chars).\n   * Folder structure (`blogs/<year>/<month>/<day>/`).\n   * Content structure (H1 title, byline, intro, H2 sections, alt text on images, absolute URLs for doc links, closing call to action ending with `Happy coding! 💙`).\n   * Writing style (engaging and conversational, active voice, first-person plural, contractions, clear language for a developer audience).\n2. Verify technical claims against the source where practical (setting names, command IDs, version availability), using the `gh` CLI.\n3. Verify that announced functionality is public in the named channel by the post's publication date. Flag content that presents planned, hidden, internal dogfood, or source-only functionality as available.\n4. Report concrete, practical suggestions grouped by theme. **Do not edit the file** unless the user asks you to apply the changes.\n\n<!-- File: .github/skills/content-redirect/SKILL.md (Tokens: ~762 | Category: anthropic-skill) -->\n---\nname: content-redirect\ndescription: 'Create and manage redirects in VS Code documentation when pages are moved, renamed, or deleted. Use when moving docs pages, renaming files, restructuring content, or when the user asks about redirects.'\nargument-hint: '<old-path> <new-path>'\n---\n\n# Content Redirect\n\nYou are a redirect specialist for VS Code docs. Your job is to create and manage redirects in `redirection.json` when documentation pages are moved, renamed, or deleted. Each content area has its own `redirection.json` file.\n\n## When to Use\n\nUse this skill whenever:\n\n* A markdown file is **moved** or **renamed** (the URL path changes).\n* A markdown file is **deleted** and its content now lives elsewhere.\n* You are explicitly asked to add a redirect.\n\n## Redirect Files\n\nEach top-level content folder has its own redirect file:\n\n| Content area | Redirect file |\n|-------------|---------------|\n| `docs/`     | `docs/redirection.json` |\n| `api/`      | `api/redirection.json` |\n| `blogs/`    | `blogs/redirection.json` |\n| `remote/`   | `remote/redirection.json` |\n\n## Entry Format\n\nEach redirect is a JSON object with three fields:\n\n```json\n{ \"from\": \"/docs/old/path\", \"to\": \"/docs/new/path\", \"status\": 301 }\n```\n\n| Field    | Description |\n|----------|-------------|\n| `from`   | The old URL path (without file extension, without domain). Must start with `/` followed by the content area prefix (e.g., `/docs/`, `/api/`). |\n| `to`     | The new URL path the old URL should redirect to. Same format as `from`. |\n| `status` | Always `301` (permanent redirect). |\n\n## Procedure\n\n### 1. Determine the old and new paths\n\n- Strip the file extension (`.md`) and the repo-root prefix to get the URL path.\n- Example: moving `docs/copilot/overview.md` → `docs/copilot/getting-started.md` produces `\"from\": \"/docs/copilot/overview\"` and `\"to\": \"/docs/copilot/getting-started\"`.\n- For `index.md` files, the URL path is the folder path without `/index` (e.g., `docs/copilot/index.md` → `/docs/copilot`).\n\n### 2. Identify the correct redirect file\n\nChoose the `redirection.json` that matches the content area of the **old** path (the `from` path).\n\n### 3. Add the redirect entry\n\n- Open the appropriate `redirection.json` file.\n- Append the new entry to the JSON array.\n- Keep the array sorted or append at the end — either is acceptable.\n- Ensure the JSON is valid (proper commas, no trailing comma on the last entry).\n\n### 4. Check for redirect chains\n\nSearch the same `redirection.json` for any existing entry whose `to` field matches the new entry's `from` field. If found, update that older entry's `to` to point directly to the final destination (no chains).\n\n### 5. Update internal links\n\nSearch the repository for any links pointing to the old path and update them to the new path. Use Grep to find references to the old path in markdown files and `toc.json` files and update them accordingly.\n\n### 6. Verify\n\n- Confirm the `redirection.json` file is valid JSON.\n- Confirm no duplicate `from` paths exist in the file.\n- If the file was moved (not deleted), confirm the new file exists at the target path.\n\n<!-- File: .github/skills/doc-writer/SKILL.md (Tokens: ~1608 | Category: anthropic-skill) -->\n---\nname: doc-writer\ndescription: 'Plan and write VS Code documentation for a new or updated feature. ALWAYS use this skill when the user asks to \"document\", \"add docs for\", \"write docs for\", or \"update the docs for\" a feature, or provides a GitHub issue/PR link to document — even if the change seems small. Proposes a documentation plan and asks clarifying questions first — it does not edit any files until you approve the plan.'\nargument-hint: 'Feature to document, or a link to the relevant issue/PR.'\n---\n\n# Document a Feature\n\nHelp document a new or updated VS Code feature in the project documentation (the `docs/` folder) and keep its required navigation metadata current. This skill works in two phases: it first **researches the feature and proposes a documentation plan**, then implements the changes **only after you approve**. It is acceptable to conclude that no documentation update is needed.\n\n## When to Use\n\nUse this skill **whenever** the request maps to any of these — do not start editing docs directly without first running Phase 1:\n\n* The user says \"document this\", \"document this functionality/feature\", \"add docs for…\", \"write docs for…\", or \"update the docs for…\".\n* The user pastes a GitHub issue or PR link and asks you to document or address it in the docs.\n* Documenting a new or changed VS Code or GitHub Copilot feature.\n* Turning a GitHub issue or PR into concrete `docs/` updates.\n* Auditing whether existing docs need updating after a feature change.\n\nThis applies even when the change looks small (a clarification, a few added steps, a single section). Run the plan-first workflow rather than jumping straight to edits.\n\nDo **not** use this skill for release notes, API reference docs, redirects, image swaps, or pure copy-edits — those are handled by other skills (`release-note-writer`, `content-redirect`, `frontmatter-description`) or direct edits.\n\n## Guardrails\n\n* **Docs and sitemap only.** Limit content changes to the `docs/` folder. When you add an article or change an article URL, update `build/sitemap.xml` in the same change. Do **not** update release notes or API docs (`api/`) unless the user explicitly asks.\n* **Public functionality only.** Do not add or retain documentation for internal builds, dogfood-only functionality, hidden settings or commands, source-only implementation, or manually settable internal feature flags.\n* **Never edit `enterprise/policies.md`.** This file is generated from the enterprise policy definitions in the VS Code source. Edit `enterprise/policies-template.md` instead, which is used to regenerate `policies.md`.\n* **Screenshots are human work.** When a screenshot needs to be added or updated, insert a `TODO` comment in the doc for a human to capture and insert it later — do not fabricate image references.\n* **Style compliance.** All writing must follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md).\n\n## Phase 1 — Research & Propose a Plan (no edits)\n\nDo not modify any files in this phase.\n\n1. **Understand the feature.** Read the feature description, issue, or PR provided. If the description is ambiguous or lacks detail, ask clarifying questions before continuing.\n2. **Establish the content framing.** Identify the primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Infer them from the existing content, documentation journey, source material, and writer's request. If any part of the framing remains ambiguous and different interpretations would change the content, ask the writer to confirm before planning edits.\n3. **Check the source if needed.** To understand the implementation, inspect the source code in the `microsoft/vscode` repo. Use the `gh` CLI for all GitHub interactions (issues, PRs, code). See user memory `gh-cli-powershell.md` for PowerShell-specific `gh` patterns.\n\n   | Area being documented | Primary source repo |\n   |----------------------|---------------------|\n   | Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n   | Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP in chat | `microsoft/vscode-copilot-chat` |\n   | Enterprise policies | `microsoft/vscode` (policy definitions) |\n\n4. **Verify public availability.** Check every feature, setting, and command against the public product channel intended for the article. Public Preview, Experimental, and Insiders functionality qualifies when labeled clearly. Source-code existence or manual configurability is not enough. Inspect registration metadata, product quality gates, feature flags, and the relevant public release. Treat metadata such as `included: false` as internal unless product evidence shows otherwise. If functionality is not public, do not document it. During an audit or review, propose removing existing coverage.\n5. **Identify affected docs.** Search the `docs/` folder for the pages that need to be created or updated. Map each change to a specific file and section. Include `docs/toc.json` and `build/sitemap.xml` in the plan when you add an article or change an article URL.\n6. **Present the plan.** Summarize:\n   * The primary persona, reader intent, and article purpose.\n   * Which `docs/` files and required navigation metadata you propose to create or change, and a short description of each edit.\n   * Any `TODO` screenshot placeholders that will be needed.\n   * Open questions or assumptions.\n\n   If you conclude that **no documentation update is needed**, say so and ask the user to confirm before closing out.\n7. **Stop and wait for approval.** Do not proceed to Phase 2 until the user explicitly approves the plan (or adjusts it).\n\n## Phase 2 — Confirm the Branch & Implement (after approval)\n\nOnce the user approves the plan:\n\n1. **Confirm the branch before editing.** Use the user-question tool to ask whether to create a new branch from `main` before implementing the documentation updates. Offer these choices:\n   * `Yes, create a new branch from main (Recommended)`\n   * `No, continue on the current branch`\n\n   Do not modify documentation files until the user answers. If the user chooses a new branch, ask for a branch name unless they already supplied one, then create the branch from `main` before editing. If uncommitted changes prevent safe branch creation, stop and explain the conflict instead of stashing or reverting changes. If the user chooses the current branch, continue without changing branches.\n2. Apply the documentation edits exactly as agreed, following the [docs-writing style guide](../../instructions/docs-writing.instructions.md) and the approved content framing.\n3. Add `TODO` comments where screenshots need to be captured by a human.\n4. Respect the guardrails above (docs content and required sitemap updates only; no release notes/API docs unless asked; never edit generated `policies.md`).\n5. Verify that the introduction, main content, examples, and next steps serve the approved primary persona and reader intent.\n6. Summarize the changes you made and call out any remaining `TODO`s for the user.\n\n## Orchestrate your documentation updates\n\n- Act as a reviewer and coordinator\n- Delegate work to GPT-5.6 Sol subagents, in parallel when feasible.\n- The subagents should not themselves run validation on their work, that's your job! You own the plan; delegate work in parallel when reasonable.\n- Monitor the progress of subagents and integrate their contributions into the final documentation.\n\n<!-- File: .github/skills/docs-product-alignment/SKILL.md (Tokens: ~987 | Category: anthropic-skill) -->\n---\nname: docs-product-alignment\ndescription: 'Audit and update docs/copilot/ documentation to accurately reflect current VS Code AI capabilities. Use when: competitive analysis reveals gaps, product launches new features, docs use outdated framing, or keyword coverage needs strengthening for discoverability by users and AI agents. Produces a gap analysis plus targeted edits across affected files.'\n---\n\n# Documentation Product Alignment\n\nAudit VS Code Copilot documentation against current product capabilities and produce targeted, style-compliant edits. Follow the [docs-writing style guide](../../instructions/docs-writing.instructions.md) for all writing rules.\n\n## Guardrails\n\n- **Factual only.** Every claim must map to something the product does today. No superlatives, no competitive comparisons, no invented terminology.\n- **Content framing.** Establish each page's primary persona, reader intent, and article purpose by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing). Ask the writer before editing when the framing is ambiguous and would change the audit or recommendations.\n- **Two consumers.** The primary persona reads the prose; AI agents and search crawlers index Keywords, MetaDescriptions, and opening paragraphs. Both matter.\n- **Minimal edits.** Change only what is inaccurate, outdated, or missing. One precise sentence beats a rewritten section.\n- **Verifiable.** If you cannot point to a UI element, setting, or documented behavior, do not write it.\n\n## Workflow\n\n1. **Gather context and frame each page.** Read the latest [release notes](/release-notes/), check [github.com/features/copilot](https://github.com/features/copilot), and review any competitive claims or feature matrices the user provides. For each page, record its primary persona, reader intent, and article purpose before proposing edits.\n2. **Audit high-traffic pages.** Read each page and compare against current product truth. Focus on MetaDescriptions, Keywords, opening paragraphs, and terminology.\n3. **Gap analysis.** List what is inaccurate, outdated, or missing. Map each gap to a file and location. Include the page framing in the analysis, and prioritize by page traffic and impact on the primary persona's intent.\n4. **Edit.** Apply targeted changes that support the recorded framing. Vary phrasing across pages to avoid repetition.\n5. **Verify.** Search changed files for banned words, em-dashes, and MetaDescription length violations. Confirm that each changed page still serves its recorded primary persona and reader intent.\n\n**High-traffic pages to always check:**\n- [docs/copilot/overview.md](/docs/copilot/overview.md), [docs/copilot/concepts/overview.md](/docs/agents/concepts/overview.md), [docs/agents/reference/ai-features-cheat-sheet.md](/docs/agents/reference/ai-features-cheat-sheet.md)\n- [docs/copilot/getting-started.md](/docs/copilot/getting-started.md), [docs/agents/overview.md](/docs/agents/overview.md)\n- [docs/agents/reference/workspace-context.md](/docs/agents/reference/workspace-context.md), [docs/agents/agent-troubleshooting/faq.md](/docs/agents/agent-troubleshooting/faq.md)\n\n## Terminology\n\nUse these terms consistently. The \"Avoid\" column lists terms that creep in but should not.\n\n| Concept | Use | Avoid |\n|---------|-----|-------|\n| Autonomous coding sessions | agents | agent mode, agentic workflows |\n| Running without user interaction | background agents | background agent mode |\n| Code suggestions as you type | inline suggestions | code completions, autocomplete |\n| Predicted next edit location | next edit suggestions (NES) | predictive edits |\n| Understanding code across files | workspace context, cross-file reasoning | deep semantic understanding (overuse) |\n| GitHub's search for code context | GitHub's code search | remote search |\n| VS Code's type/symbol analysis | language intelligence (IntelliSense, LSP) | code intelligence |\n| Multiple AI model options | multiple AI models | leading AI models |\n| Plan then implement workflow | Plan agent, implementation agent | planning mode |\n\n## Capability areas\n\nWhen auditing, ensure docs accurately cover these areas:\n\n- **Agents**: plan, implement, verify, parallel sessions, local/background/cloud, third-party support\n- **Context**: semantic search, language intelligence (LSP), GitHub code search, cross-repo awareness\n- **Multi-file editing**: coordinated changes, architecture-level refactoring, framework migrations\n- **Enterprise**: organization policies, model access controls, content exclusions, trust boundaries\n- **SDLC workflow**: Plan agent, implementation agent, Copilot code review, background/cloud handoff\n- **Scale**: large codebases, monorepos, multi-root workspaces, remote indexing\n\n<!-- File: .github/skills/frontmatter-description/SKILL.md (Tokens: ~1194 | Category: anthropic-skill) -->\n---\nname: frontmatter-description\ndescription: 'Check and optimize MetaDescription frontmatter fields in VS Code documentation. Use when auditing, adding, or improving page descriptions for SEO and discoverability. Apply this when making content changes to markdown articles.'\n---\n\n# Frontmatter Description\n\nCheck and optimize `MetaDescription` frontmatter fields in markdown documentation files. Produces actionable fixes for descriptions that violate the rules below.\n\n## When to Use\n\n* Adding or editing a documentation page and need to write a `MetaDescription`.\n* Auditing existing pages for SEO or discoverability improvements.\n* Asked to check, review, or optimize frontmatter descriptions.\n* Editing content articles and want to ensure the `MetaDescription` reflects the updated content.\n\n## Rules\n\nEvery `MetaDescription` value must satisfy **all** of the following:\n\n| Rule | Detail |\n|------|--------|\n| **Length** | Maximum 160 characters. |\n| **Tone** | Action-oriented, value-focused, factual, and impersonal. |\n| **Voice** | No \"you can\", \"users can\", or \"this page explains\". |\n| **Sentences** | Complete sentences, not fragments or labels. |\n| **No colons** | Do not include `:` in the value — it breaks YAML parsing. |\n| **Uniqueness** | Each description must be unique across the docs. |\n| **Reusable variables** | Preserve existing `{% data variables.<group>.<name> %}` references. Do not replace them with rendered product names. |\n\nDescriptions must also reflect the page's primary persona, reader intent, and article purpose. Establish that framing by following the [content-framing guidance](../../instructions/docs-writing.instructions.md#content-framing) before suggesting or applying a description. If the existing page and writer's request support multiple materially different interpretations, ask the writer to confirm the framing before editing.\n\n## Procedure\n\n### 1. Identify target files\n\nDetermine which files to check:\n\n* If given specific files, use those.\n* If asked to audit a folder (e.g., `docs/copilot/`), find all `.md` files in that folder recursively.\n* Skip files that have no YAML frontmatter (e.g., `README.md` files without `---` delimiters).\n\n### 2. Extract and validate\n\nFor each file, read enough of the page to identify its primary persona, reader intent, and article purpose. Then read the YAML frontmatter and check the `MetaDescription` field:\n\n1. **Missing** — Flag if `MetaDescription` is absent.\n2. **Length** — Flag if the value exceeds 160 characters. Report the current length.\n3. **Voice** — Flag if it contains \"you can\", \"users can\", \"this page explains\", or similar reader-addressing phrases.\n4. **Tone** — Flag if the description is a fragment, a label, or passive rather than action-oriented.\n5. **Context** — Flag if the description does not mention the relevant feature or tool.\n6. **Content alignment** — Flag if the description does not represent the page's purpose or the outcome sought by its primary persona.\n7. **Forbidden words** — Flag any occurrence of \"teaching\", \"enable\", \"disable\", or condescending terms.\n8. **Colons** — Flag any `:` character in the value.\n9. **Versions** — Flag any version numbers (e.g., \"v1.90\", \"VS Code 1.90\").\n10. **Formatting** — Flag Jinja2 variables (`{{...}}`), HTML tags, or Markdown formatting. Do not flag supported reusable data variables (`{% data variables.<group>.<name> %}`).\n11. **Reusable variables** — When a description contains a reusable data variable, verify that its full path exists in [`data/variables`](../../../data/variables/README.md) and resolves to the intended text. Preserve valid variables exactly as written.\n\n### 3. Report findings\n\nPresent results as a table:\n\n```\n| File | Issue | Current value | Suggested fix |\n|------|-------|---------------|---------------|\n```\n\n* Group by file path.\n* For each issue, provide the current `MetaDescription` and a rewritten suggestion that passes all rules.\n* If a description passes all checks, omit it from the table (or mark it as passing if the user asked for a full report).\n\n### 4. Apply fixes (when asked)\n\n* Edit the `MetaDescription` value in the YAML frontmatter.\n* Do not change any other frontmatter fields.\n* Do not alter the page body content.\n* Preserve existing reusable data variables. Never replace a variable with its rendered product name.\n* Verify the fix passes all rules and reflects the confirmed page framing before applying.\n\n## Examples\n\n**Good descriptions:**\n\n* `Get AI-powered inline suggestions from GitHub Copilot in VS Code, including ghost text completions and next edit suggestions.`\n* `Configure and manage extensions in Visual Studio Code to customize your development environment.`\n* `Debug Python applications in Visual Studio Code with breakpoints, variable inspection, and integrated terminal output.`\n* `Build a web app with an AI agent in {% data variables.product.prodname_vscode_shortname %}, then review and validate the result.`\n\n**Bad descriptions and why:**\n\n| Description | Problem |\n|-------------|---------|\n| `This page explains how to use Copilot.` | Uses \"this page explains\". |\n| `You can debug your code with VS Code.` | Uses \"you can\". |\n| `Copilot` | Fragment, not a sentence. |\n| `Learn how to enable the new feature in VS Code 1.90.` | Uses \"enable\" and includes a version number. |\n| `Set up debugging: configure launch.json for Python.` | Contains a colon. |\n\n<!-- File: .github/skills/pr-review/SKILL.md (Tokens: ~2112 | Category: anthropic-skill) -->\n---\nname: pr-review\ndescription: 'Verify the technical accuracy of a vscode-docs pull request against the VS Code source code in microsoft/vscode and microsoft/vscode-copilot-chat. Use when reviewing a docs PR for factual correctness — setting names, command IDs, default values, API shapes, keybindings, versioned availability, and described behavior.'\nargument-hint: '<PR number or branch> (defaults to the current PR / branch)'\n---\n\n# PR Technical Accuracy Review\n\nReview a vscode-docs pull request and verify every factual claim about VS Code behavior against the source code in `microsoft/vscode` and `microsoft/vscode-copilot-chat`. Produce an actionable list of findings the author can address before merging.\n\nThis skill checks **technical accuracy only**. It does not enforce writing style, frontmatter, or release-notes structure — use the `release-note-writer` or `frontmatter-description` skills for those.\n\n## When to Use\n\n* Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.\n* Auditing existing docs for drift after a feature has changed.\n* Asked to \"fact-check\", \"verify\", or \"validate\" a docs change against the product.\n* Before merging a PR that touches `docs/`, `api/`, `remote/`, or release-notes content tied to a specific behavior.\n\nDo **not** use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.\n\n## Repos to Check\n\n| Area being documented | Primary source repo(s) |\n|----------------------|------------------------|\n| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |\n| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat | `microsoft/vscode-copilot-chat` |\n| Extension API, contribution points, `package.json` schema | `microsoft/vscode` (under `src/vs/workbench/api/`, `src/vscode-dts/`, and `extensions/`) |\n| Enterprise policies | `microsoft/vscode` (policy definitions) — note that `enterprise/policies.md` is generated; verify against source, not the generated file |\n\nUse the `gh` CLI for all GitHub interactions (see user memory `gh-cli-powershell.md` for PowerShell-specific patterns).\n\n## Procedure\n\n### 1. Identify the PR and its diff\n\n* If a PR number was given, run `gh pr view <number> --json number,title,headRefName,baseRefName,files,body` to get metadata and the file list.\n* If no argument was given, run `gh pr view --json ...` to use the PR for the current branch. If there is no associated PR, fall back to `git diff origin/main...HEAD`.\n* Get the actual changed lines with `gh pr diff <number>` (or `git diff` for a branch).\n* Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).\n\n### 2. Extract verifiable claims\n\nWalk the diff and build a list of every claim that can be checked against source code. Include line numbers from the new file content. Categories to look for:\n\n| Category | Examples |\n|----------|----------|\n| **Setting** | `editor.fontSize`, `chat.agent.enabled`, default values, allowed enum values, deprecation status |\n| **Command** | Command IDs (`workbench.action.*`), command palette titles, the action they perform |\n| **Keybinding** | Default key bindings, `when` clauses, platform-specific overrides |\n| **Menu / UI label** | Menu item text, button labels, view titles, walkthrough step titles |\n| **API** | Names, signatures, and shapes in `vscode.d.ts` / `vscode.proposed.*.d.ts` |\n| **Contribution point** | `package.json` schema entries (`contributes.*`), required fields |\n| **Chat tool / participant** | Tool names, participant IDs, tool input/output schemas, agent mode availability |\n| **MCP** | Server config schema, supported transports, capability flags |\n| **Version availability** | \"Available since 1.X\" / \"New in 1.X\" claims |\n| **Default behavior** | What happens out-of-the-box, what is on/off by default |\n| **Policy** | Policy names, supported values, scope |\n\nTreat anchor-style references (e.g., `setting(chat.agent.enabled)`, `command:workbench.action.X`) as claims to verify.\n\n### 3. Verify each claim\n\nFor every claim, locate the source of truth and compare. Prefer one targeted lookup per claim — do not download full files when a search will do.\n\n**Search the source repos** (parallelize independent lookups):\n\n* `gh search code --repo microsoft/vscode '\"<exact-string>\"'` for setting IDs, command IDs, contribution keys.\n* `gh search code --repo microsoft/vscode-copilot-chat '\"<exact-string>\"'` for chat tool names, participant IDs, agent-mode flags.\n* `gh api \"search/code?q=<query>+repo:microsoft/vscode\"` when the `gh search` CLI quotes the query in a way that breaks qualifiers (see user memory `gh-cli-powershell.md`).\n* `gh api repos/microsoft/vscode/contents/<path>?ref=main` to read a specific file.\n\n**Where things live (common starting points):**\n\n* Settings — search for `'<setting.id>'` near `registerConfiguration` calls; default values are in the `default:` field of the schema.\n* Commands — search for `CommandsRegistry.registerCommand` or `registerAction2` with the matching `id`.\n* Keybindings — search for `KeybindingsRegistry.registerKeybindingRule` or look in `src/vs/workbench/browser/parts/editor/...` and feature folders.\n* Extension API — `src/vscode-dts/vscode.d.ts` (stable) and `src/vscode-dts/vscode.proposed.*.d.ts` (proposed).\n* Chat tools — search `microsoft/vscode-copilot-chat` for `displayName`, `toolReferenceName`, or the tool ID string.\n* Contribution points — `extensions/<ext>/package.json` and the schema in `src/vs/workbench/api/common/extHost*.ts`.\n\n**Version availability** — when a doc claims \"since 1.X\":\n\n* `gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X` to see if the symbol existed in that branch, or\n* `gh search commits --repo microsoft/vscode '<symbol>'` to find when it was introduced.\n\nIf a claim cannot be verified after a reasonable search, mark it **Unverified** rather than failing it — the author may have access to context the source does not expose.\n\n### 4. Categorize each finding\n\n| Severity | Use when |\n|----------|----------|\n| **Error** | The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |\n| **Warning** | The claim is partially correct but misleading (default changed in a recent release, behavior is platform-specific and the doc does not say so, feature is behind a setting the doc does not mention). |\n| **Suggestion** | Optional clarification — link to the source, add a \"since 1.X\" note, mention a related setting. |\n| **Unverified** | Could not locate the source of truth; ask the author to confirm. |\n\n### 5. Produce the findings list\n\nOutput a Markdown report with this structure:\n\n```markdown\n## PR Accuracy Review: #<number> — <title>\n\n**Files reviewed:** <count>\n**Claims checked:** <count>\n**Result:** <Pass | Pass with warnings | Needs changes>\n\n### Errors\n\n* **`<file>`:L<line>** (`<category>`) — <one-line description>\n  * Doc says: `<quoted text>`\n  * Source: `<repo>/<path>#L<line>` — <what the source actually says>\n  * Fix: <specific suggested correction>\n\n### Warnings\n\n* ...\n\n### Suggestions\n\n* ...\n\n### Unverified\n\n* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.\n```\n\nRules for the report:\n\n* Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the `fileLinkification` rules.\n* For source-code citations, include the repo, file path, and (when known) line or commit. A `gh`-friendly URL is fine: `https://github.com/microsoft/vscode/blob/main/<path>#L<line>`.\n* Quote the doc text exactly so the author can search for it.\n* Keep each finding to one issue — split combined problems into separate items.\n* If everything checks out, say so explicitly and skip the empty sections.\n\n### 6. Summary\n\nEnd with:\n\n* Counts by severity.\n* An overall verdict: **Pass**, **Pass with warnings**, or **Needs changes** (any Errors → Needs changes).\n* A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.\n\n## Notes\n\n* Do **not** push commits or post review comments on the PR unless the user explicitly asks. This skill produces a report for the user to act on.\n* Do **not** edit `enterprise/policies.md` — it is generated; flag policy issues against `enterprise/policies-template.md` and the source policy definitions instead.\n* When the doc references screenshots or videos, do not attempt to verify their contents — only verify any captions, labels, or alt text that make factual claims.\n* Prefer `main` as the source-of-truth ref unless the PR explicitly documents behavior on a release branch or Insiders-only feature, in which case check `release/1.X` or recent commits accordingly.\n\n<!-- File: .github/skills/release-note-writer/examples/v1_109.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `.github/skills/release-note-writer/examples/v1_109.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/examples/v1_109.md)\n\n<!-- File: .github/skills/release-note-writer/review-procedure.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Release-note-writer Skill\n\nPath: `.github/skills/release-note-writer/review-procedure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.github/skills/release-note-writer/review-procedure.md)\n\n<!-- File: .github/skills/release-note-writer/SKILL.md (Tokens: ~2031 | Category: anthropic-skill) -->\n---\nname: release-note-writer\ndescription: Guidelines for writing and reviewing Insiders and Stable release notes for Visual Studio Code. This also includes instructions for updating release notes for recovery releases.\n---\n# Visual Studio Code Release Note Writer Guidelines\n\nThis skill is designed to help you write release notes for Visual Studio Code Insiders and Stable releases. It provides structured guidelines and examples to ensure consistency and clarity in the release notes.\n\nThere are two main types of release notes you can generate using this skill:\n\n1. **Insiders Release Notes**: These notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\n2. **Stable Release Notes**: These notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\nYour task is help generate these release notes based on the provided guidelines, examples, and templates.\n\n## General writing guidelines for release notes\n\nFollow the guidelines in this order of priority:\n\n1. [Release notes writing instructions](../../instructions/release-notes-writing.instructions.md)\n2. [Visual Studio Code documentation writing guidelines](../../instructions/docs-writing.instructions.md)\n\nBefore writing or retaining an entry, verify that the functionality is available in the public release channel covered by the notes. Public Insiders, Preview, and Experimental functionality qualifies when labeled clearly. Exclude and report internal dogfood, hidden settings or commands, source-only implementation, and manually settable internal feature flags. An internal setting can be referenced only under the narrow exception in the release notes writing instructions: the user must explicitly request the specific reference and then confirm it before you add it.\n\n## Insiders Release Notes\n\nInsiders release notes cover the latest features and updates in the Insiders build of VS Code. They are updated frequently as new features are added. Their format includes sections grouped by the date of the updates. The content is generated based on closed GitHub issues and PRs for a specific milestone.\n\nYour task is to generate release notes for the specified VS Code Insiders release version based on GitHub issues and PRs.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no milestone name is specified, check if the milestone name is in the frontmatter, otherwise ask the user for the milestone name.\nIf no label is specified, use the \"feature-request\" label by default.\n\nDO NOT continue until you have the release version and milestone name!!\n\n### File format\n\nIssues are grouped in H2 sections by their closed date. The TOC must be updated to reflect the new sections and issues added.\n\nUse [this template](../../../templates/template-release-note-insiders.md) for the Insiders release notes.\n\nThe [1.109 release notes](./examples/v1_109.md) are a concrete example of an Insiders release note.\n\n### Generation steps\n\n1. If there is not an existing Insiders release note for the specified version, create a new release note file using the Insiders release note template and replace the placeholders.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. Do not insert a banner image or add a statement that the release notes were generated by AI or GitHub Copilot.\n\n1. Get last update date from existing release notes for the specified release version. If no existing release notes, disregard last update date.\n\n1. Run a subagent to fetch all closed GitHub issues in the microsoft/vscode repo for the milestone that have the specified label and closed date as of the latest update date by using the github CLI. Save the JSON in the release note document.\n\n    Use this CLI command: `gh search issues --repo microsoft/vscode --label <label name> --milestone <milestone name> --state closed \"closed:>=<latest update date>\" -L 100`\n\n1. Verify that each candidate is available in the public Insiders build. Exclude and report internal-only candidates instead of creating entries for them.\n\n1. Ignore issues that are marked as duplicate or not planned.\n\n1. For each issue in the JSON result, run a subagent to update the release notes and TOC with a concise, technically accurate summary of the issue. Use associated PRs to verify details, but do not include implementation details in the entry. At the end of the summary, include a link to the GH issue which include the issue number and title (format: #12345: Issue title). Group issues under an H2 section that represents the closed date.\n\n### Phrasing guidelines for Insiders entries\n\n- Treat each entry as a changelog item. Use one short sentence whenever possible.\n- State only the user-visible change and essential configuration or lifecycle information.\n- Add a second sentence only when a constraint, fallback, or compatibility detail is necessary to use the feature correctly.\n- Omit background context, implementation details, testing instructions, and information already clear from the issue link.\n- When describing new capabilities, prefer the format \"Add support for ...\" over \"... now supports ...\". For example, write \"Add support for sorting sessions by date\" rather than \"The sessions view now supports sorting by date\".\n- Avoid using the word \"now\" in entries. State what changed directly instead. For example, write \"Branch names are generated based on the user's prompt\" rather than \"Branch names are now generated based on the user's prompt\".\n\n## Stable Release Notes\n\nStable release notes summarize the key features and improvements in a stable release of VS Code. They follow a more structured format with predefined sections for different feature areas. The release is initially created using a template and then updated by the engineering team.\n\n### Input parameters\n\nIf no release version is specified, ask the user for the release version.\nIf no release month and year are specified, ask the user for the release month and year.\nDO NOT continue until you have the release version and release month and year!!\n\n### File format\n\nUse [this template](../../../templates/template-release-note-endgame.md) for generating the initial Stable release notes.\n\n### Generation steps\n\n1. If there is not an existing release note for the specified version, create a new release note file using the Stable release note template.\n\n    Release notes are stored in the `/release-notes` folder with the filename format `v<version>.md`, e.g., `v1_109.md`.\n\n1. If there is an existing release note for the specified version, and it's an Insiders release note, replace the content with the Stable release note template content.\n\n1. If there is an existing Stable release note for the specified version, perform a code review of the existing release note to ensure it adheres to the writing guidelines. Suggest improvements as needed.\n\n1. Verify that each feature is available in the Stable release being documented. Exclude and report internal-only features, and do not infer availability from source-code existence alone.\n\n### Value proposition and feature framing\n\nThe [writing instructions](../../instructions/release-notes-writing.instructions.md) define the value-proposition and feature-continuity rules. When writing Stable entries, keep these essentials top of mind:\n\n* Open each entry with the user benefit or the problem being solved, then explain mechanics.\n* For multi-release features, re-establish context in 1-2 sentences so the entry stands on its own.\n* For admin/policy features, cover both the admin use case and the developer-facing impact.\n* Prefer concrete examples and before/after comparisons over vague claims.\n\n### Verify context gaps with the user\n\nAfter a first pass of all feature sections, review the draft for gaps you cannot resolve from the issue, PR, or existing docs. Batch all gaps into a single ask-questions prompt rather than interrupting per section. Ask when:\n\n* **Value prop unclear**: You cannot confidently write a benefit-first opening from the source material.\n* **Multi-release context missing**: A feature builds on prior work but you cannot find earlier entries to reference.\n* **Audience ambiguous**: Framing differs depending on whether the audience is developers, admins, or extension authors.\n* **Docs coverage thin**: A feature references a concept that is undocumented or only mentioned as a sidenote, and you need guidance on how much to explain inline.\n\nFor each gap, include your best-guess draft so the user can confirm or correct rather than write from scratch.\n\nBefore asking, search the `docs/` folder for any referenced concepts. If docs coverage is thorough, link to the page and skip the question. Only flag concepts where coverage is thin or absent.\n\n## Recovery release notes\n\nWhen a recovery release is needed, a note is added to the top of the release notes that links to the issues resolved in the recovery release. In addition, the download version is updated to the recovery release version. The rest of the release notes remain unchanged.\n\nPerform these steps to update the release notes for a recovery release:\n\n1. Update the `DownloadVersion` in the frontmatter to the recovery release version.\n\n1. Add a note at the top of the release notes, right after the release date, that links to the issues resolved in the recovery release:\n\n    ```markdown\n    **Update <recovery version>**: The update addresses these [issues](https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aclosed+milestone%3A<recovery version>).\n    ```\n\n    When multiple recovery releases are needed, add the note for each recovery release in chronological order.\n\n\n## Review Procedure\n\nTo review release notes, follow the full [review procedure](./review-procedure.md). This covers both standalone review and post-write validation, with checklists for Insiders and Stable release notes.\n\n<!-- File: .github/skills/write-my-release-notes/SKILL.md (Tokens: ~2384 | Category: anthropic-skill) -->\n---\nname: write-my-release-notes\ndescription: 'Generate VS Code release notes for the features you worked on in a milestone. ALWAYS use this skill when the user asks to \"write release notes for my features\", \"document my milestone features\", or \"generate release notes from my issues\". It gathers the milestone features you own from GitHub, analyzes each feature and its related issues, and writes user-focused feature sections into the milestone release notes file.'\nargument-hint: '<milestone name>'\n---\n\n# VS Code Release Features Writer\n\nThis skill turns the features you worked on in a VS Code milestone into polished, user-focused release note sections. It gathers the features you own from GitHub using the `gh` CLI, then documents every one of them in the milestone's release notes file.\n\nUse this skill when the user wants to draft or update the feature sections of a milestone's release notes based on the issues and test plan items they worked on.\n\n## Prerequisites\n\n* **Prefer the GitHub MCP server** for all GitHub queries when it is available. Use its issue search and issue read capabilities to run the queries and read the bodies, labels, and comments described below.\n* **Fall back to the `gh` CLI** only when the GitHub MCP server is not available. In that case, ensure it is authenticated (`gh auth status`); the `gh` commands below implement the same queries.\n* Queries use `@me`, so results are scoped to the authenticated user.\n\n## Input parameters\n\n* **Milestone name**: If the user does not provide a milestone name, ask the user for it. Do not continue until you have the milestone name.\n\n## Locate the release notes file\n\n1. Confirm the milestone name with the user.\n1. Find the release notes file under the `/release-notes` folder. The file name does **not** match the milestone name, so search the folder contents for the text `TOCTitle: <milestone name>` (for example, `TOCTitle: April 2016`).\n1. If no file exists for the milestone, create one using the appropriate template in `/templates` and a filename of the form `v<version>.md` (for example, `v1_109.md`).\n\n## Identify features to document\n\nGather the features the user owns by running the following GitHub search queries. Use the **GitHub MCP server** if available; otherwise use the **`gh` CLI** commands shown below. Substitute `<milestone>` with the milestone name (keep the surrounding quotes). Collect each issue's `number`, `title`, `body`, `url`, `labels`, and comments.\n\n### Step 0 — Consult prior context (optional).\nIf you have persistent memory, notes, or prior context about this milestone (coverage decisions, features you own that the label queries won't surface, work intentionally excluded), review it before the GitHub queries and reconcile against the results. Skip if you have none.\n\n### Step 1 — Feature-request issues assigned to you\n\n```bash\ngh search issues 'org:microsoft milestone:\"<milestone>\" label:feature-request assignee:@me' \\\n  --limit 100 --json number,title,body,url,labels,repository\n```\n\nProcess the results:\n\n* **Skip** any issue labeled `*duplicate` or `*out-of-scope`.\n* If an issue is labeled `on-testplan`, **set it aside** — do not document it directly. It will be attached as a related issue to its test plan item in Step 2.\n* All remaining issues are release features to document.\n\n### Step 2 — Test plan items authored by you\n\n```bash\ngh search issues 'repo:microsoft/vscode milestone:\"<milestone>\" label:testplan-item author:@me' \\\n  --limit 100 --json number,title,body,url,labels\n```\n\nEach test plan item is also a release feature to document. List the test plan item features **first**, before the feature-request features from Step 1. For each test plan item, collect related issues that provide the real feature detail:\n\n* **Issues filed against the test plan item** — closed issues that reference it during testing:\n\n    ```bash\n    gh search issues 'repo:microsoft/vscode is:closed Testing <testplan-item-number>' \\\n      --limit 100 --json number,title,body,url,labels\n    ```\n\n* **Set-aside `on-testplan` issues from Step 1** whose issue number appears in the test plan item's body — attach these as related issues too.\n\n### Step 2.5 — Reconcile against all your milestone work (catch mislabeled features)\n\nThe label queries in Steps 1 and 2 only find issues labeled `feature-request` or `testplan-item`. Real features are often tracked under other labels during the endgame — for example a feature that shipped a fix may carry `bug`, `verification-needed`, or `polish` instead. **Do not trust the label queries to be exhaustive.** Run these broader queries and reconcile the results against what Steps 1 and 2 already surfaced:\n\n```bash\ngh search issues --owner microsoft --assignee @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\ngh search issues --owner microsoft --author @me --milestone \"<milestone>\" \\\n  --limit 100 --json number,title,url,labels,state\n```\n\nFor every issue these return that is **not** already covered by Steps 1 and 2, judge it on its content, not its label:\n\n* If it describes a **user-facing capability** (a new command, setting, UI, deep link, workflow), document it as a feature — regardless of whether it is labeled `bug`, `verification-needed`, `polish`, or something else. A \"bug\" that adds or restores a capability users will notice is a release feature.\n* If it is a **pure defect fix, internal cleanup, or minor polish** with no user-facing capability, leave it out of the feature sections (it belongs in \"Notable fixes\" at most).\n* When in doubt, read the body and comments (Step 3) before deciding, and ask the user whether to include it.\n\nIf you have persistent memory or prior context about this milestone (Step 0), cross-check each remembered feature you own against the combined results here — a feature noted in memory but missing from the query output is exactly the kind of item that slips through mislabeling.\n\n### Step 3 — Fetch comments for each issue\n\nThe search queries above may not return comments (the `gh search issues` `--json` output does not include them). For every feature and related issue you plan to use, read the full body and comments for context — use the GitHub MCP server's issue read capability if available, otherwise the `gh` CLI:\n\n```bash\ngh issue view <number> --repo <owner/repo> --json number,title,body,url,labels,comments\n```\n\nDocument **every** feature gathered from Steps 1, 2, and 2.5 — none should be skipped. Most features are identified by one of these labels:\n\n* `feature-request` — a standard feature request issue. Its description and comments contain the feature details.\n* `testplan-item` — a structured test plan for the feature. Its description contains in-depth details plus setup and test steps.\n\nSome features surface only through Step 2.5 under other labels (for example `bug`, `verification-needed`, or `polish`). Treat those as features too when they describe a user-facing capability — the label does not disqualify them.\n\nUse the related issues (from Step 2) to pull in additional context (their summary, description, and comments).\n\n## Build each feature section\n\nGather and analyze all relevant details before writing:\n\n* The summary, description, and comments of the feature itself.\n* The summary, description, and comments of every related issue.\n\nThen write a comprehensive, user-focused section for each feature:\n\n* **Feature title**\n    * Use a concise, descriptive title that identifies the feature. Use sentence case.\n    * Do **not** take the title from a `testplan-item`, because that title is written for testing.\n    * If the feature is in Preview or Experimental, include that status in the heading, for example `### New JavaScript debugging experience (Preview)`.\n* **Feature description**\n    * Do not add a \"Feature Description\" header — start directly with the prose under the heading.\n    * Explain the feature, its purpose, and any constraints users should be aware of.\n    * Never include testing content: no setup, test instructions, or validation steps.\n* **Value proposition** — every section must answer \"Why should the user care?\"\n    * Lead with the user benefit or the problem being solved, then explain the mechanics. State the pain point first, then the resolution.\n    * Avoid describing only what changed. A mechanism (\"buffer-based rendering\") is not a benefit (\"chat responses feel more fluid\").\n    * Link to relevant [VS Code documentation](https://code.visualstudio.com/docs/) when referencing tools, APIs, or concepts that are not common developer knowledge. Expand inline when docs coverage is thin.\n    * For admin and policy features, cover both the administrative use case (compliance, security, cost control) and the developer-productivity impact.\n* **Feature continuity for multi-release features**\n    * For features that span multiple releases (for example, Agents, Customization UI, Sandboxing), add a 1-2 sentence reminder of what the feature is and its goal before describing what changed this release.\n    * The first release of a feature should lead with benefit-oriented bullets. Later releases should still re-establish context.\n\n## Writing guidelines\n\nFollow the [release notes writing instructions](../../instructions/release-notes-writing.instructions.md) first, then the [VS Code documentation writing guidelines](../../instructions/docs-writing.instructions.md). Key rules:\n\n* Use sentence case for headings; do not apply italic, bold, or inline code styling to headings.\n* Use absolute documentation links that start with `https://code.visualstudio.com/docs/` and omit the `.md` suffix. Use descriptive link text — never \"click here\", \"this link\", or \"here\".\n* Image alt text must describe the content and start with \"Screenshot showing\" or \"Screenshot of\". Video alt text must start with \"Video showing\" or \"Video of\" and use the `<video>` tag: `<video src=\"[URL]\" title=\"[description].\" autoplay loop controls muted></video>`.\n* Format notes and tips as block quotes with a bold **Note** or **Tip** prefix. Use asterisks for list items.\n* Reference settings with the `setting(setting.name)` format and keyboard shortcuts with the `kb(command.commandId)` format.\n* Avoid marketing language and the word \"now\". State what changed directly and prefer concrete before/after examples over vague claims like \"improved support\".\n* Group features that share a theme (for example, several agent improvements) and lead with the most impactful one.\n\n## Verify technical details\n\n* Only document settings and commands that actually exist. Verify setting names, values, and command IDs before referencing them.\n* Fact-check all technical details and confirm every link and reference resolves.\n* Keep terminology and structure consistent with existing release notes.\n\n## Writing to the file\n\n* Write **only** the feature documentation sections. Do not add version headers, welcome messages, or update summaries.\n* Start directly with `###` feature headings.\n* Do not leave TODO placeholders.\n* Save the changes to the milestone release notes file.\n\n<!-- File: .vscode/extensions/doc-assistant/.vscode/launch.json (Tokens: ~300 | Category: anthropic-skill) -->\n# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/launch.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/launch.json)\n\n<!-- File: .vscode/extensions/doc-assistant/.vscode/settings.json (Tokens: ~300 | Category: anthropic-skill) -->\n# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/settings.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/settings.json)\n\n<!-- File: .vscode/extensions/doc-assistant/.vscode/tasks.json (Tokens: ~300 | Category: anthropic-skill) -->\n# .vscode Skill\n\nPath: `.vscode/extensions/doc-assistant/.vscode/tasks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/.vscode/tasks.json)\n\n<!-- File: .vscode/extensions/doc-assistant/package-lock.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package-lock.json)\n\n<!-- File: .vscode/extensions/doc-assistant/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/package.json)\n\n<!-- File: .vscode/extensions/doc-assistant/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Doc-assistant Skill\n\nPath: `.vscode/extensions/doc-assistant/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/tsconfig.json)\n\n<!-- File: api/references/activation-events.md (Tokens: ~3249 | Category: anthropic-skill) -->\n---\n# DO NOT TOUCH — Managed by doc writer\nContentId: C83BB647-A37E-45CE-BA4C-837B397C2ABE\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: To support lazy activation of Visual Studio Code extensions (plug-ins), your extension controls when it should be loaded through a set of Activation Events.\n---\n\n# Activation Events\n\n**Activation Events** is a set of JSON declarations that you make in the `activationEvents` field of `package.json` [Extension Manifest](/api/references/extension-manifest). Your extension becomes activated when the **Activation Event** happens. Here is a list of all available **Activation Events**:\n\n- [`onAuthenticationRequest`](/api/references/activation-events#onAuthenticationRequest)\n- [`onChatParticipant`](/api/references/activation-events#onChatParticipant)\n- [`onCommand`](/api/references/activation-events#onCommand)\n- [`onCustomEditor`](/api/references/activation-events#onCustomEditor)\n- [`onDebug`](/api/references/activation-events#onDebug)\n  - [`onDebugAdapterProtocolTracker`](/api/references/activation-events#onDebugAdapterProtocolTracker)\n  - [`onDebugDynamicConfigurations`](/api/references/activation-events#onDebugDynamicConfigurations)\n  - [`onDebugInitialConfigurations`](/api/references/activation-events#onDebugInitialConfigurations)\n  - [`onDebugResolve`](/api/references/activation-events#onDebugResolve)\n- [`onEditSession`](/api/references/activation-events#onEditSession)\n- [`onFileSystem`](/api/references/activation-events#onFileSystem)\n- [`onIssueReporterOpened`](/api/references/activation-events#onIssueReporterOpened)\n- [`onLanguage`](/api/references/activation-events#onLanguage)\n- [`onLanguageModelTool`](/api/references/activation-events#onLanguageModelTool)\n- [`onNotebook`](/api/references/activation-events#onNotebook)\n- [`onOpenExternalUri`](/api/references/activation-events#onOpenExternalUri)\n- [`onRenderer`](/api/references/activation-events#onRenderer)\n- [`onSearch`](/api/references/activation-events#onSearch)\n- [`onStartupFinished`](/api/references/activation-events#onStartupFinished)\n- [`onTaskType`](/api/references/activation-events#onTaskType)\n- [`onTerminal`](/api/references/activation-events.md#onTerminal)\n    - [`onTerminalProfile`](/api/references/activation-events#onTerminalProfile)\n    - [`onTerminalShellIntegration`](/api/references/activation-events.md#onTerminalShellIntegration)\n- [`onUri`](/api/references/activation-events#onUri)\n- [`onView`](/api/references/activation-events#onView)\n- [`onWalkthrough`](/api/references/activation-events#onWalkthrough)\n- [`onWebviewPanel`](/api/references/activation-events#onWebviewPanel)\n- [`workspaceContains`](/api/references/activation-events#workspaceContains)\n- [`*`](/api/references/activation-events#Start-up)\n\nWe also provide a reference of all fields in the [`package.json` extension manifest](/api/references/extension-manifest).\n\n## onLanguage\n\nThis activation event is emitted and interested extensions will be activated whenever a file that resolves to a certain language gets opened.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:python\"\n]\n```\n\nThe `onLanguage` event takes a [language identifier](/docs/languages/identifiers) value.\n\nMultiple languages can be declared with separate `onLanguage` entries in the `activationEvents` array.\n\n```json\n\"activationEvents\": [\n    \"onLanguage:json\",\n    \"onLanguage:markdown\",\n    \"onLanguage:typescript\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, languages contributed by your extension do not require a corresponding `onLanguage` activation event declaration for your extension to be activated.\n\nAdditionally, if your extension needs to be activated before any language is used, you can use the generic `onLanguage` activation event to ensure this:\n\n```json\n\"activationEvents\": [\n    \"onLanguage\"\n]\n```\n\n> **Note**: It is best practice to activate only when a user needs your extension. If your extension works on a subset of languages, it is better for the user to list that subset than to activate on all languages.\n\n## onCommand\n\nThis activation event is emitted and interested extensions will be activated whenever a command is being invoked:\n\n```json\n\"activationEvents\": [\n    \"onCommand:extension.sayHello\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, commands contributed by your extension do not require a corresponding `onCommand` activation event declaration for your extension to be activated.\n\n## onDebug\n\nThis activation event is emitted and interested extensions will be activated before a debug session is started:\n\n```json\n\"activationEvents\": [\n    \"onDebug\"\n]\n```\n\nThese are four more fine-grained `onDebug` activation events:\n\n### onDebugAdapterProtocolTracker\n\n`onDebugAdapterProtocolTracker` is emitted whenever a debug session with the specific type is about to be launched and a debug protocol tracker might be needed.\n\n### onDebugDynamicConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide dynamic debug configurations when the user asks for them, such as through the UI via the \"Select and Start Debugging\" command.\n\nThe presence of this activation event is used as a signal that the extension contributes dynamic debug configurations.\n\n### onDebugInitialConfigurations\n\nThis activation event is emitted just before the `provideDebugConfigurations` method of the `DebugConfigurationProvider` is called to provide initial debug configurations, such as whenever a `launch.json` needs to be created.\n\n### onDebugResolve\n\n`onDebugResolve:type` is fired just before the `resolveDebugConfiguration` method of the `DebugConfigurationProvider` for the specified type is called.\n\n**Rule of thumb:** If activation of a debug extension is lightweight, use `onDebug`. If it is heavyweight, use `onDebugInitialConfigurations` and/or `onDebugResolve` depending on whether the `DebugConfigurationProvider` implements the corresponding methods `provideDebugConfigurations` and/or `resolveDebugConfiguration`. See [Using a DebugConfigurationProvider](/api/extension-guides/debugger-extension#using-a-debugconfigurationprovider) for more details on these methods.\n\n## workspaceContains\n\n`workspaceContains:path` is emitted and interested extensions will be activated whenever a folder is opened and the folder contains at least one file that matches a [glob pattern](/docs/editor/glob-patterns).\n\n```json\n\"activationEvents\": [\n    \"workspaceContains:**/.editorconfig\"\n]\n```\n\n## onFileSystem\n\n`onFileSystem:scheme` is emitted and interested extensions will be activated whenever a file or folder from a specific _scheme_ is read. This is usually the `file`-scheme, but with custom file system providers more schemes come into place, e.g `ftp` or `ssh`.\n\n```json\n\"activationEvents\": [\n    \"onFileSystem:sftp\"\n]\n```\n\n## onView\n\nThis activation event is emitted and interested extensions will be activated whenever a view of the specified id is expanded in the VS Code sidebar. Built-in views do not emit an activation event.\n\nThe activation event below will fire whenever a view with the `nodeDependencies` id is visible:\n\n```json\n\"activationEvents\": [\n    \"onView:nodeDependencies\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.74.0, views contributed by your extension do not require a corresponding `onView` activation event declaration for your extension to be activated.\n\n## onUri\n\nThis activation event is emitted and interested extensions will be activated whenever a system-wide Uri for that extension is opened. The Uri scheme is fixed to either `vscode` or `vscode-insiders`. The Uri authority must be the extension's identifier. The rest of the Uri is arbitrary.\n\n```json\n\"activationEvents\": [\n    \"onUri\"\n]\n```\n\nIf the `vscode.git` extension defines `onUri` as an activation event, it will be activated in any of the following Uris are open:\n\n- `vscode://vscode.git/init`\n- `vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git`\n- `vscode-insiders://vscode.git/init` (for VS Code Insiders)\n\n## onWebviewPanel\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to restore a [webview](/api/extension-guides/webview) with the matching `viewType`.\n\nFor example, the declaration of `onWebviewPanel` below:\n\n```json\n\"activationEvents\": [\n    \"onWebviewPanel:catCoding\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a webview with the viewType: `catCoding`. The viewType is set in the call to `window.createWebviewPanel` and you will need to have another activation event (for example, onCommand) to initially activate your extension and create the webview.\n\n## onCustomEditor\n\nThis activation event is emitted and interested extensions will be activated whenever VS Code needs to create a [custom editor](/api/extension-guides/custom-editors) with the matching `viewType`.\n\nFor example, the declaration of `onCustomEditor` below:\n\n```json\n\"activationEvents\": [\n    \"onCustomEditor:catCustoms.pawDraw\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs to restore a custom editor with the viewType: `catCustoms.pawDraw`. The viewType is set in the [`customEditors` contribution point](/api/extension-guides/custom-editors#contribution-point) and bound to a provider with `registerCustomEditorProvider`.\n\n> **Note**: Beginning with VS Code 1.74.0, custom editors contributed by your extension do not require a corresponding `onCustomEditor` activation event declaration for your extension to be activated.\n\n## onAuthenticationRequest\n\nThis activation event is emitted and interested extensions will be activated whenever an extension requests an authentication session (via the `authentication.getSession()` API) with the matching `providerId`.\n\nFor example, the declaration of `onAuthenticationRequest` below:\n\n```json\n\"activationEvents\": [\n    \"onAuthenticationRequest:github\"\n]\n```\n\nwill cause the extension to be activated when VS Code needs retrieve an `AuthenticationSession` of type `github`.\n\n> **Note**: Beginning with VS Code 1.74.0, authentication providers contributed by your extension do not require a corresponding `onAuthenticationRequest` activation event declaration for your extension to be activated.\n\n## onStartupFinished\n\nThis activation event is emitted and interested extensions will be activated **some time after** VS Code starts up. This is similar to the `*` activation event, but it will not slow down VS Code startup. Currently, this event is emitted after all the `*` activated extensions have finished activating.\n\n```json\n\"activationEvents\": [\n    \"onStartupFinished\"\n]\n```\n\n## onTaskType\n\n`onTaskType:type` is emitted whenever tasks of a certain type need to be listed or resolved.\n\n```json\n\"activationEvents\": [\n    \"onTaskType:npm\"\n]\n```\n\n> **Note**: Beginning with VS Code 1.76.0, tasks contributed by your extension do not require a corresponding `onTaskType` activation event declaration for your extension to be activated.\n\n## onEditSession\n\n`onEditSession:scheme` is emitted when an edit session is accessed with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onEditSession:file\"\n]\n```\n\n## onSearch\n\n`onSearch:scheme` is emitted when a search is started in the folder with the given scheme.\n\n```json\n\"activationEvents\": [\n    \"onSearch:file\"\n]\n```\n\n## onOpenExternalUri\n\nAn activation event emitted whenever an external URI, such as an http or https link, is being opened.\n\n```json\n\"activationEvents\": [\n    \"onOpenExternalUri\"\n]\n```\n\n## onNotebook\n\n`onNotebook:type` is emitted when the specified notebook document type is opened.\n\n```json\n\"activationEvents\": [\n    \"onNotebook:jupyter-notebook\",\n    \"onNotebook:interactive\"\n]\n```\n\n## onRenderer\n\n`onRenderer:id` is emitted when a notebook output renderer is used.\n\n```json\n\"activationEvents\": [\n    \"onRenderer:ms-toolsai.jupyter-renderers\"\n]\n```\n\n## onTerminal\n\n`onTerminal:shellType` is emitted when a specific terminal with the given shell type is opened.\n\n```json\n\"activationEvents\": [\n  \"onTerminal:bash\"\n]\n```\n\n## onTerminalProfile\n\n`onTerminalProfile:id` is emitted when a specific terminal profile is launched.\n\n```json\n\"activationEvents\": [\n    \"onTerminalProfile:terminalTest.terminal-profile\"\n]\n```\n\n## onTerminalShellIntegration\n\n`onTerminalShellIntegration:shellType` is emitted when a terminal with the given shell type has shell integration activated.\n\n```json\n\"activationEvents\": [\n    \"onTerminalShellIntegration:bash\"\n]\n```\n\n## onWalkthrough\n\n`onWalkthrough:id` is emitted when a specified walkthrough is opened.\n\n```json\n\"activationEvents\": [\n    \"onWalkthrough:nodejsWelcome\"\n]\n```\n\n## onIssueReporterOpened\n\nThis activation event is emitted when the issue reporter is opened (for example, by using **Help: Report Issue**).\n\n```json\n\"activationEvents\": [\n    \"onIssueReporterOpened\"\n]\n```\n\n## onChatParticipant\n\nAn activation event emitted when the specified chat participant is invoked.\n\nChat participants are deprecated and are not supported in the Copilot harness. This event remains relevant for Local harness compatibility. See [Replace chat participants](/docs/agent-customization/migrate-customizations.md#replace-chat-participants).\n\n```json\n\"activationEvents\": [\n    \"onChatParticipant:my-chat-participant\"\n]\n```\n\n## onLanguageModelTool\n\nAn activation event emitted when the specified language model tool is invoked.\n\n```json\n\"activationEvents\": [\n    \"onLanguageModelTool:my-language-model-tool\"\n]\n```\n\n## Start up\n\nThe `*` activation event is emitted and interested extensions will be activated whenever VS Code starts up.\n\n> **Note:** To ensure a great user experience, please use this activation event in your extension only when no other activation events combination works in your use-case.\n\n```json\n\"activationEvents\": [\n    \"*\"\n]\n```\n\n> **Note:** An extension can listen to multiple activation events, and that is preferable to listening to `\"*\"`.\n\n> **Note:** An extension **must** export an `activate()` function from its main module and it will be invoked **only once** by VS Code when any of the specified activation events is emitted. Also, an extension **should** export a `deactivate()` function from its main module to perform cleanup tasks on VS Code shutdown. Extension **must** return a Promise from `deactivate()` if the cleanup process is asynchronous. An extension may return `undefined` from `deactivate()` if the cleanup runs synchronously.\n\n<!-- File: api/references/commands.md (Tokens: ~5150 | Category: anthropic-skill) -->\n---\n# DO NOT TOUCH — Managed by doc writer\nContentId: A010AEDF-EF37-406E-96F5-E129408FFDE1\nDateApproved: 10/21/2026\n\n# Summarize the whole topic in less than 300 characters for SEO purpose\nMetaDescription: Visual Studio Code built-in commands reference.\n---\n\n# Built-in Commands\n\nThis document lists a subset of Visual Studio Code commands that you might use with `vscode.commands.executeCommand` API.\n\nRead the [Commands guide](/api/extension-guides/command) for how to use the commands API.\n\nThe following is a sample of how to open a new folder in VS Code:\n\n```javascript\nlet uri = Uri.file('/some/path/to/folder');\nlet success = await commands.executeCommand('vscode.openFolder', uri);\n```\n\n>**Note**: You can review the full set of VS Code commands via the Keyboard Shortcuts editor **File** > **Preferences** > **Keyboard Shortcuts**. The Keyboard Shortcuts editor lists all commands built into VS Code or contributed by extensions, along with their keybindings and visibility when clauses.\n\n## Commands\n\n`vscode.executeDataToNotebook` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _data_ - Bytes to convert to data\n* _(returns)_ - Notebook Data\n\n`vscode.executeNotebookToData` - Invoke notebook serializer\n\n* _notebookType_ - A notebook type\n* _NotebookData_ - Notebook data to convert to bytes\n* _(returns)_ - Bytes\n\n`notebook.selectKernel` - Trigger kernel picker for specified notebook editor widget\n\n* _options_ - Select kernel options\n* _(returns)_ - no result\n\n`interactive.open` - Open interactive window and return notebook editor and input URI\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Interactive editor title\n* _(returns)_ - Notebook and input URI\n\n`vscode.editorChat.start` - Invoke a new editor chat session\n\n* _Run arguments_ -\n* _(returns)_ - no result\n\n`vscode.executeDocumentHighlights` - Execute document highlight provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of DocumentHighlight-instances.\n\n`vscode.executeDocumentSymbolProvider` - Execute document symbol provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of SymbolInformation and DocumentSymbol instances.\n\n`vscode.executeFormatDocumentProvider` - Execute document format provider.\n\n* _uri_ - Uri of a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatRangeProvider` - Execute range format provider.\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeFormatOnTypeProvider` - Execute format on type provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _ch_ - Trigger character\n* _options_ - Formatting options\n* _(returns)_ - A promise that resolves to an array of TextEdits.\n\n`vscode.executeDefinitionProvider` - Execute all definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeTypeDefinitionProvider` - Execute all type definition providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeDeclarationProvider` - Execute all declaration providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeImplementationProvider` - Execute all implementation providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location or LocationLink instances.\n\n`vscode.executeReferenceProvider` - Execute all reference providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Location-instances.\n\n`vscode.executeHoverProvider` - Execute all hover providers.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of Hover-instances.\n\n`vscode.executeSelectionRangeProvider` - Execute selection range provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of ranges.\n\n`vscode.executeWorkspaceSymbolProvider` - Execute all workspace symbol providers.\n\n* _query_ - Search string\n* _(returns)_ - A promise that resolves to an array of SymbolInformation-instances.\n\n`vscode.prepareCallHierarchy` - Prepare call hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of CallHierarchyItem-instances\n\n`vscode.provideIncomingCalls` - Compute incoming calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyIncomingCall-instances\n\n`vscode.provideOutgoingCalls` - Compute outgoing calls for an item\n\n* _item_ - A call hierarchy item\n* _(returns)_ - A promise that resolves to an array of CallHierarchyOutgoingCall-instances\n\n`vscode.prepareRename` - Execute the prepareRename of rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to a range and placeholder text.\n\n`vscode.executeDocumentRenameProvider` - Execute rename provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _newName_ - The new symbol name\n* _(returns)_ - A promise that resolves to a WorkspaceEdit.\n\n`vscode.executeLinkProvider` - Execute document link provider.\n\n* _uri_ - Uri of a text document\n* _linkResolveCount_ - (optional) Number of links that should be resolved, only when links are unresolved.\n* _(returns)_ - A promise that resolves to an array of DocumentLink-instances.\n\n`vscode.provideDocumentSemanticTokensLegend` - Provide semantic tokens legend for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentSemanticTokens` - Provide semantic tokens for a document\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.provideDocumentRangeSemanticTokensLegend` - Provide semantic tokens legend for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - (optional) A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokensLegend.\n\n`vscode.provideDocumentRangeSemanticTokens` - Provide semantic tokens for a document range\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to SemanticTokens.\n\n`vscode.executeCompletionItemProvider` - Execute completion item provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger completion when the user types the character, like `,` or `(`\n* _itemResolveCount_ - (optional) Number of completions to resolve (too large numbers slow down completions)\n* _(returns)_ - A promise that resolves to a CompletionList-instance.\n\n`vscode.executeSignatureHelpProvider` - Execute signature help provider.\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _triggerCharacter_ - (optional) Trigger signature help when the user types the character, like `,` or `(`\n* _(returns)_ - A promise that resolves to SignatureHelp.\n\n`vscode.executeCodeLensProvider` - Execute code lens provider.\n\n* _uri_ - Uri of a text document\n* _itemResolveCount_ - (optional) Number of lenses that should be resolved and returned. Will only return resolved lenses, will impact performance\n* _(returns)_ - A promise that resolves to an array of CodeLens-instances.\n\n`vscode.executeCodeActionProvider` - Execute code action provider.\n\n* _uri_ - Uri of a text document\n* _rangeOrSelection_ - Range in a text document. Some refactoring provider requires Selection object.\n* _kind_ - (optional) Code action kind to return code actions for\n* _itemResolveCount_ - (optional) Number of code actions to resolve (too large numbers slow down code actions)\n* _(returns)_ - A promise that resolves to an array of Command-instances.\n\n`vscode.executeDocumentColorProvider` - Execute document color provider.\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of ColorInformation objects.\n\n`vscode.executeColorPresentationProvider` - Execute color presentation provider.\n\n* _color_ - The color to show and insert\n* _context_ - Context object with uri and range\n* _(returns)_ - A promise that resolves to an array of ColorPresentation objects.\n\n`vscode.executeInlayHintProvider` - Execute inlay hints provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _(returns)_ - A promise that resolves to an array of Inlay objects\n\n`vscode.executeFoldingRangeProvider` - Execute folding range provider\n\n* _uri_ - Uri of a text document\n* _(returns)_ - A promise that resolves to an array of FoldingRange objects\n\n`vscode.resolveNotebookContentProviders` - Resolve Notebook Content Providers\n\n* _(returns)_ - A promise that resolves to an array of NotebookContentProvider static info objects.\n\n`vscode.executeInlineValueProvider` - Execute inline value provider\n\n* _uri_ - Uri of a text document\n* _range_ - A range in a text document\n* _context_ - An InlineValueContext\n* _(returns)_ - A promise that resolves to an array of InlineValue objects\n\n`vscode.open` - Opens the provided resource in the editor. Can be a text or binary file, or an http(s) URL. If you need more control over the options for opening a text file, use `vscode.window.showTextDocument` instead.\n\n* _uri_ - Uri of a text or binary file, or an http(s) URL\n* _columnOrOptions_ - (optional) Either the column in which to open, or editor options, see `vscode.TextDocumentShowOptions`\n* _label_ - Editor label (optional)\n* _(returns)_ - no result\n\n`vscode.openWith` - Opens the provided resource with a specific editor.\n\n* _resource_ - Resource to open\n* _viewId_ - Custom editor view id or 'default' to use VS Code's default editor\n* _columnOrOptions_ - (optional) Either the column in which to open or editor options, see vscode.TextDocumentShowOptions\n* _(returns)_ - no result\n\n`vscode.diff` - Opens the provided resources in the diff editor to compare their contents.\n\n* _left_ - Left-hand side resource of the diff editor\n* _right_ - Right-hand side resource of the diff editor\n* _title_ - Human readable title for the diff editor\n* _options_ - (optional) Either the column in which to open, or editor options (see vscode.TextDocumentShowOptions)\n\n`vscode.changes` - Opens a list of resources in the changes editor to compare their contents.\n\n* _title_ - Human readable title for the changes editor\n* _resourceList_ - List of resources to compare\n\n`vscode.prepareTypeHierarchy` - Prepare type hierarchy at a position inside a document\n\n* _uri_ - Uri of a text document\n* _position_ - A position in a text document\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSupertypes` - Compute supertypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.provideSubtypes` - Compute subtypes for an item\n\n* _item_ - A type hierarchy item\n* _(returns)_ - A promise that resolves to an array of TypeHierarchyItem-instances\n\n`vscode.revealTestInExplorer` - Reveals a test instance in the explorer\n\n* _testItem_ - A VS Code TestItem.\n* _(returns)_ - no result\n\n`setContext` - Set a custom context key value that can be used in when clauses.\n\n* _name_ - The context key name\n* _value_ - The context key value\n* _(returns)_ - no result\n\n`cursorMove` - Move cursor to a logical position in the view\n\n* _Cursor move argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory logical position value providing where to move the cursor.\n    ```\n    'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n    'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n    'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n    'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'character', 'halfLine'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'select': If 'true' makes the selection. Default is 'false'.\n\n`editorScroll` - Scroll editor in the given direction\n\n* _Editor scroll argument object_ - Property-value pairs that can be passed through this argument:\n  * 'to': A mandatory direction value.\n    ```\n    'up', 'down'\n    ```\n  * 'by': Unit to move. Default is computed based on 'to' value.\n    ```\n    'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n    ```\n  * 'value': Number of units to move. Default is '1'.\n  * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\n`revealLine` - Reveal the given line at the given logical position\n\n* _Reveal line argument object_ - Property-value pairs that can be passed through this argument:\n  * 'lineNumber': A mandatory line number value.\n  * 'at': Logical position at which line has to be revealed.\n    ```\n    'top', 'center', 'bottom'\n    ```\n\n`editor.unfold` - Unfold the content in the editor\n\n* _Unfold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to unfold. If not set, defaults to 1.\n  * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not\n  set, the active selection(s) will be used.\n\n`editor.fold` - Fold the content in the editor\n\n* _Fold editor argument_ - Property-value pairs that can be passed through this argument:\n  * 'levels': Number of levels to fold.\n  * 'direction': If 'up', folds given number of levels up otherwise folds down.\n  * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n  If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\n`editor.toggleFold` - Folds or unfolds the content in the editor depending on its current state\n\n`editor.actions.findWithArgs` - Open a new In-Editor Find Widget with specific options.\n\n* searchString - String to prefill the find input\n* replaceString - String to prefill the replace input\n* isRegex - enable regex\n* preserveCase - try to keep the same case when replacing\n* findInSelection - restrict the find location to the current selection\n* matchWholeWord\n* isCaseSensitive\n\n`editor.action.goToLocations` - Go to locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n* _noResultsMessage_ - Human readable message that shows when locations is empty.\n\n`editor.action.peekLocations` - Peek locations from a position in a file\n\n* _uri_ - The text document in which to start\n* _position_ - The position at which to start\n* _locations_ - An array of locations.\n* _multiple_ - Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\n\n`workbench.action.quickOpen` - Quick access\n\n* _prefix_ -\n\n`notebook.cell.toggleOutputs` - Toggle Outputs\n\n* _options_ - The cell range options\n\n`notebook.fold` - Fold Cell\n\n* _index_ - The cell index\n\n`notebook.unfold` - Unfold Cell\n\n* _index_ - The cell index\n\n`notebook.selectKernel` - Notebook Kernel Args\n\n* _kernelInfo_ - The kernel info\n\n`notebook.cell.changeLanguage` - Change Cell Language\n\n* _range_ - The cell range\n* _language_ - The target cell language\n\n`notebook.execute` - Run All\n\n* _uri_ - The document uri\n\n`notebook.cell.execute` - Execute Cell\n\n* _options_ - The cell range options\n\n`notebook.cell.executeAndFocusContainer` - Execute Cell and Focus Container\n\n* _options_ - The cell range options\n\n`notebook.cell.cancelExecution` - Stop Cell Execution\n\n* _options_ - The cell range options\n\n`workbench.action.findInFiles` - Open a workspace search\n\n* _A set of options for the search_ -\n\n`_interactive.open` - Open Interactive Window\n\n* _showOptions_ - Show Options\n* _resource_ - Interactive resource Uri\n* _controllerId_ - Notebook controller Id\n* _title_ - Notebook editor title\n\n`interactive.execute` - Execute the Contents of the Input Box\n\n* _resource_ - Interactive resource Uri\n\n`search.action.openNewEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openEditor` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`search.action.openNewEditorToSide` - Open a new search editor. Arguments passed can include variables like ${relativeFileDirname}.\n\n* _Open new Search Editor args_ -\n\n`vscode.openFolder` - Open a folder or workspace in the current window or new window depending on the newWindow argument. Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder/workspace unless the newWindow parameter is set to true.\n\n* _uri_ - (optional) Uri of the folder or workspace file to open. If not provided, a native dialog will ask the user for the folder\n* _options_ - (optional) Options. Object with the following properties: `forceNewWindow`: Whether to open the folder/workspace in a new window or the same. Defaults to opening in the same window. `forceReuseWindow`: Whether to force opening the folder/workspace in the same window.  Defaults to false. `noRecentEntry`: Whether the opened URI will appear in the 'Open Recent' list. Defaults to false. Note, for backward compatibility, options can also be of type boolean, representing the `forceNewWindow` setting.\n\n`vscode.newWindow` - Opens an new window depending on the newWindow argument.\n\n* _options_ - (optional) Options. Object with the following properties: `reuseWindow`: Whether to open a new window or the same. Defaults to opening in a new window.\n\n`vscode.removeFromRecentlyOpened` - Removes an entry with the given path from the recently opened list.\n\n* _path_ - URI or URI string to remove from recently opened.\n\n`moveActiveEditor` - Move the active editor by tabs or groups\n\n* _Active editor move argument_ - Argument Properties:\n  * 'to': String value providing where to move.\n  * 'by': String value providing the unit for move (by tab or by group).\n  * 'value': Number value providing how many positions or an absolute position to move.\n\n`copyActiveEditor` - Copy the active editor by groups\n\n* _Active editor copy argument_ - Argument Properties:\n  * 'to': String value providing where to copy.\n  * 'value': Number value providing how many positions or an absolute position to copy.\n\n`vscode.getEditorLayout` - Get Editor Layout\n\n* _(returns)_ - An editor layout object, in the same format as vscode.setEditorLayout\n\n`workbench.action.files.newUntitledFile` - New Untitled Text File\n\n* _New Untitled Text File arguments_ - The editor view type or language ID if known\n\n`workbench.extensions.installExtension` - Install the given extension\n\n* _extensionIdOrVSIXUri_ - Extension id or VSIX resource uri\n* _options_ - (optional) Options for installing the extension. Object with the following properties: `installOnlyNewlyAddedFromExtensionPackVSIX`: When enabled, VS Code installs only newly added extensions from the extension pack VSIX. This option is considered only when installing VSIX.\n\n`workbench.extensions.uninstallExtension` - Uninstall the given extension\n\n* _Id of the extension to uninstall_ -\n\n`workbench.extensions.search` - Search for a specific extension\n\n* _Query to use in search_ -\n\n`workbench.action.tasks.runTask` - Run Task\n\n* _args_ - Filters the tasks shown in the Quick Pick\n\n`workbench.action.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`vscode.openIssueReporter` - Open the issue reporter and optionally prefill part of the form.\n\n* _options_ - Data to use to prefill the issue reporter with.\n\n`workbench.action.openLogFile` - workbench.action.openLogFile\n\n* _logFile_ -\n\n`workbench.action.openWalkthrough` - Open the walkthrough.\n\n* _walkthroughID_ - ID of the walkthrough to open.\n* _toSide_ - Opens the walkthrough in a new editor group to the side.\n\n## Simple commands\n\nSimple commands that do not require parameters can be found in the Keyboard Shortcuts list in the default `keybindings.json` file. The unbound commands are listed in a comment block at the bottom of the file.\n\nTo review the default `keybindings.json`, run **Preferences: Open Default Keyboard Shortcuts (JSON)** from the Command Palette (`kb(workbench.action.showCommands)`).\n\n<!-- File: api/references/contribution-points.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/contribution-points.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/contribution-points.md)\n\n<!-- File: api/references/document-selector.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/document-selector.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/document-selector.md)\n\n<!-- File: api/references/extension-manifest.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/extension-manifest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/extension-manifest.md)\n\n<!-- File: api/references/icons-in-labels.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/icons-in-labels.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/icons-in-labels.md)\n\n<!-- File: api/references/theme-color.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/theme-color.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/theme-color.md)\n\n<!-- File: api/references/when-clause-contexts.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `api/references/when-clause-contexts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/api/references/when-clause-contexts.md)\n\n<!-- File: docs/configure/extensions/extension-marketplace.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Extensions Skill\n\nPath: `docs/configure/extensions/extension-marketplace.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-marketplace.md)\n\n<!-- File: docs/configure/extensions/extension-runtime-security.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Extensions Skill\n\nPath: `docs/configure/extensions/extension-runtime-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extension-runtime-security.md)\n\n<!-- File: docs/configure/extensions/extensions.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Extensions Skill\n\nPath: `docs/configure/extensions/extensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/docs/configure/extensions/extensions.md)\n\n<!-- File: .github/copilot-instructions.md (Tokens: ~26 | Category: copilot-instructions) -->\n# VS Code Docs Writing Guidelines\n\nFollow the [documentation writing guidelines](instructions/docs-writing.instructions.md) when reviewing or writing documentation.\n\n<!-- File: blogs/2025/03/.github/copilot-instructions.md (Tokens: ~300 | Category: copilot-instructions) -->\n# GitHub Copilot Instructions\n\nPath: `blogs/2025/03/.github/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/blogs/2025/03/.github/copilot-instructions.md)\n\n<!-- File: .vscode/extensions/doc-assistant/README.md (Tokens: ~300 | Category: plugin-manifest) -->\n# doc-assistant Documentation\n\nPath: `.vscode/extensions/doc-assistant/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/microsoft/vscode-docs/HEAD/.vscode/extensions/doc-assistant/README.md)\n\n<!-- ... +56 more modular skills available via /api/skills/microsoft/vscode-docs?path={path} -->\n</yakaai_skills>"}