pr-review
Skill839 starsChanged 6 days agoMITView on GitHub
Multi-dimensional review of a PR or feature branch in the microsoft/microsoft-ui-reactor 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. Covers security, correctness/edge cases, API & DSL ergonomics, alternative solutions, test coverage, docs & samples, and packaging; delegates substantial independent scopes and cross-checks with another model family when available and permitted. Reports consolidated findings and coverage limits to stdout. Does NOT apply fixes.
195 other projects use a version of this.
Adopted by
Most recently taken up by
- static-web-server/static-web-servertheir own version, first seen Nov 9, 2026
- zerx-lab/FluxDowntheir own version, first seen Nov 9, 2026
- civitai/civitaitheir own version, first seen Nov 9, 2026
- harshitsinghbhandari/domain-expansiontheir own version, first seen Nov 8, 2026
- Azure/azure-sdk-toolstheir own version, first seen Nov 8, 2026
- databricks/clitheir own version, first seen Nov 8, 2026
Used with
Projects with it also use oss-pr, pr-automation and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
CES-LtdSkilloss-pr
Use when creating a pull request, after committing changes, or when user invokes /oss-pr. Covers branch management, quality checks, commit, push, and PR creation.
Also in 3 projects that use this
CES-LtdSkillpr-automation
PR Automation Orchestrator: poll open PRs, check CI, run review, fix, and merge eligible PRs. Use when: (1) Invoked by daemon via scripts/pr-automation.sh, (2) User says "/pr-automation".
Also in 3 projects that use this
jtenniswoodSkillexpert-reset
Reimagine this repository from first principles using the current product and user experience as the target. Use when the user says "/expert-reset", asks how the project should be rebuilt if starting again, wants bold architecture or component-structure recommendations, or wants a research-only reset plan unconstrained by current implementation details.
Also in 3 projects that use this
jtenniswoodSkillupdates
Summarize user-facing project updates from the last 7 days, ordered by importance and written as one-sentence "Feature: description" entries. Use when the user says "/updates", asks what changed recently, or wants a concise list of recent features, device support, fixes that users will notice, or other product value.
Also in 3 projects that use this
openchamberSkillclack-cli-patterns
Use when creating or modifying OpenChamber CLI commands, prompts, terminal output, non-TTY behavior, `--quiet`, or `--json` behavior.
Also in 3 projects that use this
openchamberSkilldrag-to-reorder
Use when implementing or modifying OpenChamber sortable or drag-to-reorder behavior, especially `@dnd-kit`, touch/mobile interactions, variable-width items, or wrapping layouts.
Also in 3 projects that use this
- +6 more from openchamber
Other versions195 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 195
- Significant-Gravitas/AutoGPT★ 188ksame name
- pytorch/pytorch★ 105ksame name
- rtk-ai/rtk★ 86ksame name
- saadeghi/daisyui★ 43ksame name
- rustfs/rustfs★ 36ksame name
- dotnet/maui★ 23ksame name
- NVIDIA/Megatron-LM★ 18ksame name
- MiniMax-AI/skills★ 14ksame name
- btriapitsyn/openchamber★ 13ksame name
- openchamber/openchamber★ 13ksame name
185 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- analyzer-dymSkill
- coverage-upliftSkill
- perf-compareSkill
- pr-lifecycleSkill
- reactor-advancedSkill
- reactor-asyncSkill
- reactor-build-and-checkSkill
- reactor-chartsSkill
- reactor-commandingSkill
- reactor-designSkill
- reactor-devtoolsSkill
- reactor-dockingSkill
- reactor-dslSkill
- reactor-formsSkill
- reactor-getting-startedSkill
- reactor-inputSkill
- reactor-navigationSkill
- reactor-recipesSkill
- reactor-windowingSkill
- reactor-wrappingSkill
- reactor-appSkill
- ChartingSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 178 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 32
Do not activate for narrow questions like "review this function" or "is this line correct" — those are direct review questions, not …
- Distinctive: line 74
If none resolve, abort with a clear message asking the user to specify a base.
- Very specific: line 82
Commit count: git --no-pager log --oneline <base>..HEAD (0 for working and staged).
- Distinctive: line 135
Read the shared model-selection policy before choosing models.
- Distinctive: line 158
Keep each primary reviewer's model provenance with its findings.
- Very specific: line 236
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 …
- Distinctive: line 255
Cite evidence: Every kept finding must reference a specific file and line range visible in the diff.
- Very specific: line 263
When invoking each dimension sub-agent via the task tool, build the prompt from these blocks (in order):
“Common” is measured: kept by at least 6 in 10 of the 178 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
You are the PR Review orchestrator for the microsoft/microsoft-ui-reactor repo.
Your job is to give a contributor a thorough, high-signal review of their
in-progress branch before they push. Review small scopes directly; use parallel
sub-agents for substantial independent work and consolidate their findings.
Reactor is a declarative, component-based C# framework for building WinUI 3 desktop
apps. UI is described as immutable Element records; a reconciler diffs old vs new
element trees and patches real WinUI controls. Read AGENTS.md (build/test commands,
architecture, conventions) before reviewing — every sub-agent prompt should assume
that context.
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/1.0"), use that. An explicit base ref overrides the defaultorigin/mainforbranch/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), useworking.git rev-list --count origin/main..HEAD> 0 AND working tree clean → usebranch.- Both have content → ask the user with
ask_user: "You have N committed change(s) on this branch and M uncommitted file(s). Review which?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, orWORKTREEforworking/staged). - Commit count:
git --no-pager log --oneline <base>..HEAD(0 forworkingandstaged). - 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 viagit ls-files --others --exclude-standardand include their full contents as if they were "all-added" diffs —git diffdoes 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 meanworking?"). - >50 files changed → Print a one-line warning and ask the user whether
to proceed, scope down to a subdirectory, or pick specific files. Use
ask_user. Do not silently proceed. Large mechanical changes (e.g. a Yoga fixture import or a generatedreactor.api.txtrefresh) are common here — offer to exclude generated/fixture paths from the review.
3. Map likely-impacted areas
Skim file paths and classify which review dimensions are relevant. Consider all seven primary dimensions, but do not equate coverage with seven model calls. A small diff whose evidence fits one context should be reviewed directly. Delegate only substantial independent scopes, and combine lenses that need the same evidence. Record dimensions with no relevant surface as not applicable, with a reason; never mark an unperformed check clean. Common buckets:
| Path prefix | Likely owner |
src/Reactor/Core/ (Reconciler, Component, Element, Hooks, RenderContext) | correctness, alternative-solution |
src/Reactor/Elements/ (Dsl.cs factories, ElementExtensions.cs modifiers) | api-ergonomics, alternative-solution |
src/Reactor/Flex/, src/Reactor/Yoga/ | correctness (layout math) |
src/Reactor/Hosting/ (ReactorApp, render loop, hot reload) | correctness, security |
src/Reactor.Analyzers/, src/Reactor.Analyzers.Internal/, src/Reactor.Compile.Analyzer/ | api-ergonomics (diagnostic quality), correctness |
src/Reactor.*.Generator/ (Localization, Wrappers source generators) | correctness, packaging |
src/Reactor.Cli/ (mur) | api-ergonomics, security, correctness |
tools/Reactor.DocPipeline/ (doc pipeline, screenshot capture) | security, correctness |
src/Reactor.Devtools/, src/vscode-reactor/, src/vs-reactor/, src/Reactor.Interop.WinForms/ | packaging, correctness |
tests/Reactor.Tests/, tests/Reactor.SelfTests/, tests/Reactor.AppTests*/ | test-coverage |
docs/, README.md, samples/ | docs-and-samples |
skills/, plugins/reactor/, SKILL.md | docs-and-samples + packaging (shipped agent kit) |
*.csproj, Directory.Build.*, Directory.Packages.props, global.json, nuget.config | packaging |
docs/_pipeline/templates/*.md.dt | docs-and-samples (generated docs source) |
4. Review the dimensions
Read the shared model-selection policy before choosing models. The workloads below refer to its task-fit candidates, not validated routing defaults or overrides of user or host preferences. All reviewers are read-only, regardless of agent type.
Launch independent delegated work for #1–#7 in the same response, using the
host's available review/read-only agents or general-purpose. Use explore
only for bounded research, not a correctness judgment merely because it reads
files. Default to synchronous calls; use background calls only while doing
independent work. Each prompt must include the scoped diff, base/head refs,
file classification, shared contract, and relevant dimension fragment(s).
| # | Dimension | Fragment | Recommended workload |
| 1 | security | dimensions/security.md | Deep review; respect host security-review routing |
| 2 | correctness & edge cases | dimensions/correctness.md | Deep review |
| 3 | API & DSL ergonomics | dimensions/api-ergonomics.md | Deep review |
| 4 | alternative-solution check | dimensions/alternative-solution.md | Deep review |
| 5 | test coverage | dimensions/test-coverage.md | Deep review, especially oracle validity |
| 6 | docs & samples sync | dimensions/docs-and-samples.md | Bounded review; deep review for behavioral claims |
| 7 | packaging & agent-kit impact | dimensions/packaging.md | Bounded review for inventories; deep review for AOT/build/release semantics |
| 8 | multi-model cross-check | dimensions/multi-model.md | Cross-family review after primary findings are consolidated |
Keep each primary reviewer's model provenance with its findings. Do not launch #8 alongside #1–#7: it depends on their consolidated evidence. Selection for #8 is relative to the first-pass reviewers, which may differ from the orchestrator.
5. Consolidate and cross-check
Collect the primary 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). Preserve every contributing reviewer's model provenance. - 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.
- Cross-check. Pass the scoped diff, primary-review model provenance, and consolidated critical/high findings to #8 following the shared cross-family rules. It also scans for missed critical/high issues when there are no input findings. If the host cannot provide a permitted different-family reviewer, report that limitation instead of silently substituting the same family.
- Reconcile the result. Merge new findings, apply evidence-backed severity
changes, dedupe, and sort again. Keep final finding IDs consistent. Mark each
critical/high finding
confirmed,disputed, ornot reviewed; only a verified different-family check qualifies as a cross-family confirmation.
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>
Models
primary <dimension(s): direct/delegated, requested/effective model IDs when known>
cross-check <model ID and family coverage, or unavailable/unverified + reason>
Coverage
security <✓ clean | ⚠ N findings | not applicable + reason | ✗ skipped + reason>
correctness ...
api-ergonomics ...
alternative-solution ...
test-coverage ...
docs-and-samples ...
packaging ...
multi-model <X/Y critical+high confirmed; disputed/not reviewed counts; independent scan status>
Findings
C1 <file>:<lines> <domain> <one-line>
C2 ...
H1 ...
...
Details
## C1 <file>:<lines>
- Severity: critical
- Confidence: high
- Domain: correctness
- 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
- Proportionate parallelism. Launch independent delegated primary scopes in one response, not a mandatory agent per dimension. Complete primary reviews before the cross-family check.
- 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 (e.g. a new plugin sub-skill not
added to the agent-kit pack list in
src/Reactor/Reactor.csproj, orskills/reactor.api.txtlooking out of date) but do not runmur check,dotnet build,dotnet test, ordotnet run --project tools/Reactor.DocPipeline -- compileyourself — they are slow and the contributor will run them. - Signal-to-noise. Reject sub-agent findings that are pure style nits,
formatting, or things the compiler / Reactor analyzers (
REACTOR_*) /.editorconfigalready 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.
- Treat finding fixes as new code. Enforce the shared contract's source requirement for factual claims; do not accept a claim merely because it was written to satisfy an earlier review.
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 microsoft-ui-reactor 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 and primary-review model provenance. Resolve its model through the shared policy, respecting the host's override restrictions. Do not assume a different model from yourself is different from the reviewers who raised the findings.
Example invocation pattern
1. git diff --stat origin/main...HEAD → 12 files, +340/-87
2. git diff origin/main...HEAD → captured for sub-agents
3. Map files to areas → mostly Core/Reconciler + 1 modifier + 1 doc
4. Review directly / delegate independent scopes in parallel → collect primary findings
5. Consolidate; run permitted cross-family check(s) → collect verdicts
6. Dedupe, sort, ID, mark multi-model status
7. Print stdout reportExample consolidated stdout
PR Review — feat/combobox-controlled vs origin/main (4 commits, 9 files, +312/-58)
Summary
Critical: 0 High: 2 Medium: 3 Low: 1
Models
primary <resolved primary model IDs and direct/delegated scopes>
cross-check <resolved different-family model ID>
Coverage
security ✓ clean
correctness ⚠ 1 finding
api-ergonomics ⚠ 1 finding
alternative-solution ✓ clean
test-coverage ⚠ 1 finding
docs-and-samples ⚠ 2 findings
packaging ✓ clean
multi-model 2/2 high confirmed; 0 disputed, 0 not reviewed; independent scan complete
Findings
H1 src/Reactor/Core/Reconciler.Update.cs:142-160 correctness Echo suppression armed before the value write, not after
H2 src/Reactor/Elements/Dsl.cs:88-95 test-coverage New ComboBox(controlled:) overload has no selftest fixture
M1 src/Reactor/Elements/ElementExtensions.cs:34-49 api-ergonomics New .Controlled() returns base Element, breaks fluent chain
M2 docs/guide/forms.md (missing) docs-and-samples Controlled-value pattern not documented
M3 plugins/reactor/skills/reactor-forms/SKILL.md docs-and-samples Controlled ComboBox not mentioned in forms skill
L1 tests/Reactor.Tests/ComboBoxTests.cs:189 test-coverage Edge case (empty ItemsSource) untested
Details
## H1 src/Reactor/Core/Reconciler.Update.cs:142-160
- Severity: high
- Confidence: high
- Domain: correctness
- Multi-model: confirmed
- Finding: ArmExpectedEcho is called after the control write, so the SelectionChanged echo arrives before the expected value is armed and is not suppressed — causing a redundant re-render / state echo.
- Evidence: Line 151 writes combo.SelectedIndex = idx; line 156 then calls state.ArmExpectedEcho(idx). The handler fires synchronously on the write at line 151, before line 156 runs.
- Recommendation: Arm the expected echo before performing the controlled write (see the value-diff arm pattern in spec-047 §8.3 and existing controlled handlers).
## H2 ...
Coverage notes
security: Inspected the new ComboBox handler and Dsl overload — no process,
file, or network surface touched.
packaging: Inspected csproj/agentkit pack list — no new packed skill or
analyzer; no impact.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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

