PR Technical Accuracy Review
Review 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.
This 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.
When to Use
- Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.
- Auditing existing docs for drift after a feature has changed.
- Asked to "fact-check", "verify", or "validate" a docs change against the product.
- Before merging a PR that touches
docs/, api/, remote/, or release-notes content tied to a specific behavior.
Do not use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.
Repos to Check
| Area being documented |
Primary source repo(s) |
| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings |
microsoft/vscode |
| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat |
microsoft/vscode-copilot-chat |
Extension API, contribution points, package.json schema |
microsoft/vscode (under src/vs/workbench/api/, src/vscode-dts/, and extensions/) |
| Enterprise policies |
microsoft/vscode (policy definitions) — note that enterprise/policies.md is generated; verify against source, not the generated file |
Use the gh CLI for all GitHub interactions (see user memory gh-cli-powershell.md for PowerShell-specific patterns).
Procedure
1. Identify the PR and its diff
- 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.
- 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.
- Get the actual changed lines with
gh pr diff <number> (or git diff for a branch).
- Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).
2. Extract verifiable claims
Walk 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:
| Category |
Examples |
| Setting |
editor.fontSize, chat.agent.enabled, default values, allowed enum values, deprecation status |
| Command |
Command IDs (workbench.action.*), command palette titles, the action they perform |
| Keybinding |
Default key bindings, when clauses, platform-specific overrides |
| Menu / UI label |
Menu item text, button labels, view titles, walkthrough step titles |
| API |
Names, signatures, and shapes in vscode.d.ts / vscode.proposed.*.d.ts |
| Contribution point |
package.json schema entries (contributes.*), required fields |
| Chat tool / participant |
Tool names, participant IDs, tool input/output schemas, agent mode availability |
| MCP |
Server config schema, supported transports, capability flags |
| Version availability |
"Available since 1.X" / "New in 1.X" claims |
| Default behavior |
What happens out-of-the-box, what is on/off by default |
| Policy |
Policy names, supported values, scope |
Treat anchor-style references (e.g., setting(chat.agent.enabled), command:workbench.action.X) as claims to verify.
3. Verify each claim
For 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.
Search the source repos (parallelize independent lookups):
gh search code --repo microsoft/vscode '"<exact-string>"' for setting IDs, command IDs, contribution keys.
gh search code --repo microsoft/vscode-copilot-chat '"<exact-string>"' for chat tool names, participant IDs, agent-mode flags.
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).
gh api repos/microsoft/vscode/contents/<path>?ref=main to read a specific file.
Where things live (common starting points):
- Settings — search for
'<setting.id>' near registerConfiguration calls; default values are in the default: field of the schema.
- Commands — search for
CommandsRegistry.registerCommand or registerAction2 with the matching id.
- Keybindings — search for
KeybindingsRegistry.registerKeybindingRule or look in src/vs/workbench/browser/parts/editor/... and feature folders.
- Extension API —
src/vscode-dts/vscode.d.ts (stable) and src/vscode-dts/vscode.proposed.*.d.ts (proposed).
- Chat tools — search
microsoft/vscode-copilot-chat for displayName, toolReferenceName, or the tool ID string.
- Contribution points —
extensions/<ext>/package.json and the schema in src/vs/workbench/api/common/extHost*.ts.
Version availability — when a doc claims "since 1.X":
gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X to see if the symbol existed in that branch, or
gh search commits --repo microsoft/vscode '<symbol>' to find when it was introduced.
If 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.
4. Categorize each finding
| Severity |
Use when |
| Error |
The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |
| 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). |
| Suggestion |
Optional clarification — link to the source, add a "since 1.X" note, mention a related setting. |
| Unverified |
Could not locate the source of truth; ask the author to confirm. |
5. Produce the findings list
Output a Markdown report with this structure:
## PR Accuracy Review: #<number> — <title>
**Files reviewed:** <count>
**Claims checked:** <count>
**Result:** <Pass | Pass with warnings | Needs changes>
### Errors
* **`<file>`:L<line>** (`<category>`) — <one-line description>
* Doc says: `<quoted text>`
* Source: `<repo>/<path>#L<line>` — <what the source actually says>
* Fix: <specific suggested correction>
### Warnings
* ...
### Suggestions
* ...
### Unverified
* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.
Rules for the report:
- Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the
fileLinkification rules.
- 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>.
- Quote the doc text exactly so the author can search for it.
- Keep each finding to one issue — split combined problems into separate items.
- If everything checks out, say so explicitly and skip the empty sections.
6. Summary
End with:
- Counts by severity.
- An overall verdict: Pass, Pass with warnings, or Needs changes (any Errors → Needs changes).
- A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.
Notes
- 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.
- Do not edit
enterprise/policies.md — it is generated; flag policy issues against enterprise/policies-template.md and the source policy definitions instead.
- 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.
- 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.
1---2name: pr-review-23description: 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.4---56# PR Technical Accuracy Review78Review 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.910This 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.1112## When to Use1314* Reviewing a vscode-docs PR that documents a new or updated VS Code or Copilot feature.15* Auditing existing docs for drift after a feature has changed.16* Asked to "fact-check", "verify", or "validate" a docs change against the product.17* Before merging a PR that touches `docs/`, `api/`, `remote/`, or release-notes content tied to a specific behavior.1819Do **not** use this skill for pure copy-edits, redirects, image swaps, or other changes that make no factual claims.2021## Repos to Check2223| Area being documented | Primary source repo(s) |24|----------------------|------------------------|25| Core editor, workbench, debug, terminal, tasks, settings, commands, keybindings | `microsoft/vscode` |26| Copilot Chat, inline chat, agent mode, chat tools, chat participants, MCP integration in chat | `microsoft/vscode-copilot-chat` |27| Extension API, contribution points, `package.json` schema | `microsoft/vscode` (under `src/vs/workbench/api/`, `src/vscode-dts/`, and `extensions/`) |28| Enterprise policies | `microsoft/vscode` (policy definitions) — note that `enterprise/policies.md` is generated; verify against source, not the generated file |2930Use the `gh` CLI for all GitHub interactions (see user memory `gh-cli-powershell.md` for PowerShell-specific patterns).3132## Procedure3334### 1. Identify the PR and its diff3536* 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.37* 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`.38* Get the actual changed lines with `gh pr diff <number>` (or `git diff` for a branch).39* Skip files whose changes are purely cosmetic (typo fixes, image renames, redirect entries, frontmatter-only edits).4041### 2. Extract verifiable claims4243Walk 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:4445| Category | Examples |46|----------|----------|47| **Setting** | `editor.fontSize`, `chat.agent.enabled`, default values, allowed enum values, deprecation status |48| **Command** | Command IDs (`workbench.action.*`), command palette titles, the action they perform |49| **Keybinding** | Default key bindings, `when` clauses, platform-specific overrides |50| **Menu / UI label** | Menu item text, button labels, view titles, walkthrough step titles |51| **API** | Names, signatures, and shapes in `vscode.d.ts` / `vscode.proposed.*.d.ts` |52| **Contribution point** | `package.json` schema entries (`contributes.*`), required fields |53| **Chat tool / participant** | Tool names, participant IDs, tool input/output schemas, agent mode availability |54| **MCP** | Server config schema, supported transports, capability flags |55| **Version availability** | "Available since 1.X" / "New in 1.X" claims |56| **Default behavior** | What happens out-of-the-box, what is on/off by default |57| **Policy** | Policy names, supported values, scope |5859Treat anchor-style references (e.g., `setting(chat.agent.enabled)`, `command:workbench.action.X`) as claims to verify.6061### 3. Verify each claim6263For 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.6465**Search the source repos** (parallelize independent lookups):6667* `gh search code --repo microsoft/vscode '"<exact-string>"'` for setting IDs, command IDs, contribution keys.68* `gh search code --repo microsoft/vscode-copilot-chat '"<exact-string>"'` for chat tool names, participant IDs, agent-mode flags.69* `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`).70* `gh api repos/microsoft/vscode/contents/<path>?ref=main` to read a specific file.7172**Where things live (common starting points):**7374* Settings — search for `'<setting.id>'` near `registerConfiguration` calls; default values are in the `default:` field of the schema.75* Commands — search for `CommandsRegistry.registerCommand` or `registerAction2` with the matching `id`.76* Keybindings — search for `KeybindingsRegistry.registerKeybindingRule` or look in `src/vs/workbench/browser/parts/editor/...` and feature folders.77* Extension API — `src/vscode-dts/vscode.d.ts` (stable) and `src/vscode-dts/vscode.proposed.*.d.ts` (proposed).78* Chat tools — search `microsoft/vscode-copilot-chat` for `displayName`, `toolReferenceName`, or the tool ID string.79* Contribution points — `extensions/<ext>/package.json` and the schema in `src/vs/workbench/api/common/extHost*.ts`.8081**Version availability** — when a doc claims "since 1.X":8283* `gh api repos/microsoft/vscode/contents/<file>?ref=release/1.X` to see if the symbol existed in that branch, or84* `gh search commits --repo microsoft/vscode '<symbol>'` to find when it was introduced.8586If 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.8788### 4. Categorize each finding8990| Severity | Use when |91|----------|----------|92| **Error** | The doc contradicts the source code (wrong setting name, wrong default, wrong command ID, removed API, wrong key binding). |93| **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). |94| **Suggestion** | Optional clarification — link to the source, add a "since 1.X" note, mention a related setting. |95| **Unverified** | Could not locate the source of truth; ask the author to confirm. |9697### 5. Produce the findings list9899Output a Markdown report with this structure:100101```markdown102## PR Accuracy Review: #<number> — <title>103104**Files reviewed:** <count>105**Claims checked:** <count>106**Result:** <Pass | Pass with warnings | Needs changes>107108### Errors109110* **`<file>`:L<line>** (`<category>`) — <one-line description>111 * Doc says: `<quoted text>`112 * Source: `<repo>/<path>#L<line>` — <what the source actually says>113 * Fix: <specific suggested correction>114115### Warnings116117* ...118119### Suggestions120121* ...122123### Unverified124125* **`<file>`:L<line>** — <claim>. Searched <queries tried>. Please confirm.126```127128Rules for the report:129130* Use workspace-relative paths and 1-based line numbers for vscode-docs files, formatted as Markdown links per the `fileLinkification` rules.131* 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>`.132* Quote the doc text exactly so the author can search for it.133* Keep each finding to one issue — split combined problems into separate items.134* If everything checks out, say so explicitly and skip the empty sections.135136### 6. Summary137138End with:139140* Counts by severity.141* An overall verdict: **Pass**, **Pass with warnings**, or **Needs changes** (any Errors → Needs changes).142* A reminder that this review covers technical accuracy only, and to run style/frontmatter skills separately if needed.143144## Notes145146* 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.147* Do **not** edit `enterprise/policies.md` — it is generated; flag policy issues against `enterprise/policies-template.md` and the source policy definitions instead.148* 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.149* 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.