npx claudepluginhub scaryrawr/scaryrawr-plugins --plugin azure-devopsWant just this skill?
Add to a custom plugin, then install with one command.
Code review an Azure DevOps pull request
This skill uses the workspace's default tool permissions.
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--orgas 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.
- First, use
-
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
AskUserQuestiontool 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 invoketo 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
threadContextwithfilePath,rightFileStart, andrightFileEndin 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
lineStartandlineEndfor line ranges (or justline={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
/