Agent skill

Greploop Apps

by michaelshimeles in michaelshimeles/skills

Loops on a large pull request, merge request or Perforce changelist, fixing Greptile findings until it scores 5/5 with no unresolved comments.

MITAuto-check passedDevelopment

Install Greploop Apps

skills CLI
$ npx skills add michaelshimeles/skills --skill greploop-apps -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install michaelshimeles/skills greploop-apps --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/michaelshimeles/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/greploop-apps .claude/skills/greploop-apps && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
greploop-apps
GitHub stars
1.3k
Used in
1 other repo
Token cost
~3.6k tokens
SKILL.md length
1,045 words
Files
4 (incl. references)
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Loops on a large pull request, merge request or Perforce changelist, fixing Greptile findings until it scores 5/5 with no unresolved comments.

  • Works in 4 steps: Detect platform → Identify the PR/MR/CL → Loop → …
  • A large PR that Greptile will not review because too many files changed
  • SKILL.md covers Inputs, Instructions and Output format
  • Calls gh, glab and jq

What it does

Greploop Apps runs a fix loop on a GitHub pull request, a GitLab merge request or a shelved Perforce changelist until Greptile's review reaches a 5/5 confidence score with no unresolved comments. It is the same loop as the plain greploop skill, except reviews are triggered by commenting @greptile-apps, which avoids the file-count limit that makes Greptile refuse very large PRs with a message about too many files changed. Because auto-review skips those PRs, every push needs a fresh review comment.

The agent first detects the platform, checking Perforce and then the git remote, with a --vcs flag to override for self-hosted GitLab hosts. It identifies the PR, MR or changelist, then cycles: push or re-shelve, wait for checks, trigger the review, read Greptile's findings and fix them. The loop stops after at most --max-iterations cycles, 10 by default, and reports the current state; raise it for large PRs or lower it to bound cost. Reference files document the GitLab API and GraphQL queries.

When your agent uses it

  • A large PR that Greptile will not review because too many files changed
  • Driving a GitLab merge request to a clean Greptile review
  • Iterating on a shelved Perforce changelist against Greptile feedback
  • Capping review-fix-push cycles with a maximum iteration count

Example prompts

  • “Run greploop-apps on this PR until Greptile gives it 5/5.”
  • “Use greploop-apps on the current GitLab merge request with a limit of 5 iterations.”
  • “Get my shelved changelist through Greptile review, using --vcs perforce.”

