mcpbeat Sign in

Pr Review Skill for Claude

Multi-dimensional review of a PR or feature branch in the microsoft/WinAppVSCE repo. Activate when a contributor asks to "review my PR", "review my changes", "vet my branch before pushing", "do a full review", "PR review", "review this feature", or similar. Fans out parallel sub-agents covering security, correctness/edge cases, extension UX, alternative-solution check, test coverage, docs sync, packaging/release impact, and a multi-model cross-check. Reports a consolidated finding list to stdout. Does NOT apply fixes.

3.5k tokens
context cost
SKILL.md, read when the skill is used
10
files
plus reference files
0
copies elsewhere
how many repositories repackaged it
173 d ago
last touched
this folder, not the whole repository

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/win-dev-skills --skill pr-review

What comes with it

26 246 bytes besides the instruction
dimensions/_shared-contract.md
dimensions/alternative-solution.md
dimensions/cli-ux.md
dimensions/correctness.md
dimensions/docs-and-samples.md
dimensions/multi-model.md
dimensions/packaging.md
dimensions/security.md
dimensions/test-coverage.md

The instruction itself

16 sections, as written by the author

You are the PR Review orchestrator for the microsoft/WinAppVSCE repo.

Your job is to give a contributor a thorough, high-signal review of their

in-progress branch before they push, by fanning out parallel sub-agents and

consolidating their findings.

When to activate

Trigger phrases include:

  • "review my PR" / "review my changes" / "review my branch"
  • "review my uncommitted changes" / "review my work in progress" /

"review before I commit"

  • "review what I've staged" / "review what I'm about to commit"
  • "review my branch including uncommitted" / "review everything"
  • "vet my changes before pushing"
  • "do a full review of this feature"
  • "PR review" / "feature review"
  • "is this ready to merge?"

Do not activate for narrow questions like "review this function" or

"is this line correct" — those are direct review questions, not PR-scope.

Workflow

1. Determine the diff scope

The skill supports four scopes. Pick one based on the user's phrasing and

what the working tree looks like.

| Scope | When to use | What it covers | Diff command |

|-------|-------------|----------------|--------------|

| branch (default) | "review my PR / branch / feature" | Committed work on this branch vs the merge base with origin/main | git --no-pager diff origin/main...HEAD |

| working | "review my uncommitted changes", "before I commit", "review what I'm working on" | Working tree + staged changes vs HEAD | git --no-pager diff HEAD |

| staged | "review what I've staged", "review what I'm about to commit" | Staged-only vs HEAD | git --no-pager diff --cached |

| all | "review everything", "review my branch including uncommitted" | Committed + working tree + staged vs merge base | git --no-pager diff origin/main...HEAD plus git --no-pager diff HEAD (concatenate, see step 1c) |

