review-pr-local
Skill4.9k starsChanged 3 months agoMITView on GitHub
The authority on pulling a pull request — Azure DevOps or GitHub — into an isolated local worktree so a human can review it in their editor, and on posting human-controlled review comments back to the PR (ADO via the ado PR-thread MCP tools or the Azure DevOps REST API, GitHub via the gh CLI). Auto-detects the platform and all identifiers from the PR URL; not tied to any specific repository. The AI assists an interactive human review and only ever posts comments the human explicitly requests. If you find yourself checking out a PR branch over the user's own working tree, or posting AI-authored review prose the human did not ask for, invoke this skill instead.
7 other projects use a version of this.
Trending
Less talk lately.about the whole repository
Most recently taken up by
- dominikmartn/harptheir own version, first seen Oct 20, 2026
- warpdotdev/oz-for-osstheir own version, first seen Oct 8, 2026
- zerx-lab/zaptheir own version, first seen Oct 8, 2026
- zerx-lab/warptheir own version, first seen Oct 8, 2026
- warpdotdev/Warptheir own version, first seen Oct 8, 2026
- warpdotdev/warptheir own version, first seen Oct 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 dedupe-issue-local, triage-issue-local 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.
zerx-labSkilldedupe-issue-local
Repo-specific dedupe guidance for warp-external. Only the categories declared overridable by the core dedupe-issue skill may be specialized here.
Also in 7 projects that use this
zerx-labSkilltriage-issue-local
Repo-specific triage guidance for warp-external. Only the categories declared overridable by the core triage-issue skill may be specialized here.
Also in 7 projects that use this
black12-agSkillclassify-changelog-pr
Reference guidance for classifying whether an unmarked PR should appear in the changelog and under which category. Used inline by the changelog-draft skill — not dispatched as a separate agent.
Also in 4 projects that use this
black12-agSkillcross-platform-cloud-verification
Orchestrates cost-conscious cloud verification across available operating-system and architecture runners after cheaper checks pass. Use whenever a code change, bug fix, build, packaging flow, native dependency, UI behavior, filesystem behavior, or test has material cross-platform implications, even if the user only asks to verify or test the change. Consult domain verification skills for what to test; use this skill to choose and access the smallest relevant set of platforms.
Also in 4 projects that use this
- +3 more from zerx-lab
- +5 more from black12-ag
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- warpdotdev/Warp★ 66ksame name
- warpdotdev/warp★ 66ksame name
- zerx-lab/warp★ 2.1ksame name
- zerx-lab/zap★ 2.1ksame name
- dominikmartn/harp★ 698same name
- warpdotdev/oz-for-oss★ 313same name
- black12-ag/weft★ 2same name
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
- reviewSkill
- trigger-pipelines-for-copilot-prSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 7 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 14
Use Copilot's file-reading and search tools for inspection.
- Very specific: line 16
Use ask_user whenever the workflow requires information or approval from the human.
- Distinctive: line 17
Do not edit source files in either the user's checkout or the review worktree.
- Distinctive: line 18
Do not commit, push, merge, approve, or otherwise change the reviewed branch.
- Very specific: line 42
If given a bare number instead of a URL, use ask_user to get the full URL (or the platform + identifiers).
- Very specific: line 62
Never run git checkout / gh pr checkout in the user's working directory.
- Distinctive: line 67
If it already appears in git worktree list, skip to Step 5.
- Distinctive: line 75
Create a detached worktree at the head commit (detached avoids "branch already checked out" errors and leaves no stray local branch):
- Very specific: line 88
Verify the real file set first: git -C <worktree-path> diff --stat <merge-base> <head-commit>
- Very specific: line 94
Read the three-dot diff (<merge-base>..<head-commit>) and the modified files for context.
- Distinctive: line 160
When finished, remove the worktree (never affects the user's own branch):
- Distinctive: line 166
If the directory is locked (an editor still has it open), close that editor window, then re-run the remove and git worktree prune.
- Very specific: line 170
Stale
origin: if the three-dot diff looks far larger than the PR, the local base ref is stale — re-fetch the base commit/branch and … - Very specific: line 171
Fork PR (GitHub): always fetch via pull/<number>/head.
“Common” is measured: kept by at least 6 in 10 of the 7 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 a PR Locally (ADO + GitHub)
Check out a pull request into an isolated git worktree — never disturbing the user's current checkout — surface its changes in the editor, run an interactive review where the human drives, and post only the comments the human asks for. All identifiers are derived from the PR URL, so the skill works against any ADO or GitHub repository.
Tool and workspace boundaries
- Use Copilot's file-reading and search tools for inspection.
- Restrict shell commands to
git,az, andgh, plus the minimum JSON serialization and targeted temporary-file cleanup required by the documented ADO REST fallback. - Use
ask_userwhenever the workflow requires information or approval from the human. - Do not edit source files in either the user's checkout or the review worktree.
- Do not commit, push, merge, approve, or otherwise change the reviewed branch.
- Post a review comment only when the human explicitly requests that specific comment, following the approval rules below.
Review Philosophy — high-signal, human-owned
This is the core of the skill. Violating it defeats the purpose.
- The human drives the review. The AI surfaces the parts worth attention and answers the human's questions. It never decides on its own to flood the PR with comments.
- Comments are posted only on explicit human request, in one of two ways:
- Human-dictated: the human gives exact location + text (e.g.
post comment on line 53 of src/foo.ts - this returns before the lock is released). Post it verbatim. - AI-drafted on request: the human asks the AI to write a comment for a specific spot (e.g.
add a comment on the null check in bar.ts). Draft it terse and high-signal, show it, and post only after the human approves.
- Human-dictated: the human gives exact location + text (e.g.
- When surfacing "important parts," comment-worthy means: correctness bugs, logic errors, security issues, breaking API changes, missing edge cases, data loss/corruption, race conditions, broken error handling. Ignore style, formatting, and naming.
- Never post praise, summaries, restatements of what the code does, or style nits — in either mode.
- Every posted comment cites a concrete
file:lineand is 1–3 sentences.
Step 1 — Parse the PR URL
Detect the platform and extract every identifier from the URL — nothing is hardcoded.
| Platform | URL shape | Extract |
| Azure DevOps | https://<org>.visualstudio.com/<project>/_git/<repo>/pullrequest/<id> or https://dev.azure.com/<org>/<project>/_git/<repo>/pullrequest/<id> | org, project, repo, id |
| GitHub | https://github.com/<owner>/<repo>/pull/<number> | owner, repo, number |
If given a bare number instead of a URL, use ask_user to get the full URL (or the platform + identifiers).
Step 2 — Prerequisites (self-contained)
| Platform | Ensure tooling | Auth check → recovery |
| Azure DevOps | az extension show --name azure-devops — if absent, az extension add --name azure-devops | az account show; on failure prompt the user to run az login, then stop |
| GitHub | gh --version | gh auth status; on failure prompt the user to run gh auth login, then stop |
For ADO, pass the org explicitly on every command: --organization https://<org>.visualstudio.com. If any later az call fails with an auth error, prompt the user to re-run az login.
Step 3 — Resolve PR metadata
| Platform | Command | Fields |
| Azure DevOps | az repos pr show --id <id> --organization https://<org>.visualstudio.com --output json | sourceRefName, targetRefName, lastMergeSourceCommit.commitId (head), lastMergeTargetCommit.commitId (base) |
| GitHub | gh pr view <number> --repo <owner>/<repo> --json headRefName,baseRefName,headRefOid,baseRefOid | headRefName, baseRefName, headRefOid (head), baseRefOid (base) |
Step 4 — Fetch the PR into an isolated worktree
Never run git checkout / gh pr checkout in the user's working directory. Always use a separate worktree.
- Reuse an existing worktree if present:
- Repo root:
git rev-parse --show-toplevel. - Worktree path: sibling of the repo root named
<repo-name>-pr-<id-or-number>. - If it already appears in
git worktree list, skip to Step 5.
- Repo root:
Fetch the head and base commits:
Platform Fetch head Fetch base Azure DevOps git fetch origin <source-branch>git fetch origin <head-commit> <base-commit>GitHub git fetch origin pull/<number>/head(works for forks)git fetch origin <base-branch>Create a detached worktree at the head commit (detached avoids "branch already checked out" errors and leaves no stray local branch):
git worktree add --detach <worktree-path> <head-commit>This writes the full tree and can take minutes on a large monorepo — use a long timeout and let it finish.
Step 5 — Surface the PR changes in the editor
The editor's Source Control panel shows only uncommitted changes, so a committed PR branch looks empty. Soft-reset the detached worktree to the PR's merge-base so the PR's changes become staged changes with per-file diffs.
- Merge-base (isolates the PR's own changes):
git -C <worktree-path> merge-base <head-commit> <base-commit> - Verify the real file set first:
git -C <worktree-path> diff --stat <merge-base> <head-commit> - Surface as staged:
git -C <worktree-path> reset --soft <merge-base> - Offer to open it:
code <worktree-path>— changed files appear under Staged Changes. Tell the user not to rungit pullthere (it re-applies the commits and hides the diff); an already-open editor needs a Source Control refresh.
Step 6 — Interactive review
- Read the three-dot diff (
<merge-base>..<head-commit>) and the modified files for context. - Present a short list of the important parts (per the Philosophy bar), each as
file:line+ a one-line reason. Default to few. - Answer the human's follow-up questions about any file, hunk, or symbol — read more of the tree as needed. Stay in this loop until the human is ready to comment or finish.
Step 7 — Post comments the human requests
Parse each request into file, line, and body (draft the body only if the human asked the AI to write it, then get approval). Post one comment per request. Read existing threads first to avoid duplicates.
Anchor identifiers come from Step 1 (org/project/repo/id) and Step 3 (<head-commit>). File paths are repo-relative. In the examples below, substitute the values parsed in Step 1 for every <...> placeholder.
Azure DevOps — inline (anchored to a line)
Preferred: the ado/repo_create_pull_request_thread MCP tool with a threadContext:
organization: <org>
project: <project>
repositoryId: <repo>
pullRequestId: <id> # integer
content: "This returns before the lock is released."
threadContext:
filePath: "/<repo-relative-path>" # leading slash
rightFileStart: { line: <n>, offset: 1 }
rightFileEnd: { line: <n>, offset: 5 }REST fallback (when the ado MCP server is not configured) — uses the az login token:
az rest --method post \
--resource 499b84ac-1321-427f-aa17-267ca6975798 \
--uri "https://dev.azure.com/<org>/<project>/_apis/git/repositories/<repo>/pullRequests/<id>/threads?api-version=7.1" \
--headers "Content-Type=application/json" \
--body @thread-body.jsonwhere thread-body.json is { "comments": [{ "parentCommentId": 0, "content": "...", "commentType": 1 }], "status": "active", "threadContext": { "filePath": "/<repo-relative-path>", "rightFileStart": { "line": <n>, "offset": 1 }, "rightFileEnd": { "line": <n>, "offset": 5 } } }. Generate the body with a JSON serializer, not string interpolation. Delete the temp file afterward.
Azure DevOps — general (PR-level)
Same MCP tool or REST call, omit threadContext (and the body's threadContext).
GitHub — inline (anchored to a line)
gh api --method POST /repos/<owner>/<repo>/pulls/<number>/comments \
-f body="This returns before the lock is released." \
-f commit_id=<head-commit> \
-f path=<repo-relative-path> \
-F line=<n> \
-f side=RIGHTTo post several inline comments as one review, batch them via gh api /repos/<owner>/<repo>/pulls/<number>/reviews (event COMMENT).
GitHub — general (PR-level)
gh pr comment <number> --repo <owner>/<repo> \
--body "Validation approach looks solid overall."Rules for all paths: call ADO MCP tools server-qualified (ado/repo_*) — never ado-repo_* aliases; pullRequestId is an integer; prefer inline over general when the human gives a line. Confirm each post back to the human with the PR link.
Step 8 — Cleanup
When finished, remove the worktree (never affects the user's own branch):
git worktree remove --force <worktree-path>If the directory is locked (an editor still has it open), close that editor window, then re-run the remove and git worktree prune.
Error handling
- Stale
origin: if the three-dot diff looks far larger than the PR, the local base ref is stale — re-fetch the base commit/branch and recompute the merge-base. - Fork PR (GitHub): always fetch via
pull/<number>/head; don't assume the head branch exists onorigin. - Slow checkout: the full-tree checkout on a large monorepo can take minutes — use a long timeout rather than interrupting.
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.

