Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review and resolve PR issues with Qodo - get AI-powered code review issues and fix them interactively (GitHub, GitLab, Bitbucket, Azure DevOps)
.claude/skills/nanocoai-qodo-pr-resolver/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 288% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 277% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 210% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 278% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 198% | 0% |
Fetch Qodo review issues for your current branch's PR/MR, fix them interactively or in batch, and reply to each inline comment with the decision. Supports GitHub, GitLab, Bitbucket, and Azure DevOps.
gh (GitHub), glab (GitLab), bb (Bitbucket), or az (Azure DevOps)Installation and authentication details: See providers.md for provider-specific setup instructions.
bashgit --version # Check git installed git remote get-url origin # Identify git provider
See providers.md for provider-specific verification commands.
Qodo (formerly Codium AI) is an AI-powered code review tool that analyzes PRs/MRs with compliance checks, bug detection, and code quality suggestions.
Look for comments from: pr-agent-pro, pr-agent-pro-staging, qodo-merge[bot], qodo-ai[bot]
When the user asks for a code review, to see Qodo issues, or fix Qodo comments:
Check for uncommitted changes, unpushed commits, and get the current branch.
(no uncommitted changes)
git push, inform "Pushed! Qodo will review shortly. Please wait ~5 minutes then run this skill again."(both uncommitted changes and unpushed commits are empty)
Detect git provider from the remote URL (git remote get-url origin).
See providers.md for provider detection patterns.
Find the open PR/MR for this branch using the provider's CLI.
See providers.md § Find Open PR/MR for provider-specific commands.
Get the Qodo review comments using the provider's CLI.
Qodo typically posts both a summary comment (PR-level, containing all issues) and inline review comments (one per issue, attached to specific lines of code). You must fetch both.
See providers.md § Fetch Review Comments for provider-specific commands.
Look for comments where the author is "qodo-mergebot]", "pr-agent-pro", "pr-agent-pro-staging" or similar Qodo bot name.
Deduplicate issues across summary and inline comments:
Derive severity from Qodo's action level and position:
Example: 7 "Action required" issues would be split as:
Example: 5 "Action required" + 3 "Review recommended" + 2 "Other" issues would be split as:
Action guidelines:
Display as a markdown table in Qodo's exact original ordering (do NOT reorder by severity - Qodo's order IS the severity ranking):
Qodo Issues for PR #123: [PR Title]
| # | Severity | Issue Title | Issue Details | Type | Action |
|---|----------|-------------|---------------|------|--------|
| 1 | 🔴 CRITICAL | Insecure authentication check | • **Location:** src/auth/service.py:42<br><br>• **Issue:** Authorization logic is inverted | 🐞 Bug ⛨ Security | Fix |
| 2 | 🔴 CRITICAL | Missing input validation | • **Location:** src/api/handlers.py:156<br><br>• **Issue:** User input not sanitized before database query | 📘 Rule violation ⛯ Reliability | Fix |
| 3 | 🟠 HIGH | Database query not awaited | • **Location:** src/db/repository.py:89<br><br>• **Issue:** Async call missing await keyword | 🐞 Bug ✓ Correctness | Fix |After displaying the table, ask the user how they want to proceed using AskUserQuestion:
Options:
Based on the user's choice:
If "Review each issue" was selected:
git add <modified-files> && git commit -m "fix: <issue title>"Single-step approval with AskUserQuestion:
CRITICAL: Single validation only - do NOT show the diff separately and then ask. Combine the diff display and the question into ONE message. The user should see: brief context → current code → proposed diff → AskUserQuestion, all at once.
Example: Show location, Qodo's guidance, current code, proposed diff, then AskUserQuestion with options (✅ Apply fix / ⏭️ Defer / 🔧 Modify). Wait for user choice, apply via Edit tool if approved.
If "Auto-fix all" was selected:
git add <modified-files> && git commit -m "fix: <issue title>"> ✅ Fixed: Issue Title] at [Location] > Agent prompt: the Qodo agent prompt used]
REQUIRED: After all issues have been reviewed (fixed or deferred), ALWAYS post a comment summarizing the actions taken, even if all issues were deferred.
See providers.md § Post Summary Comment for provider-specific commands and summary format.
After posting the summary, resolve the Qodo review comment:
Find the Qodo "Code Review by Qodo" comment and mark it as resolved or react to acknowledge it.
See providers.md § Resolve Qodo Review Comment for provider-specific commands.
If resolve fails (comment not found, API error), continue — the summary comment is the important part.
If any fixes were applied (commits were created in Steps 6/7), ask the user if they want to push:
git pushgit pushImportant: If all issues were deferred, there are no commits to push — skip this step.
If the remote URL doesn't match GitHub, GitLab, Bitbucket, or Azure DevOps, inform the user and exit.
See providers.md § Error Handling for details.
<branch-name>"IMPORTANT: Do NOT proceed without a PR/MR
IMPORTANT: This skill only works with Qodo reviews, not manual reviews
If "Come back again in a few minutes" message is found, inform user to wait and try again, then exit.
If the detected provider's CLI is not installed, provide installation instructions and exit.
See providers.md § Error Handling for provider-specific installation commands.
Used per-issue in Steps 6 and 7 to reply to Qodo's inline comments:
Use the inline comment ID preserved during deduplication (Step 3b) to reply directly to Qodo's comment.
See providers.md § Reply to Inline Comments for provider-specific commands and reply format.
Keep replies short (one line). If a reply fails, log it and continue.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,547 | 66,500 | +1099% | 1 | 1 | 0% | 863 | 4,186 | +385% | 0 | 0 | — |
case-02 | fail→fail | 6,270 | 4,219 | -33% | 1 | 1 | 0% | 908 | 4,238 | +367% | 0 | 0 | — |
case-03 | fail→fail | 12,499 | 6,209 | -50% | 1 | 1 | 0% | 2,215 | 4,154 | +88% | 0 | 0 | — |
case-04 | pass→pass | 4,449 | 53,038 | +1092% | 1 | 1 | 0% | 752 | 4,436 | +490% | 0 | 0 | — |
case-05 | pass→pass | 6,079 | 2,336 | -62% | 1 | 1 | 0% | 1,044 | 4,344 | +316% | 0 | 0 | — |
case-06 | pass→pass | 5,305 | 2,078 | -61% | 1 | 1 | 0% | 897 | 4,264 | +375% | 0 | 0 | — |
case-07 | pass→fail | 7,051 | 4,699 | -33% | 1 | 1 | 0% | 1,072 | 4,173 | +289% | 0 | 0 | — |
case-08 | pass→pass | 9,454 | 59,259 | +527% | 1 | 1 | 0% | 1,421 | 4,820 | +239% | 0 | 0 | — |
case-09 | pass→pass | 13,161 | 2,882 | -78% | 1 | 1 | 0% | 2,013 | 4,457 | +121% | 0 | 0 | — |
case-10 | fail→pass | 8,391 | 4,616 | -45% | 1 | 1 | 0% | 1,238 | 4,807 | +288% | 0 | 0 | — |
case-11 | fail→pass | 8,109 | 3,446 | -58% | 1 | 1 | 0% | 1,224 | 4,613 | +277% | 0 | 0 | — |
case-12 | pass→pass | 7,821 | 2,285 | -71% | 1 | 1 | 0% | 1,220 | 4,335 | +255% | 0 | 0 | — |
case-13 | fail→pass | 9,047 | 2,764 | -69% | 1 | 1 | 0% | 1,423 | 4,412 | +210% | 0 | 0 | — |
case-14 | fail→pass | 8,552 | 5,598 | -35% | 1 | 1 | 0% | 1,291 | 4,884 | +278% | 0 | 0 | — |
case-15 | pass→pass | 15,848 | 3,490 | -78% | 1 | 1 | 0% | 2,461 | 4,575 | +86% | 0 | 0 | — |
case-16 | fail→pass | 9,849 | 4,263 | -57% | 1 | 1 | 0% | 1,563 | 4,664 | +198% | 0 | 0 | — |
case-17 | fail→fail | 8,582 | 63,465 | +640% | 1 | 1 | 0% | 1,178 | 4,358 | +270% | 0 | 0 | — |
case-18 | pass→pass | 6,017 | 3,938 | -35% | 1 | 1 | 0% | 913 | 4,262 | +367% | 0 | 0 | — |
case-19 | fail→fail | 5,396 | 3,676 | -32% | 1 | 1 | 0% | 879 | 4,347 | +395% | 0 | 0 | — |
case-20 | fail→pass | 8,564 | 2,428 | -72% | 1 | 1 | 0% | 1,208 | 4,341 | +259% | 0 | 0 | — |
case-21 | fail→pass | 10,984 | 52,448 | +377% | 1 | 1 | 0% | 1,919 | 4,681 | +144% | 0 | 0 | — |
case-22 | fail→pass | 13,082 | 2,908 | -78% | 1 | 1 | 0% | 2,025 | 4,453 | +120% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.