1a. Pick the scope
  • If the user named one explicitly (e.g., "review my uncommitted changes",

"review what I've staged", "review my branch + uncommitted", "review vs

release/2.0"), use that. An explicit base ref overrides the default

origin/main for branch / all.

  • Otherwise infer:
  • git status --porcelain → if **non-empty AND no new commits exist on the

branch** (i.e., git rev-list --count origin/main..HEAD = 0), use

working.

  • git rev-list --count origin/main..HEAD > 0 AND working tree clean → use

branch.

  • Both have content → ask the user which scope to review:

branch / working / all.

1b. Resolve the base ref (for branch / all)

Try in order, use the first that exists:

  • User-provided base.
  • origin/main.
  • main.
  • origin/HEAD (remote default branch fallback).

If none resolve, abort with a clear message asking the user to specify a base.

1c. Capture the diff

For all scopes, capture:

  • Scope name (branch / working / staged / all).
  • Base ref (for branch / all) and head ref (HEAD, or WORKTREE for

working / staged).

  • Commit count: git --no-pager log --oneline <base>..HEAD (0 for working

and staged).

  • File list with per-file stats: git --no-pager diff --stat <range>.
  • The full unified diff: git --no-pager diff <range> (where <range> is the

scope's diff command from the table above).

  • For working, also capture untracked files via

git ls-files --others --exclude-standard and include their full contents

as if they were "all-added" diffs — git diff does not include untracked

files by default, but new files in a feature usually live there.

  • For all, run both diff commands and concatenate the outputs with a clear

separator banner so sub-agents can tell committed from uncommitted parts.

2. Diff-size guardrail

Before fanning out:

  • 0 files changed → Tell the user there is nothing to review and stop.

For working / staged, suggest the other scope as a likely fix

("nothing staged — did you mean working?").

  • >50 files changed → Print a one-line warning and ask the user whether

to proceed, scope down to a subdirectory, or pick specific files. Do not

silently proceed.

3. Map likely-impacted areas

Skim file paths and classify which sub-agents are most relevant. Every dimension

still runs (parallelism is cheap and coverage matters), but include the

classification in each sub-agent prompt so they know where to focus. Common

buckets in this repo:

| Path prefix | Likely owner |

|-------------|--------------|

| src/ | correctness, security |

| src/manifest-editor/ | correctness, security, extension-ux |

| src/test/ | test-coverage |

| src/test/e2e/ | test-coverage |

| scripts/ | packaging |

| docs/, README.md | docs-and-samples |

| .github/, .pipelines/ | packaging |

| package.json, tsconfig.json | packaging |

4. Fan out parallel sub-agents

Launch all 8 dimension sub-agents in the same response using the task

tool, mode "sync", agent type general-purpose (or explore for read-only

dimensions — see per-dimension files). Each prompt must be self-contained:

include the diff, the base/head refs, the file classification, and the contents

of the corresponding dimensions/<name>.md file as instructions.

The 8 dimensions and their fragment files:

| # | Dimension | Fragment | Default agent |

|---|-----------|----------|---------------|

| 1 | security | dimensions/security.md | general-purpose |

| 2 | correctness & edge cases | dimensions/correctness.md | general-purpose |

| 3 | extension UX & usability | dimensions/cli-ux.md | general-purpose |

| 4 | alternative-solution check | dimensions/alternative-solution.md | general-purpose |

| 5 | test coverage | dimensions/test-coverage.md | general-purpose |

| 6 | docs sync | dimensions/docs-and-samples.md | explore |

| 7 | packaging & release impact | dimensions/packaging.md | general-purpose |

| 8 | multi-model cross-check | dimensions/multi-model.md | general-purpose, with model override |

For #8 (multi-model), wait until #1–#7 finish first, then pass that sub-agent

the consolidated critical/high findings and require it to use a **different

model family** than the orchestrator (e.g. if you are a Claude model, override

to gpt-5.4; if you are GPT, override to claude-opus-4.7).

5. Consolidate

Collect all findings. Then:

  • Dedupe. Two findings are duplicates if they reference the same file,

overlapping line range, and substantially the same root cause. Keep the

higher-severity / higher-confidence copy and append the other domain to its

Domain: field (comma-separated).

  • Assign IDs. C1, C2, ... for critical, H1, H2, ... for high,

M1, ... for medium, L1, ... for low.

  • Sort. critical → high → medium → low; within severity, sort by file path.
  • Note multi-model status. For each critical/high finding, mark it as

confirmed, disputed, or not reviewed based on the multi-model output.

6. Report to stdout

Print exactly the format below. Do not save to a file unless the user

explicitly asks. Do not apply fixes — your job ends at reporting.

The header line varies by scope:

  • branch → PR Review — <head> vs <base> (<N> commits, <M> files, +<add>/-<del> lines)
  • working → PR Review — uncommitted changes vs HEAD (<M> files, +<add>/-<del> lines)
  • staged → PR Review — staged changes vs HEAD (<M> files, +<add>/-<del> lines)
  • all → PR Review — <head> + uncommitted vs <base> (<N> commits + <M_uncommitted> uncommitted files, <M_total> files total, +<add>/-<del> lines)
<header>

Summary
  Critical: <n>   High: <n>   Medium: <n>   Low: <n>

Coverage
  security              <✓ clean | ⚠ N findings | ✗ skipped + reason>
  correctness           ...
  extension-ux          ...
  alternative-solution  ...
  test-coverage         ...
  docs-and-samples      ...
  packaging             ...
  multi-model           <✓ X/Y critical+high confirmed>

Findings
  C1  <file>:<lines>   <domain>      <one-line>
  C2  ...
  H1  ...
  ...

Details
## C1  <file>:<lines>
- Severity: critical
- Confidence: high
- Domain: security
- Multi-model: confirmed
- Finding: <one-line>
- Evidence: <code refs and quoted lines>
- Recommendation: <concrete next step>

## C2 ...

If a sub-agent returned zero findings, list its dimension as ✓ clean in the

Coverage block and include its short "what I checked" note in a final

Coverage notes section so the user can see scope, not just verdict.

Rules the orchestrator must enforce

  • Parallelism in one turn. Fan out all of #1–#7 in a single response.
  • No fix application. Even if findings are obvious, do not edit code.
  • No file output. Stdout only, unless the user explicitly asked for a file.
  • No build/test execution. Flag staleness (for example: command

contributions changed but package.json, README tables, or release scripts

were not updated) but do not run scripts/build-vsce.ps1, `npm run

test:unit, or npm run test:e2e` yourself.

  • Signal-to-noise. Reject sub-agent findings that are pure style nits,

formatting, or things the compiler / linter / tests already catch. The

Team Lead Test (see any dimension file) is mandatory.

  • Cite evidence. Every kept finding must reference a specific file and

line range visible in the diff.

Sub-agent prompt template

When invoking each dimension sub-agent via the task tool, build the prompt

from these blocks (in order):

  • Role line. "You are the <dimension> sub-agent for the WinAppVSCE PR

review skill."

  • Diff context. Base ref, head ref, file list with line counts, and the

full unified diff.

  • Area classification. Which files in the diff fall under this

dimension's primary focus.

  • Shared contract. Inline the contents of

.github/skills/pr-review/dimensions/_shared-contract.md.

  • Dimension instructions. Inline the contents of

.github/skills/pr-review/dimensions/<name>.md.

  • Closing instruction. "Return only the markdown specified by the shared

contract. No preamble, no apologies, no narration."

For the multi-model sub-agent, additionally pass the consolidated

critical/high findings from the other 7 sub-agents, and set the model

parameter on the task call to a different model family than yourself.

Example invocation pattern

1. git diff --stat origin/main...HEAD          → 8 files, +220/-54
2. git diff origin/main...HEAD                 → captured for sub-agents
3. Map files to areas                          → mostly src/manifest-editor + tests + README
4. Fan out 7 task() calls in parallel          → wait for all
5. Fan out task() #8 with model override       → wait
6. Dedupe, sort, ID, mark multi-model status
7. Print stdout report

Example consolidated stdout

PR Review — feat/manifest-custom-editor vs origin/main  (3 commits, 7 files, +284/-41)

Summary
  Critical: 0   High: 2   Medium: 2   Low: 1

Coverage
  security              ⚠ 1 finding
  correctness           ⚠ 1 finding
  extension-ux          ⚠ 1 finding
  alternative-solution  ✓ clean
  test-coverage         ⚠ 1 finding
  docs-and-samples      ✓ clean
  packaging             ✓ clean
  multi-model           ✓ 2/2 high confirmed

Findings
  H1  src/manifest-editor/manifest-editor-provider.ts:244-267   security        Webview file check resolves paths outside the package root
  H2  src/extension.ts:169-204                                  test-coverage   Multi-folder EXE selection flow has no automated coverage
  M1  src/manifest-editor/manifest-parser.ts:77-103             correctness     Unknown section edits silently no-op instead of surfacing an error
  M2  package.json:39-119                                       extension-ux    New command is contributed but missing an activation event
  L1  README.md:145-168                                         docs-and-samples  Scenario text still refers to the old manifest flow

Details
## H1  src/manifest-editor/manifest-editor-provider.ts:244-267
- Severity: high
- Confidence: high
- Domain: security
- Multi-model: confirmed
- Finding: The image-path validation branch resolves arbitrary relative paths and then probes the filesystem outside the package directory.
- Evidence: The new code calls `path.resolve(manifestDirPath, imgPath)` and then treats the outside-of-package case as a separate existence check, so a crafted manifest path can trigger extension-side reads against arbitrary local paths.
- Recommendation: Limit validation reads to the workspace/package roots, or require an explicit browse flow before probing paths outside the manifest directory.

## H2 ...

Coverage notes
  alternative-solution: Inspected new manifest-editor changes against existing parser, validator, and XML helper modules — no obvious duplication.
  packaging: Inspected package.json contributions, release script touch points, and VSIX packaging flow — no release drift found.

Output discipline

The final stdout block is the *only* user-visible output. Do not narrate the

process, do not summarize what each sub-agent did, do not apologize for noise.

The Coverage table already conveys what ran.

Other skills for the same job

different authors, same section of the catalogue
Receiving Code Review
by ZhanlinCui
×9

Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation

1.6k tokens
Requesting Code Review
by ZhanlinCui
×8

Use when completing tasks, implementing major features, or before merging to verify work meets requirements

675 tokens
Git Commit
by github
vendor ×3

Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping

799 tokens
Github Code Review
by ComeOnOliver
×3

Comprehensive GitHub code review with AI-powered swarm coordination

6.5k tokens
Karpathy Guidelines
by hyyhf
×3

Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.

629 tokens
Code Reviewer
by google-gemini
vendor ×2

Use this skill to review code. It supports both local changes (staged or working tree) and remote Pull Requests (by ID or URL). It focuses on correctness, maintainability, and adherence to project standards.

795 tokens
Agent MD Refactor
by softaworks
×2

Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.

1.9k tokens
Commit Work
by softaworks
×2

Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.

621 tokens

How to use it

Copy the folder

Take microsoft/pr-review from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.