pr-review

$npx mdskill add microsoft/vscode-docs/pr-review

Verify VS Code documentation facts against source code.

  • Detects mismatches in settings, commands, and API shapes.
  • Queries microsoft/vscode and microsoft/vscode-copilot-chat repositories.
  • Generates actionable findings for factual corrections.
  • Outputs a clear list of errors for the PR author.
SKILL.md
.github/skills/pr-reviewView on GitHub ↗
---
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)'
---

# 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:

```markdown
## 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.
More from microsoft/vscode-docs