| name | review-pr |
| description | Code review an Azure DevOps pull request |
Provide a code review for the given Azure DevOps pull request.
Workflow
-
Check Eligibility: Use az repos pr show --id {prId} --org {orgUrl} to verify the PR is open, not a draft, and hasn't been reviewed by you already. Skip if ineligible.
-
Get Context: Identify relevant CLAUDE.md files (root and in modified directories) and get the PR diff using git commands:
- First, use
az repos pr show --id {prId} --org {orgUrl} to get the target branch name
- Then fetch and switch to the PR branch:
az repos pr checkout --id {prId} (note: checkout does NOT require --org as it operates on the local git repository)
- Generate the diff:
git diff origin/{targetBranch}...HEAD
- Note: These commands will only work when executed in the same git repository as the PR.
-
Review the Changes: Use agents to analyze the code changes for:
- CLAUDE.md compliance (only applicable instructions)
- Obvious bugs in the changes themselves
- Issues revealed by git history/blame
- Patterns from previous PRs on these files
- Violations of code comments/guidance
-
Validate Issues: For each potential issue, assess confidence (0-100 scale). Filter to only high-confidence issues (80+):
- 0-25: False positive or stylistic preference not in CLAUDE.md
- 50: Real but minor issue
- 75: Important issue affecting functionality or explicitly mentioned in CLAUDE.md
- 100: Definite issue that will cause problems
-
Post Review: If high-confidence issues found:
a. Confirm with User: Use the AskUserQuestion tool to confirm with the user before posting comments to the PR, unless the user explicitly requested not to confirm. Present a summary of the issues you found and ask if they should be posted.
b. Post Comments: After user confirmation, use az devops invoke to create a comment thread on the PR:
az devops invoke --area git --resource pullRequestThreads \
--route-parameters project={project} repositoryId={repo} pullRequestId={pr} \
--http-method POST --api-version 7.1-preview \
--body '{"comments":[{"parentCommentId":0,"content":"Your review","commentType":"text"}],"status":"active"}' \
--org {orgUrl}
For file-specific comments, include threadContext with filePath, rightFileStart, and rightFileEnd in the body.
Avoid False Positives
- Pre-existing issues not introduced by this PR
- Linter/typechecker/compiler issues (handled by CI)
- Pedantic nitpicks not explicitly in CLAUDE.md
- Intentional functionality changes
- Issues on unmodified lines
- General quality issues (test coverage, documentation) unless CLAUDE.md requires them
- Issues with lint ignore comments
Notes
- Don't check build signal or run builds/typechecks (handled separately by CI)
- Cite and link each issue with full context
- Keep comments brief and professional
- Use Azure CLI commands from the azure-cli skill
Comment Format
When posting the review using az devops invoke, format as follows:
If issues found:
### Code review
Found {N} issues:
1. <brief description> (CLAUDE.md says "<quote>")
<Azure DevOps link to file with full commit hash + line range>
2. <brief description> (bug due to <file and code snippet>)
<Azure DevOps link to file with full commit hash + line range>
🤖 Generated with AI
<sub>- If this code review was useful, please react with 👍. Otherwise, react with 👎.</sub>
If no issues:
### Code review
No issues found. Checked for bugs and CLAUDE.md compliance.
🤖 Generated with AI
Azure DevOps Link Format
Use this exact format for code links (must include full commit hash):
https://dev.azure.com/{org}/{project}/_git/{repo}?path=/{file-path}&version=GC{full-commit-hash}&lineStart={start}&lineEnd={end}&lineStartColumn=1&lineEndColumn=1
- Get full commit hash from PR details (
az repos pr show --id {prId} --org {orgUrl})
- Use
lineStart and lineEnd for line ranges (or just line={number} for a single line)
- Include 1+ lines of context before/after the issue
- Ensure org, project, and repo names match the PR's repository
- File path should start with
/