Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Iteratively improves a PR until Greptile gives it a 5/5 confidence score with zero unresolved comments. Triggers Greptile review, fixes all actionable comments, pushes, re-triggers review, and repeats. Use when the user wants to fully optimize a PR against Greptile's code review standards.
.claude/skills/bilal140202-greploop/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 37% | 0% |
Iteratively fix a PR until Greptile gives a perfect review: 5/5 confidence, zero unresolved comments.
bashgh pr view --json number,headRefName -q '{number: .number, branch: .headRefName}'
Switch to the PR branch if not already on it.
Repeat the following cycle. Max 5 iterations to avoid runaway loops.
Push the latest changes (if any) and wait for Greptile's review check to appear:
bashgit push
Then poll for the Greptile check to complete:
bashgh pr checks <PR_NUMBER> --watch
Get the latest review from Greptile:
bashgh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/reviews
Look for the most recent review from greptile-apps[bot] or greptile-apps-staging[bot].
Parse the review body for:
3/5 or 5/5 in its review summary.Also fetch all unresolved inline comments:
bashgh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments
Filter to comments from Greptile that are on the latest commit.
Stop the loop if any of these are true:
For each unresolved Greptile comment:
Fetch unresolved review threads and resolve all that have been addressed (see GraphQL reference):
bashgh api graphql -f query=' query($cursor: String) { repository(owner: "OWNER", name: "REPO") { pullRequest(number: PR_NUMBER) { reviewThreads(first: 100, after: $cursor) { pageInfo { hasNextPage endCursor } nodes { id isResolved comments(first: 1) { nodes { body path author { login } } } } } } } }'
Resolve addressed threads:
bashgh api graphql -f query=' mutation { t1: resolveReviewThread(input: {threadId: "ID1"}) { thread { isResolved } } t2: resolveReviewThread(input: {threadId: "ID2"}) { thread { isResolved } } }'
bashgit add -A git commit -m "address greptile review feedback (greploop iteration N)" git push
Then go back to step A.
After exiting the loop, summarize:
| Field | Value | |-------|-------| | Iterations | N | | Final confidence | X/5 | | Comments resolved | N | | Remaining comments | N (if any) |
If the loop exited due to max iterations, list any remaining unresolved comments and suggest next steps.
Greploop complete.
Iterations: 2
Confidence: 5/5
Resolved: 7 comments
Remaining: 0If not fully resolved:
Greploop stopped after 5 iterations.
Confidence: 4/5
Resolved: 12 comments
Remaining: 2
Remaining issues:
- src/auth.ts:45 — "Consider rate limiting this endpoint"
- src/db.ts:112 — "Missing index on user_id column"| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,209 | 4,509 | -37% | 1 | 1 | 0% | 1,210 | 1,365 | +13% | 0 | 0 | — |
case-02 | fail→fail | 4,498 | 3,870 | -14% | 1 | 1 | 0% | 807 | 1,190 | +47% | 0 | 0 | — |
case-03 | fail→fail | 4,467 | 4,095 | -8% | 1 | 1 | 0% | 178 | 1,188 | +567% | 0 | 0 | — |
case-04 | pass→fail | 6,730 | 4,271 | -37% | 1 | 1 | 0% | 1,492 | 1,128 | -24% | 0 | 0 | — |
case-05 | pass→pass | 5,504 | 3,210 | -42% | 1 | 1 | 0% | 1,189 | 1,569 | +32% | 0 | 0 | — |
case-06 | pass→fail | 4,987 | 4,090 | -18% | 1 | 1 | 0% | 896 | 1,189 | +33% | 0 | 0 | — |
case-07 | pass→pass | 11,285 | 3,937 | -65% | 1 | 1 | 0% | 1,937 | 1,765 | -9% | 0 | 0 | — |
case-08 | pass→pass | 7,960 | 3,256 | -59% | 1 | 1 | 0% | 1,633 | 1,625 | -0% | 0 | 0 | — |
case-09 | fail→pass | 5,942 | 1,285 | -78% | 1 | 1 | 0% | 1,132 | 1,222 | +8% | 0 | 0 | — |
case-10 | fail→pass | 6,429 | 3,058 | -52% | 1 | 1 | 0% | 1,100 | 1,624 | +48% | 0 | 0 | — |
case-11 | fail→pass | 7,929 | 1,576 | -80% | 1 | 1 | 0% | 1,346 | 1,226 | -9% | 0 | 0 | — |
case-12 | pass→pass | 8,305 | 3,443 | -59% | 1 | 1 | 0% | 1,807 | 1,694 | -6% | 0 | 0 | — |
case-13 | pass→pass | 4,194 | 1,194 | -72% | 1 | 1 | 0% | 765 | 1,201 | +57% | 0 | 0 | — |
case-14 | pass→pass | 3,119 | 1,989 | -36% | 1 | 1 | 0% | 544 | 1,353 | +149% | 0 | 0 | — |
case-15 | pass→pass | 2,714 | 1,844 | -32% | 1 | 1 | 0% | 497 | 1,318 | +165% | 0 | 0 | — |
case-20 | fail→pass | 6,760 | 4,415 | -35% | 1 | 1 | 0% | 1,056 | 1,865 | +77% | 0 | 0 | — |
case-16 | fail→pass | 4,852 | 1,732 | -64% | 1 | 1 | 0% | 887 | 1,211 | +37% | 0 | 0 | — |
case-17 | fail→pass | 5,113 | 1,907 | -63% | 1 | 1 | 0% | 1,012 | 1,390 | +37% | 0 | 0 | — |
case-18 | pass→pass | 9,653 | 2,312 | -76% | 1 | 1 | 0% | 1,762 | 1,304 | -26% | 0 | 0 | — |
case-19 | pass→pass | 4,258 | 2,364 | -44% | 1 | 1 | 0% | 861 | 1,369 | +59% | 0 | 0 | — |
case-21 | pass→pass | 3,981 | 1,081 | -73% | 1 | 1 | 0% | 721 | 1,163 | +61% | 0 | 0 | — |
case-22 | pass→pass | 6,650 | 1,814 | -73% | 1 | 1 | 0% | 1,292 | 1,219 | -6% | 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 17 counted toward the lift figure. The other 5 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 +18 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are 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.