Requirements

  • git
  • An authenticated gh (GitHub CLI) or glab (GitLab CLI)
  • Greptile installed on the repository
  • An authenticated p4 CLI for Perforce
  • Compatibility (from SKILL.md): Requires git, gh (GitHub CLI) or glab (GitLab CLI) authenticated, and Greptile installed on the repo. For Perforce, requires p4 CLI authenticated.
  • Pre-approved tools (allowed-tools): Bash(gh:*), Bash(glab:*), Bash(git:*), Bash(p4:*)

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Detect platform
  2. Identify the PR/MR/CL
  3. Loop
  4. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 4b72f46. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(gh:*)
    • Bash(glab:*)
    • Bash(git:*)
    • Bash(p4:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • glab
    • jq
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, glab and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires git, gh (GitHub CLI) or glab (GitLab CLI) authenticated, and Greptile installed on the repo. For Perforce, requires p4 CLI authenticated.

    From compatibility in the SKILL.md frontmatter.

Context cost

Greploop Apps loads about 3.6k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 113 tokens; SKILL.md has 1,045 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from michaelshimeles/skills at commit 4b72f46, republished under its MIT licence (© michaelshimeles). 1,045 words, ~3,625 tokens.

Download SKILL.mdSave it as .claude/skills/greploop-apps/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
greploop-apps
description
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments. Identical to greploop, but triggers reviews by tagging @greptile-apps, which bypasses Greptile's file-count limit on huge PRs that the plain @greptile mention refuses to review. Use when the user wants to fully optimize a large PR/MR/CL against Greptile's code review standards.
allowed-tools
Bash(gh:*), Bash(glab:*), Bash(git:*), Bash(p4:*)
compatibility
Requires git, gh (GitHub CLI) or glab (GitLab CLI) authenticated, and Greptile installed on the repo. For Perforce, requires p4 CLI authenticated.
license
MIT
metadata.author
greptileai
metadata.version
1.3

Greploop Apps

Iteratively fix a PR/MR/CL until Greptile gives a perfect review: 5/5 confidence, zero unresolved comments. This variant tags @greptile-apps to trigger reviews, which bypasses the file-count limit that makes Greptile skip huge PRs (e.g. "Too many files changed for review"). Because auto-review skips those PRs, every push needs a fresh @greptile-apps review comment.

Inputs

  • PR/MR/CL number (optional): If not provided, detect the PR/MR for the current branch, or the default pending changelist for p4.
  • --max-iterations N (optional, default 10): cap on review-fix-push cycles before the loop stops and reports the current state. Raise it for large PRs where Greptile keeps surfacing new findings; lower it to bound cost.

Instructions

0. Detect platform

First check for Perforce, then fall back to git remote detection:

bash
# Check for Perforce environment
if p4 info >/dev/null 2>&1; then
  VCS="perforce"
else
  REMOTE_URL=$(git remote get-url origin)
  if echo "$REMOTE_URL" | grep -qi "gitlab"; then
    VCS="gitlab"
  else
    VCS="github"
  fi
fi

For self-hosted GitLab instances whose hostname doesn't contain "gitlab", the user can override by passing --vcs gitlab as an input. For Perforce, pass --vcs perforce.

1. Identify the PR/MR/CL

GitHub:

bash
gh pr view --json number,headRefName -q '{number: .number, branch: .headRefName}'

GitLab:

bash
glab mr view --output json | jq '{iid: .iid, branch: .source_branch}'

Switch to the PR/MR branch if not already on it.

Perforce:

bash
# List pending changelists for current user/client
p4 changes -s pending -u $P4USER -c $P4CLIENT

# Describe a specific CL
p4 describe -s <CL_NUMBER>

Ensure the correct workspace (p4 client) is set before proceeding.

Key field differences:

  • GitHub: number, headRefName, headRefOid
  • GitLab: iid, source_branch, sha
  • Perforce: changelist number, P4CLIENT, shelved files
2. Loop

Repeat the following cycle at most --max-iterations times (default 10) to avoid runaway loops.

A. Trigger Greptile review

Push/shelve the latest changes (if any):

GitHub/GitLab:

bash
git push

Perforce:

bash
# Re-shelve to update the shelved files for review
p4 shelve -f -c <CL_NUMBER>

Wait for checks to start after push/shelve:

bash
sleep 5

GitHub — check if Greptile is already running before posting a new trigger comment:

bash
GREPTILE_STATE=$(gh pr checks <PR_NUMBER> --json name,state | jq -r '.[] | select(.name | test("greptile"; "i")) | .state')

If Greptile is not already running (PENDING or IN_PROGRESS), request a fresh review:

bash
if [ "$GREPTILE_STATE" != "PENDING" ] && [ "$GREPTILE_STATE" != "IN_PROGRESS" ]; then
  gh pr comment <PR_NUMBER> --body "@greptile-apps review"
fi

Then poll for the Greptile check run to complete:

bash
HEAD_SHA=$(gh pr view <PR_NUMBER> --json headRefOid -q .headRefOid)
ATTEMPTS=0
MAX_ATTEMPTS=60
POLL_INTERVAL_SECONDS=10

while true; do
  ATTEMPTS=$((ATTEMPTS + 1))
  if [ "$ATTEMPTS" -gt "$MAX_ATTEMPTS" ]; then
    echo "Timed out waiting for the Greptile check run after approximately 10 minutes." >&2
    exit 1
  fi

  GREPTILE_CHECK=$(gh api "repos/{owner}/{repo}/commits/$HEAD_SHA/check-runs" \
    --jq '.check_runs[] | select(.name | test("greptile"; "i"))' 2>/dev/null)
  
  if [ -z "$GREPTILE_CHECK" ]; then
    echo "Waiting for Greptile check to appear..."
    sleep "$POLL_INTERVAL_SECONDS"
    continue
  fi
  
  STATUS=$(echo "$GREPTILE_CHECK" | jq -r '.status // "completed"')
  CONCLUSION=$(echo "$GREPTILE_CHECK" | jq -r '.conclusion // "pending"')
  
  if [ "$STATUS" = "completed" ]; then
    if [ "$CONCLUSION" = "success" ]; then
      echo "Greptile check passed!"
    else
      echo "Greptile check completed with: $CONCLUSION"
    fi
    break
  fi
  
  echo "Waiting for Greptile... (status: $STATUS)"
  sleep "$POLL_INTERVAL_SECONDS"
done

Huge-PR fallback: on PRs over Greptile's file limit, the tagged review may never create a check run for the new head — Greptile instead edits its existing summary comment when it finishes. If the check run has not appeared after a few attempts, poll the latest Greptile-authored issue comment instead and stop when its updated_at moves past the time you posted the trigger and its body carries a confidence score (rather than the "Too many files changed" notice):

bash
gh api --paginate "repos/{owner}/{repo}/issues/<PR_NUMBER>/comments?per_page=100" \
  --jq '[.[] | select(.user.login | test("greptile"; "i"))] | sort_by(.updated_at) | last | {updated_at, body}'

If polling times out, stop the greploop workflow and report the timeout. Do not continue with stale or missing review results.

GitLab — check if Greptile is already running before posting a trigger comment:

bash
PIPELINES=$(glab api "projects/:fullpath/merge_requests/<MR_IID>/pipelines")
GREPTILE_RUNNING=$(echo "$PIPELINES" | jq '[.[] | select(.status == "running" or .status == "pending")] | length')

If no pipeline is running, post a trigger comment:

bash
if [ "$GREPTILE_RUNNING" = "0" ]; then
  glab mr note <MR_IID> --message "@greptile-apps review"
fi

Perforce — Perforce does not have native check runs. If Greptile is integrated via a webhook triggered on p4 shelve, wait for it to process. Check your Greptile installation's webhook endpoint or dashboard for the review status. Poll by re-fetching the Greptile review comment on the CL until a score appears.

Then poll for the Greptile pipeline job to complete (see GitLab API reference):

bash
HEAD_SHA=$(glab mr view <MR_IID> --output json | jq -r '.sha')
ATTEMPTS=0
MAX_ATTEMPTS=60
POLL_INTERVAL_SECONDS=10

while true; do
  ATTEMPTS=$((ATTEMPTS + 1))
  if [ "$ATTEMPTS" -gt "$MAX_ATTEMPTS" ]; then
    echo "Timed out waiting for the Greptile pipeline job after approximately 10 minutes." >&2
    exit 1
  fi

  PIPELINES=$(glab api "projects/:fullpath/merge_requests/<MR_IID>/pipelines")
  # Find the most recent pipeline for this SHA
  PIPELINE_ID=$(echo "$PIPELINES" | jq -r --arg sha "$HEAD_SHA" \
    '[.[] | select(.sha == $sha)] | sort_by(.id) | last | .id // empty')

  if [ -z "$PIPELINE_ID" ]; then
    echo "Waiting for Greptile pipeline to appear..."
    sleep "$POLL_INTERVAL_SECONDS"
    continue
  fi

  JOBS=$(glab api "projects/:fullpath/pipelines/$PIPELINE_ID/jobs")
  GREPTILE_JOB=$(echo "$JOBS" | jq '.[] | select(.name | test("greptile"; "i"))')

  if [ -z "$GREPTILE_JOB" ]; then
    echo "Waiting for Greptile job to appear..."
    sleep "$POLL_INTERVAL_SECONDS"
    continue
  fi

  JOB_STATUS=$(echo "$GREPTILE_JOB" | jq -r '.status')

  if [ "$JOB_STATUS" = "success" ] || [ "$JOB_STATUS" = "failed" ] || [ "$JOB_STATUS" = "canceled" ]; then
    echo "Greptile job completed with: $JOB_STATUS"
    break
  fi

  echo "Waiting for Greptile... (status: $JOB_STATUS)"
  sleep "$POLL_INTERVAL_SECONDS"
done

If polling times out, stop the greploop workflow and report the timeout. Do not continue with stale or missing review results.

B. Fetch Greptile review results

Greptile may surface its score in several places — check all of the relevant sources:

GitHub:

1. PR description (body):

bash
gh pr view <PR_NUMBER> --json body -q '.body'

2. General PR comments (issue comments):

bash
gh api --paginate "repos/{owner}/{repo}/issues/<PR_NUMBER>/comments?per_page=100"

Filter for Greptile-authored comments and use the body from the most recently updated comment (updated_at), not the most recently created comment. Greptile may edit the same general PR comment on each review cycle; parse the current body, including the "Prompt to fix all with AI" section, before deciding there are no remaining issues.

3. PR reviews:

bash
gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/reviews

Look for the most recent entry from greptile-apps[bot] or greptile-apps-staging[bot].

GitLab:

1. MR description (body):

bash
glab mr view <MR_IID> --output json | jq -r '.description'

2. MR notes (comments):

bash
glab api "projects/:fullpath/merge_requests/<MR_IID>/notes"

Filter for notes from the Greptile bot user (check the author.username field — the exact username may vary per installation; verify on first run).

Perforce:

1. CL description:

bash
p4 describe -s <CL_NUMBER>

Check the description field for a Greptile-appended score block.

2. CL comments / review notes: If your installation uses a review tool such as Helix Swarm, fetch comments via its API.

Show full SKILL.md (416 more words)Show less

Example (Swarm API): GET /api/v11/comments?topic=reviews/<REVIEW_ID>

Response fields of interest typically include:

  • user (author username)
  • body (comment text)
  • flags/state indicating whether the comment is resolved

Filter to comments authored by the Greptile bot:

  • Prefer exact username match if known
  • Otherwise, use a heuristic where the author name contains "greptile" (case-insensitive)

For all platforms, parse the text for:

  • Confidence score: a pattern like 3/5 or 5/5 (or Confidence: 3/5).
  • Comment count: Number of inline review comments noted in the summary.

Use whichever source has the most recently updated score. For GitHub, prefer updated_at from issue comments when comparing an edited Greptile summary against older review entries.

Also fetch all unresolved inline comments:

GitHub:

bash
gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments

Also carry forward actionable items from the latest Greptile general PR comment, especially the "Prompt to fix all with AI" section, even if the inline comment endpoint returns zero unresolved comments.

GitLab:

bash
glab api "projects/:fullpath/merge_requests/<MR_IID>/discussions"

Filter to DiffNote type discussions (notes[0].type == "DiffNote") from Greptile that are on the latest commit and not yet resolved ("resolved": false).

Perforce: If using Swarm:

Fetch inline diff comments for the review associated with the CL

GET /api/v11/comments?topic=reviews/<REVIEW_ID>

Filter to comments from the Greptile bot user that have not been marked as resolved/addressed.

C. Check exit conditions

Stop the loop if any of these are true:

  • Confidence score is 5/5 AND there are zero unresolved comments
  • --max-iterations reached (report current state)
D. Fix actionable comments

For each unresolved Greptile comment:

  1. Read the file and understand the comment in context.
  2. Determine if it's actionable (code change needed) or informational.
  3. If actionable, make the fix.
  4. If informational or a false positive, note it but still resolve the thread.
E. Resolve threads

GitHub — fetch unresolved review threads and resolve all that have been addressed (see GraphQL reference):

bash
gh 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:

bash
gh api graphql -f query='
mutation {
  t1: resolveReviewThread(input: {threadId: "ID1"}) { thread { isResolved } }
  t2: resolveReviewThread(input: {threadId: "ID2"}) { thread { isResolved } }
}'

GitLab — fetch unresolved discussions and resolve each one (see GitLab API reference):

bash
glab api "projects/:fullpath/merge_requests/<MR_IID>/discussions?per_page=100"

Filter for "resolved": false discussions. Then resolve each by its id:

bash
glab api --method PUT \
  "projects/:fullpath/merge_requests/<MR_IID>/discussions/<DISCUSSION_ID>" \
  --field resolved=true

Repeat for each unresolved discussion ID. (GitLab has no batch resolution — loop through each one.)

F. Commit and push / re-shelve

GitHub/GitLab:

bash
git add -A
git commit -m "address greptile review feedback (greploop iteration N)"
git push

Perforce:

bash
# Stage changes back into the CL and re-shelve for the next review round
p4 shelve -f -c <CL_NUMBER>

Wait for checks to start after push/shelve:

bash
sleep 5

Then go back to step A.

3. Report

After exiting the loop, summarize:

FieldValue
PlatformGitHub / GitLab / Perforce
IterationsN
Final confidenceX/5
Comments resolvedN
Remaining commentsN (if any)

If the loop exited due to max iterations, list any remaining unresolved comments and suggest next steps.

Output format

Greploop complete.
  Platform:      GitHub
  Iterations:    2
  Confidence:    5/5
  Resolved:      7 comments
  Remaining:     0

If not fully resolved (<N> is the effective cap — the --max-iterations value supplied, or 10 by default):

Greploop stopped after <N> iterations (--max-iterations <N>).
  Platform:      GitLab
  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"

Perforce example:

Greploop complete.
  Platform:      Perforce
  Changelist:    12345
  Iterations:    3
  Confidence:    5/5
  Resolved:      9 comments
  Remaining:     0

© michaelshimeles, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in greploop-apps of michaelshimeles/skills.

  • SKILL.md
  • LICENSE
  • references/gitlab-api.md
  • references/graphql-queries.md

Open the folder on GitHubat commit 4b72f46

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in michaelshimeles/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Greploop Apps next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Greploop Apps compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Greploop Apps this skillmichaelshimeles/skills1.3k1 repos~3.6kAutomated safety check: PassMIT
PR Review State Fetchprisma/orm48k—~767Automated safety check: PassApache-2.0
Visual Reviewai-dynamo/dynamo8.3k—~4.5kAutomated safety check: PassApache-2.0
PR Triagertk-ai/rtk83k—~2.5kAutomated safety check: NotesApache-2.0
Difit Reviewyoshiko-pg/difit3.2k—~1.2kAutomated safety check: PassMIT
Address PR Feedback for ruby-gitruby-git/ruby-git1.8k—~657Automated safety check: PassMIT

Similar skills

  • Official

    Fetches a pull request's canonical review state as JSON, validates it, and renders markdown, a text summary and triage target files from it using bundled scripts.

    48k GitHub stars~767 tokensUpdated today
    DevelopmentAuto-check passed
  • Visual Review

    ai-dynamo/dynamo

    Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…

    8.3k GitHub stars~4.5k tokensUpdated today
    DevelopmentAuto-check passed
  • PR Triage

    rtk-ai/rtk

    Audits a repository's open pull requests, deep-reviews chosen ones and drafts review comments that are only posted after you approve them.

    83k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check: notes
  • Difit Review

    yoshiko-pg/difit

    Review a specific diff (branch, commit, or GitHub PR) and show the findings as comments inside difit, the local diff viewer.

    3.2k GitHub stars~1.2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…

    1.8k GitHub stars~657 tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • ExecuTorch PR Review

    pytorch/executorch

    Reviews ExecuTorch pull requests or local branches for what CI cannot check, using a checklist, with an optional detailed line-by-line mode.

    5.1k GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check passed

More from michaelshimeles/skills

  • Before and After Screenshots

    michaelshimeles/skills

    Captures before and after screenshots of two URLs or images with the Vercel before-and-after CLI, uploads them and can add a markdown comparison to a pull request.

    1.3k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Evidence-Driven Testing

    michaelshimeles/skills

    Records an annotated screen recording of the agent testing an app hands-on, then posts the video and a results summary to the PR and tracker issue.

    1.3k GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • New Feature

    michaelshimeles/skills

    Start a new task in an isolated Git worktree branched from origin/main so multiple agents can work on the same repo in parallel without conflicts.

    1.3k GitHub starsUsed in 1 repo~699 tokens
    Auto-check passed

Works with

Categories

Questions about Greploop Apps

What does Greploop Apps do?

Loops on a large pull request, merge request or Perforce changelist, fixing Greptile findings until it scores 5/5 with no unresolved comments. Greploop Apps runs a fix loop on a GitHub pull request, a GitLab merge request or a shelved Perforce changelist until Greptile's review reaches a 5/5 confidence score with no unresolved comments. It is the same loop as the plain greploop skill, except reviews are triggered by commenting @greptile-apps, which avoids the file-count limit that makes Greptile refuse very large PRs with a message about too many files changed.

When should I use Greploop Apps?

Greploop Apps fits situations like: A large PR that Greptile will not review because too many files changed; driving a GitLab merge request to a clean Greptile review; iterating on a shelved Perforce changelist against Greptile feedback; capping review-fix-push cycles with a maximum iteration count.

How do I install Greploop Apps in Claude Code?

Run `npx skills add michaelshimeles/skills --skill greploop-apps -a claude-code`. Or copy the skill folder (greploop-apps in michaelshimeles/skills) into .claude/skills/greploop-apps in your project. Claude Code loads it when a task matches its description.

How do I install Greploop Apps in Codex?

Run `npx skills add michaelshimeles/skills --skill greploop-apps -a codex`. Or copy the skill folder (greploop-apps in michaelshimeles/skills) into .agents/skills/greploop-apps in your project. Codex loads it when a task matches its description.

Can I use Greploop Apps in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add michaelshimeles/skills --skill greploop-apps -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/greploop-apps, .gemini/skills/greploop-apps, .github/skills/greploop-apps and .opencode/skills/greploop-apps in your project.

What does Greploop Apps need to run?

Going by SKILL.md and its folder, Greploop Apps needs the command-line tools its instructions call (gh, glab, jq and git). Our summary lists: git; An authenticated gh (GitHub CLI) or glab (GitLab CLI); Greptile installed on the repository; An authenticated p4 CLI for Perforce. Its frontmatter pre-approves these tools: Bash(gh:*), Bash(glab:*), Bash(git:*), Bash(p4:*). Compatibility (from SKILL.md): Requires git, gh (GitHub CLI) or glab (GitLab CLI) authenticated, and Greptile installed on the repo. For Perforce, requires p4 CLI authenticated..

Does Greploop Apps access the network?

SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Greploop Apps safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Greploop Apps use?

Greploop Apps is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Greploop Apps use?

About 3.6k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 988 tokens, read only when the agent opens those files.

What are the alternatives to Greploop Apps?

Skills that share tags, products or a category with Greploop Apps: PR Review State Fetch (prisma/orm, 48k stars), Visual Review (ai-dynamo/dynamo, 8.3k stars), PR Triage (rtk-ai/rtk, 83k stars) and Difit Review (yoshiko-pg/difit, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Greploop Apps?

michaelshimeles (a GitHub user) maintains it in michaelshimeles/skills, which has 1,274 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 4, 2026.

Source: michaelshimeles/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.