review
Skill4.9k starsChanged 3 months agoMITView on GitHub
Review changes relative to a prior state, such as a diff, pull request, branch, commit, or working-tree changes. Use for change-focused code review and regression analysis. Do not use to assess an existing file, API, design, implementation, or other artifact without a comparison; if the request is ambiguous, ask whether the user wants a change review and what prior state to compare against.
192 other projects use a version of this.
Trending
Less talk lately.about the whole repository
Most recently taken up by
- microsoft/veronatheir own version, first seen Nov 8, 2026
- charliee1w/consolidation-memorytheir own version, first seen Nov 8, 2026
- jisuzzzz/haechitheir own version, first seen Nov 8, 2026
- apokamo/kajitheir own version, first seen Nov 8, 2026
- dirien/yet-another-agent-harnesstheir own version, first seen Nov 8, 2026
- jsmastery-pro/jsm-hqtheir own version, first seen Nov 8, 2026
Who's talking about microsoft/FluidFramework
- A Hacker News story“Library for building distributed, real-time collaborative web applications”Hacker News · Sep 9, 2020 · 19 points
- microsoft/rushstack“[rush] Why does many Microsoft open-source projects not use rush.”GitHub · Oct 31, 2021 · 3 reactions
- Stack Overflow“How to connect to a Routerlicious local server?”Stack Overflow · Apr 27, 2021 · 3 votes
- microsoft/TypeScript“Design Meeting Notes, 2/17/2021”GitHub · Feb 17, 2021 · 3 reactions
- microsoft/TypeScript“Inline *_base declaration in d.ts files”GitHub · Aug 7, 2024 · 2 reactions
The biggest 5 of 62 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 62
Talked about on GitHub, Stack Overflow and Hacker News (62 times).
On GitHub · 50
- Oct 31, 2021[rush] Why does many Microsoft open-source projects not use rush. — microsoft/rushstack3 reactions · 6 comments
- Feb 17, 2021Design Meeting Notes, 2/17/2021 — microsoft/TypeScript3 reactions
- Aug 7, 2024Inline *_base declaration in d.ts files — microsoft/TypeScript2 reactions · 5 comments
- Jun 7, 2024[api-extractor] API report does not indicate if a class was `type` exported. — microsoft/rushstack2 reactions · 2 comments
- Mar 12, 2024Add support for pnpm lock file format 6 — microsoft/component-detection2 reactions · 7 comments
45 more on GitHub
- Apr 23, 2026[aw-compat] Bug: serena-tools-to-shared-import codemod leaves workflows broken in two edge cases — github/gh-aw1 reaction
- Sep 16, 2023Recursive types can depend on presence and source location of unused type declaration — microsoft/TypeScript1 reaction · 12 comments
- Mar 31, 2023Module-level tsdoc doesn't work — matrix-org/matrix-js-sdk1 reaction · 7 comments
- Oct 6, 2022Migrate to `pnpm` or Yarn 3 (from Yarn 1) — microsoft/vscode1 reaction · 2 comments
- Nov 3, 2026build(deps): Bump the fluid-framework-dependencies group across 3 directories with 39 updates — microsoft/FluidExamples0 reactions · 1 comment
- Oct 12, 2026Regressions between 0.34.13 and 1.3.34 — sinclairzx81/typebox0 reactions · 1 comment
- Oct 1, 2026build(deps): Bump the fluid-framework-dependencies group with 29 updates — microsoft/FluidHelloWorld0 reactions · 1 comment
- Jul 6, 2026Bump the fluid-framework-dependencies group across 1 directory with 51 updates — nmsimons/table-example0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27546 - [bench] prefix@b5720370 improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27546 - [bench] prefix@b5720370 improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27546 - [bench] prefix@9e4e683c improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27546 - [bench] prefix@9e4e683c improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27546 - [bench] prefix@0412ca76 improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27546 - [bench] prefix@0412ca76 improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27497 - [bench] improvement(client-ordered-collection): ConsensusQueueFactory generic — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27497 - [bench] improvement(client-ordered-collection): ConsensusQueueFactory generic — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27530 - [bench] Updated the client release group to use eslint-config-fluid v13.0 — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27530 - [bench] Updated the client release group to use eslint-config-fluid v13.0 — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27546 - [bench] improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFramework0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27546 - [bench] improvement(client): fix `exactOptionalPropertyTypes` for telemetry-utils — qodo-benchmark/FluidFrameworksays it tested it0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27521 - [bench] Fix version utils to get the versions it tries from the set it has installed — qodo-benchmark/FluidFrameworksays it tested it0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27521 - [bench] Fix version utils to get the versions it tries from the set it has installed — qodo-benchmark/FluidFrameworksays it tested it0 reactions
- Jun 21, 2026[CORRUPTED] Synthetic Benchmark PR #27508 - [bench] Remove unused credential flows in e2e tests and examples — qodo-benchmark/FluidFrameworksays it tested it0 reactions
- Jun 21, 2026[CLEAN] Synthetic Benchmark PR #27508 - [bench] Remove unused credential flows in e2e tests and examples — qodo-benchmark/FluidFrameworksays it tested it0 reactions
- Jun 4, 2026Bump @fluidframework/synthesize from 2.0.0-rc.1.0.1 to 2.0.0-rc.1.0.9 — jikanter/FluidHelloWorld0 reactions
- Jun 4, 2026Bump @fluidframework/tinylicious-client from 2.0.0-rc.1.0.1 to 2.102.0 — jikanter/FluidHelloWorld0 reactions
- Jun 4, 2026Bump @fluidframework/view-interfaces from 2.0.0-rc.1.0.1 to 2.0.0-rc.1.0.9 — jikanter/FluidHelloWorld0 reactions
- Jun 4, 2026Bump @fluidframework/merge-tree from 2.0.0-rc.1.0.1 to 2.0.0-rc.1.0.9 — jikanter/FluidHelloWorld0 reactions
- Jun 4, 2026Bump @fluidframework/driver-base from 2.0.0-rc.1.0.1 to 2.0.0-rc.1.0.9 — jikanter/FluidHelloWorld0 reactions
- May 30, 2026chore(deps): bump axios, @fluidframework/azure-client, @microsoft/live-share, fluid-framework and start-server-and-test in /live-share-dice-roller — VikkiDFoxCSA/microsoft-365-agents-toolkit-samples0 reactions
- May 1, 2026Bump fluid-framework from 1.4.0 to 2.100.0 in /samples/javascript/22.react-agile-poker — microsoft/live-share-sdk0 reactions
- May 1, 2026Bump @fluidframework/azure-client from 1.2.0 to 2.100.0 in /samples/typescript/21.react-media-template — microsoft/live-share-sdk0 reactions
- Apr 1, 2026Bump @fluidframework/azure-client from 1.2.0 to 2.91.0 in /samples/javascript/03.live-canvas-demo — microsoft/live-share-sdk0 reactions
- Apr 1, 2026Bump fluid-framework from 1.4.0 to 2.91.0 in /samples/javascript/01.dice-roller — microsoft/live-share-sdk0 reactions
- Apr 1, 2026Bump fluid-framework from 1.4.0 to 2.91.0 in /samples/javascript/03.live-canvas-demo — microsoft/live-share-sdk0 reactions
- Apr 1, 2026Bump @fluidframework/azure-client from 1.2.0 to 2.91.0 in /samples/javascript/01.dice-roller — microsoft/live-share-sdk0 reactions
- Mar 23, 2026Bump @fluidframework/test-utils from 1.4.0 to 2.91.0 in /packages/live-share-media — microsoft/live-share-sdk0 reactions
- Mar 23, 2026Bump fluid-framework from 1.4.0 to 2.91.0 in /packages/live-share-canvas — microsoft/live-share-sdk0 reactions
- Mar 23, 2026Bump @fluidframework/test-utils from 1.4.0 to 2.91.0 in /packages/live-share — microsoft/live-share-sdk0 reactions
- Mar 23, 2026Bump @fluidframework/test-runtime-utils from 1.4.0 to 2.91.0 in /packages/live-share-media — microsoft/live-share-sdk0 reactions
- Mar 4, 2026Bump the fluid-framework-dependencies group across 1 directory with 29 updates — nmsimons/fluid-vibe0 reactions
- Feb 10, 2026Bump axios, @fluidframework/server-services-client, @fluidframework/server-services-core, @fluidframework/server-services-shared and @fluidframework/server-services-utils in /server/gitrest — sniten/FluidFramework0 reactions
- Feb 9, 2026Bump axios, @fluidframework/server-lambdas, @fluidframework/server-local-server, @fluidframework/server-memory-orderer, @fluidframework/server-services-client, @fluidframework/server-services-core, @fluidframework/server-services-shared, @fluidframework/server-services-utils and @fluidframework/serv — sniten/FluidFramework0 reactions
- Nov 26, 2025[Dependabot] build(devdeps): bump @fluidframework/eslint-config-fluid from 5.7.4 to 8.1.0 — tylerbutler/tools-monorepo0 reactions
- Sep 25, 2025Bump the fluid-framework-dependencies group across 1 directory with 40 updates — augustniehaus/resourcemapfluid0 reactions · 1 comment
On Stack Overflow · 8
- Apr 27, 2021How to connect to a Routerlicious local server?3 votes · 1 answer
- Oct 14, 2020How to insert SharedMap into SharedObjetSequence2 votes
- Feb 19, 2021How to understand SequencedLambda(KafkaRunner) and DocumentPartition(DocumentLambda),and their related, in fluid-framework1 vote · 1 answer
- Jan 9, 2021How to start the Fluid Framework Server with minimum requirements?1 vote
- Jun 20, 2022How to deploy the Routerlicious fluid-server(fluid framework) using the Kubernetes?0 votes · 1 answer
3 more on Stack Overflow
- Oct 29, 2021How to consume routerlicious without experimental packages?0 votes
- Jul 9, 2021Can the tinylicious server be launched at a port other than 3000?0 votes
- Jun 4, 2021What is the strategy of SharedString on Merging data?0 votes
On Hacker News · 4
- Sep 9, 2020Library for building distributed, real-time collaborative web applications19 points
- Sep 9, 2020Microsoft/FluidFramework: Library for building real-time collaborative web apps2 points
- Jan 11, 2024FluidFramework: Build distributed, real-time collaborative web applications1 point
- Sep 9, 2020TypeScript library for building distributed, real-time collaborative web apps1 point
Used with
Projects with it also use close-spec, design-with-images 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.
dzhngSkillclose-spec
When a spec under specs/<feature>/ is done shipping (a write-spec build, or any planned task that produced a spec), archive it to specs/done/ and rewrite it from a build-plan into a durable rationale — the why, the principles, the invariants — pointing back to the real code for the how. Use when implementation has landed and the plan no longer matches what shipped, or the user says a feature/spec is finished. Pairs with [write-spec](../write-spec/SKILL.md) (the plan this closes) and [review](../review/SKILL.md) (run before closing).
Also in 5 projects that use this
dzhngSkilldesign-with-images
Explore UI and visual design with image generation, then iterate the real implementation against the user-selected concept. Use when brainstorming visual directions, offering mockup variants, or implementing an approved generated design; do not stop at the mockups or the first code approximation.
Also in 5 projects that use this
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 5 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 5 projects that use this
- +3 more from dzhng
- +5 more from Lambenthan
Other versions192 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 192
- garrytan/gstack★ 141ksame name
- ansible/ansible★ 71ksame name
- docling-project/docling★ 70ksame name
- traefik/traefik★ 65ksame name
- ClickHouse/ClickHouse★ 51ksame name
- temporalio/temporal★ 24ksame name
- tisfeng/Easydict★ 15ksame name
- juicedata/juicefs★ 15ksame name
- elie222/inbox-zero★ 13ksame name
- gitkraken/vscode-gitlens★ 10ksame name
182 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 repository34 other files it gives its agents.
- server/gitrest/CLAUDE.mdCLAUDE.md
- server/historian/CLAUDE.mdCLAUDE.md
- build-tools/.github/copilot-instructions.mdCopilot instructions
- .github/copilot-instructions.mdCopilot instructions
- ff-oce-dashboardSkill
- ff-oce-kustoSkill
- brainstormingSkill
- building-ui-uxSkill
- creating-debug-tests-and-iteratingSkill
- creating-skillsSkill
- finishing-a-development-branchSkill
- handle-large-tasksSkill
- receiving-code-reviewSkill
- root-cause-tracingSkill
- starting-noriSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- testing-anti-patternsSkill
- updating-noridocsSkill
- using-git-worktreesSkill
- using-screenshotsSkill
- using-skillsSkill
- webapp-testingSkill
- writing-plansSkill
- api-changesSkill
- ci-readiness-checkSkill
- comparison-baseSkill
- fluid-pr-guideSkill
- fluid-prSkill
- fluid-releaseSkill
- pipeline-test-triageSkill
- policy-checkSkill
- review-pr-localSkill
- trigger-pipelines-for-copilot-prSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 0 are common, 19 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 157 edited versions we read keep these.
19
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Use it only when the request identifies or clearly implies changes to review, such as a diff, pull request, branch, commit, patch, or …
- Distinctive: line 21
Do not use this skill for a general assessment of an existing file, API, architecture, design, implementation, document, or other artifact …
- Distinctive: line 24
If "review" could mean either a general assessment or a change review, ask the user which they want.
- Distinctive: line 25
If they want a change review but have not identified the comparison, ask what prior state or base should be used.
- Distinctive: line 26
Do not proceed to Step 1 until the request is confirmed as a change review.
- Distinctive: line 40
Before doing anything, ask the user:
- Distinctive: line 49
Wait for the user's response.
- Distinctive: line 93
Read per-file diffs in batches (~50 files or ~500 changed lines per batch, whichever is smaller):
- Distinctive: line 107
After reading diffs, identify files where fuller context is needed — typically where the change touches a function that references shared …
- Distinctive: line 115
If a change threads a new prop, callback, flag, or data field through a shared component or helper, read every changed call site and …
- Distinctive: line 119
No code gate: If no executable logic files remain after exclusions (only docs/config changed), skip Breaker.
- Distinctive: line 123
Check whether any API report files changed (names only, not content — these are excluded from diff reading in Step 3):
- Distinctive: line 134
If any matched, flag those packages for the API Analyst (triggers extra scrutiny on release tags, breaking changes, and conventions).
- Distinctive: line 158
All reviews cover these areas.
- Distinctive: line 169
Before a finding can appear in the report, verify ALL of these:
- Distinctive: line 176
If a claim depends on generic hardening advice, guessed nullability, speculative behavior, or an unverified assumption about a dependency, …
- Very specific: line 252
If $IS_LOCAL_REVIEW is true: "This is a LOCAL review — the workspace checkout matches the code under review.
- Distinctive: line 280
Always print the resolved report path when writing the report to a file.
- Very specific: line 282
If zero findings remain after the evidence gate, use the exact summary line: 0 CRITICAL, 0 HIGH, 0 MEDIUM — No high-confidence issues found …
- Distinctive: line 323
After severity caps and promotions:
- Distinctive: line 343
No executable code after exclusions: Skip Breaker.
“Common” is measured: kept by at least 6 in 10 of the 157 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
/review # review current branch vs its resolved target
/review my-feature-branch # review a specific branch vs its resolved targetSpawns dedicated Breaker (correctness) and API Analyst (compatibility/conventions) sub-agents in parallel while the orchestrator performs the Inspector pass (architecture, tests, performance, security). Depth is user-selected.
Optimize for high-confidence, concise findings. Silence is better than speculation.
Scope Gate
This skill reviews a change set relative to a prior state. Use it only when the request identifies or clearly implies changes to review, such as a diff, pull request, branch, commit, patch, or working-tree changes.
Do not use this skill for a general assessment of an existing file, API, architecture, design, implementation, document, or other artifact when no comparison is requested. Handle that request directly using the relevant domain guidance instead.
If "review" could mean either a general assessment or a change review, ask the user which they want. If they want a change review but have not identified the comparison, ask what prior state or base should be used. Do not proceed to Step 1 until the request is confirmed as a change review.
Input
Target: $ARGUMENTS
Parse $ARGUMENTS:
- Review target (positional argument):
- Non-empty text (e.g.,
my-feature-branch) -> diff that branch vs its resolved target - Empty -> diff current branch vs its resolved target
- Non-empty text (e.g.,
Step 1: Confirm Mode
Before doing anything, ask the user:
I can run a code review on your branch. Pick a depth (fastest to slowest):
- Skip — skip the review
- Quick — single-pass by orchestrator, all areas, no sub-agents
- Standard — full swarm: Breaker + API Analyst sub-agents + Inspector
- Deep — Standard + reads full changed files (not just diffs) for deeper analysis
Wait for the user's response. If they say skip, stop here.
<required>
Immediately after the user picks a mode, create one task per applicable step using the available Copilot task-management tooling — before doing any other work. Mark each task in progress when you start it and completed when you finish.Tasks to create by mode:
- Quick: Gather changes -> Read diffs -> Perform single-pass review -> De-duplicate and classify -> Report
- Standard: Gather changes -> Read diffs -> Detect API surface changes -> Extract sections for sub-agents -> Perform review (spawn Breaker + API Analyst, run Inspector) -> De-duplicate and classify -> Report
- Deep: Gather changes -> Read diffs and full files -> Detect API surface changes -> Extract sections for sub-agents -> Perform review (spawn Breaker + API Analyst, run Inspector) -> De-duplicate and classify -> Report
</required>
Step 2: Resolve Base & Gather Changes
Read .github/skills/comparison-base/SKILL.md and execute it before gathering changes. This is required; do not duplicate or approximate its target-selection logic in this skill. Use HEAD as $REVIEW_REF for the current branch, or pass the named review branch as its input. Retain all resolver outputs for the report and subsequent commands.
Choose the diff endpoint once and use it for the entire review:
- Local review (
$IS_LOCAL_REVIEWistrue): compare$BASE_COMMITwith the working tree so staged and unstaged changes are included. Also collect untracked files withgit ls-files --others --exclude-standard; treat each as a full-file addition. - Remote review: use the exact two-dot range
$BASE_COMMIT..$REVIEW_REF. Do not switch to a three-dot diff later: that would recompute a potentially different merge-base.
git log "$BASE_COMMIT..$REVIEW_REF" --oneline
# Local review
git diff --stat "$BASE_COMMIT"
git diff --numstat "$BASE_COMMIT"
git ls-files --others --exclude-standard
# Remote review
git diff --stat "$BASE_COMMIT..$REVIEW_REF"
git diff --numstat "$BASE_COMMIT..$REVIEW_REF"Store the PR URL (if any), target repository/branch, selected comparison commit, commit log, file list, and total $LINES_CHANGED (sum additions and deletions from --numstat; handle binary entries separately). For a local review, add every untracked file to the file list and count all of its lines as additions; detect untracked binary files separately.
Empty diff gate: Zero changed files -> report "No changes to review" and stop.
Size gate: >10,000 lines changed -> ask user to narrow scope before proceeding.
Step 3: Read Diffs and Source Files
Exclude non-reviewable files from the file list: type declarations (.d.ts), lockfiles (pnpm-lock.yaml, package-lock.json), images, fonts, binaries, .map files, and generated API report files (*.api.md).
Read per-file diffs in batches (~50 files or ~500 changed lines per batch, whichever is smaller):
# Local review (tracked files)
git diff "$BASE_COMMIT" -- <file1> <file2> ...
# Remote review
git diff "$BASE_COMMIT..$REVIEW_REF" -- <file1> <file2> ...For local untracked files, read their full workspace contents and present them as full-file additions. They have no Git diff until staged.
Standard mode: selective full-file reads
After reading diffs, identify files where fuller context is needed — typically where the change touches a function that references shared state, calls other functions in the same file, or has fragmented hunks. Read those files in one batch using Copilot's file-reading tools.
Deep mode: full-file reads for all changed files
For a local review, read every changed file from the workspace so unstaged and untracked content is included. For a remote review, read the committed version using git show "${REVIEW_REF}:<file>".
Shared plumbing trap
If a change threads a new prop, callback, flag, or data field through a shared component or helper, read every changed call site and adjacent wrapper that accepts or forwards it.
Compute $LINES_REVIEWED: Count total unique lines reviewed — diff lines for diff-only files, full line counts for fully-read files. This is always >= $LINES_CHANGED.
No code gate: If no executable logic files remain after exclusions (only docs/config changed), skip Breaker. API Analyst does a reduced pass. Inspector only.
Step 4: Detect API Surface Changes
Check whether any API report files changed (names only, not content — these are excluded from diff reading in Step 3):
# Local review: also filter the untracked-file list gathered in Step 2
git diff --name-only "$BASE_COMMIT" | grep -E '\.api\.md$' || true
git ls-files --others --exclude-standard | grep -E '\.api\.md$' || true
# Remote review
git diff --name-only "$BASE_COMMIT..$REVIEW_REF" | grep -E '\.api\.md$' || trueIf any matched, flag those packages for the API Analyst (triggers extra scrutiny on release tags, breaking changes, and conventions).
Step 5: Extract Sections for Sub-agents (Standard and Deep only)
Skip this step in Quick mode.
For files read in full that are >200 lines, extract only: modified functions (complete bodies), their callers (same file), and shared state. Format:
### file.ts (extracted — N lines from M total)
// Fields
#cache: Map<string, Promise<Foo>> = new Map();
// Modified: someMethod() — line 816
async someMethod(arg) { ... }
// Caller: #helperMethod — line 1118
async #helperMethod(arg) { ... }Files <=200 lines: embed in full. Store as $EXTRACTED_SECTIONS.
Step 6: Perform Review
Review Areas
All reviews cover these areas. The mode determines whether sub-agents handle some of them.
- Correctness — Logic bugs, null/undefined dangers, race conditions, error handling, edge cases, distributed systems concerns (op ordering, eventual consistency, merge conflicts), DDS lifecycle (attach/detach, summarization), SharedTree patterns (schema validation, tree transactions)
- API Quality — Breaking changes, release tag correctness, naming conventions, type design, ergonomics, cross-package impact, deprecation patterns (informed by
api-conventions.md) - Architecture — Readability, structure, API surface, stale references
- Tests — Coverage, edge cases, assertion quality, test-code consistency
- Performance — Algorithmic complexity, memory leaks, telemetry correctness (are events firing with the right data?)
- Security — Injection, input validation, PII leaks, token handling
High-confidence gate
Before a finding can appear in the report, verify ALL of these:
- The affected code path (changed or directly impacted adjacent path) is identified.
- The failure mechanism or violated invariant is concrete, not hypothetical.
- The claimed impact is proportional to the evidence.
- The suggested fix addresses the exact issue.
If a claim depends on generic hardening advice, guessed nullability, speculative behavior, or an unverified assumption about a dependency, read more context or drop it.
Output format for all findings: [SEVERITY] file:line — description — suggested fix (CRITICAL, HIGH, MEDIUM).
Quick mode
The orchestrator covers all areas in a single pass, then proceeds to Step 7.
Standard and Deep mode
Two parallel tracks:
| Area | Owner |
| Correctness | The Breaker (sub-agent) |
| API Quality | The API Analyst (sub-agent) |
| Architecture, Tests, Performance, Security | The Inspector (orchestrator) |
The Breaker — owns Correctness
Think like a chaos monkey working on a distributed systems framework. Your sole focus is finding ways this code produces wrong results, crashes, or behaves unexpectedly.
You are NOT here to praise good code. You are here to BREAK things.
Your mindset:
- "What if two clients send conflicting ops simultaneously?"
- "What if the network dies mid-operation?"
- "What if I attach, detach, then reattach?"
- "What happens at the edges — empty collections, maximum sizes, zero-length ops?"
- "What if the dependency changes or a guard was removed but its siblings weren't?"
- "What if summarization runs while ops are in flight?"
- "What if I call this before the container is connected?"
The API Analyst — owns API Quality
Think like a developer advocate who deeply understands TypeScript API design. Your sole focus is ensuring this code presents a clean, consistent, user-friendly API surface that follows Fluid Framework conventions.
You are NOT here to praise good code. You are here to find API design problems.
Your mindset:
- "Would a new user understand this API from IntelliSense alone?"
- "Does this naming follow our conventions?"
- "Is this a breaking change? Is the release tag correct?"
- "Are generics earning their keep or just adding noise?"
- "Does this type design play well with others — plain data, JSON-compatible?"
- "Will this deprecation path actually work for consumers?"
- "Is there unnecessary complexity that could be a simpler overload?"
The API Analyst receives the contents of api-conventions.md (in this skill's directory) as part of its prompt.
Read api-conventions.md:
cat .github/skills/review/api-conventions.mdThe Inspector (orchestrator)
While sub-agents run, perform the Architecture, Tests, Performance, and Security pass yourself using full diff context and cross-file reasoning.
Spawning Sub-agents
Spawn all sub-agents in a single parallel batch using Copilot's task delegation tool.
Each sub-agent prompt includes — literally pasted into the prompt text:
- Persona description (from above)
- Changed file list
- Full diff from Step 3 — paste the entire diff output
- Extracted sections from Step 5 — paste the full extracted code
- API conventions (API Analyst only) — paste the contents of
api-conventions.md - Output format:
[SEVERITY] file:line — description — suggested fix - Review mode instruction:
- If
$IS_LOCAL_REVIEWistrue:"This is a LOCAL review — the workspace checkout matches the code under review. You may read workspace files for additional context (callers, type definitions, adjacent logic) when the embedded material is insufficient." - Otherwise:
"This is a REMOTE review — the workspace checkout may be on a different branch. Do NOT read workspace files. ALL code you need is embedded above. Base your analysis ONLY on the diff and extracted sections provided."
- If
Perform the Inspector pass yourself while sub-agents run. Wait for all to complete.
Step 7: De-duplicate and Classify
Classify each finding and adjust severity:
| Area | Max Severity | Adjustment |
| Correctness | CRITICAL | Promote +1 level (MEDIUM->HIGH, HIGH->CRITICAL) |
| API Quality | CRITICAL | Promote +1 level (MEDIUM->HIGH, HIGH->CRITICAL) |
| Performance | HIGH | Cap |
| Architecture | HIGH | Cap |
| Tests | HIGH | Cap |
| Security | MEDIUM | Cap |
Multi-area findings: classify in whichever area gives higher severity. Drop uncertain findings. If a concern depends on guesswork, hypothetical misuse, or hardening beyond an already-enforcing layer, omit it.
Step 8: Report
Deduplicate on file:line, sort by severity. Drop "looks correct" findings.
Output routing:
- 5 or fewer findings: Print the full report to the terminal.
- More than 5 findings: Write the full report to
review-report.mdin the system temporary directory and print a summary to the terminal: verdict line, finding counts by area, and the file path.
Always print the resolved report path when writing the report to a file.
If zero findings remain after the evidence gate, use the exact summary line:
0 CRITICAL, 0 HIGH, 0 MEDIUM — No high-confidence issues found in the current diff.
Report Template
# Code Review Report
**Target**: Branch: <branch-name>
**Base**: <target-repository>:<target-branch> at <comparison-commit>
**Mode**: quick | standard | deep
**Lines reviewed**: $LINES_REVIEWED ($LINES_CHANGED changed)
## Verdict: Approve | Approve with suggestions | Request changes
N CRITICAL, N HIGH, N MEDIUM — one-line summary of the overall assessment.
### Findings
| Sev | # | Area | File | What | Fix |
|---|---|---|---|---|---|
| :red_circle: | C1 | Correctness | file.ts:42 | Description of violation and impact | Concrete fix suggestion |
| :orange_circle: | H1 | API Quality | file.ts:80 | Description | Fix |
| :yellow_circle: | M1 | Tests | file.test.ts:12 | Description | Fix |
**By area:** Correctness: 1:red_circle: API Quality: 1:orange_circle: Tests: 1:yellow_circle:
### Changes Overview
Table of each changed file -> what changed and why.
### Suggestions
Optional, non-blocking improvements. Each must propose a **concrete action** — never just describe what's already there. Omit this section if there are none.
---
Generated with review (mode)Verdict rules
After severity caps and promotions:
- Approve: 0 CRITICAL, 0 HIGH
- Approve with suggestions: 0 CRITICAL, 0 HIGH in Correctness/API Quality, some HIGH/MEDIUM elsewhere
- Request changes: 1+ CRITICAL, or 1+ HIGH in Correctness/API Quality, or 3+ HIGH across other areas
Step 9: Offer Next Steps
What next?
1. Explain a specific finding
2. Fix all critical/high issues
3. Re-review after changesEdge Cases
- Empty diff: Report "No changes to review" and stop.
10,000 lines changed: Ask user to narrow scope.
- Comparison-base resolution issue: Follow the edge-case handling in
.github/skills/comparison-base/SKILL.md. - No executable code after exclusions: Skip Breaker. API Analyst reduced pass. Inspector only.
- Sub-agent timeout: Note "Review incomplete" for that area.
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.

