Agent skill

Review PR

by zetaalphavector in zetaalphavector/RAGElo

Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness.

Apache-2.0Auto-check passedDevelopment

Install Review PR

skills CLI
$ npx skills add zetaalphavector/RAGElo --skill review-pr -a claude-code

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

GitHub CLI
$ gh skill install zetaalphavector/RAGElo review-pr --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/zetaalphavector/RAGElo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/review-pr .claude/skills/review-pr && 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
review-pr
GitHub stars
133
Token cost
~5k tokens
SKILL.md length
2,045 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness.

  • Works in 10 steps: Gather PR Context → Verify Implementation Matches PR… → Check for Breaking Changes → …
  • Asked to review a PR
  • SKILL.md covers Overview, Output Format, Step 1: Gather PR Context and Step 2: Verify Implementation…, plus 5 more sections
  • Calls gh, jq and git

What it does

Review PR is an agent skill from zetaalphavector/RAGElo. Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness. Use when asked to review a PR, validate code changes, or check if a PR is ready for merge.

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Pull requests. The repository describes itself as: RAGElo is a set of tools that helps you selecting the best RAG-based LLM agents by using an Elo ranker. The licence is Apache-2.0.

When your agent uses it

  • Asked to review a PR
  • Validate code changes
  • Check if a PR is ready for merge

Example prompts

  • “Use the review-pr skill to review pull requests for code quality, pattern conformance, architecture alignment, security, and completeness”
  • “/review-pr”

Requirements

  • Python 3

Workflow steps

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

  1. Gather PR Context
  2. Verify Implementation Matches PR Description
  3. Check for Breaking Changes
  4. Check for Related GitHub Issues
  5. Pattern Conformance Analysis (Be Ruthless)
  6. Code Style Conformance (Detect AI Slop)
  7. Testing Quality
  8. Architecture Alignment
  9. Security Review
  10. Generate Review Summary

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • jq
    • git
    • pytest
    • ruff
    • mypy
    • pip

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

  • Network

    No URLs in SKILL.md. Its commands use gh, git and pip, 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.

Context cost

Review PR loads about 5k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 2,045 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~5k

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 zetaalphavector/RAGElo at commit 6f23f0f, republished under its Apache-2.0 licence (© zetaalphavector). 2,045 words, ~5,022 tokens.

Download SKILL.mdSave it as .claude/skills/review-pr/SKILL.md (or your agent's skills folder).
name
review-pr
description
Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness. Use when asked to review a PR, validate code changes, or check if a PR is ready for merge.

PR Review Skill

Overview

RAGElo is a Python library and CLI for evaluating RAG (Retrieval-Augmented Generation) agents using Elo-based tournament ranking. This skill reviews pull requests to ensure they:

  • Actually implement what the PR description claims
  • Follow existing codebase patterns (the Chameleon Principle)
  • Match the code style of the existing codebase
  • Align with RAGElo's established architecture (Factory+Registry, async evaluators, Pydantic configs)
  • Address security concerns properly
  • Introduce no breaking changes to the public API (or have proper migration paths)
  • Relate to existing GitHub issues appropriately
The Chameleon Principle

The codebase should feel like it was architected by one mind, not assembled by mercenaries.

Every PR must introduce changes that blend seamlessly with existing patterns. When reviewing:

  • Find the existing pattern first - Before accepting any change, search for how similar problems are already solved
  • Reject foreign patterns - If the PR introduces a pattern that doesn't exist elsewhere, flag it ruthlessly
  • Suggest the existing way - Always recommend the established approach over novel solutions
  • Be ruthless - Pattern violations are not style nits; they are architectural debt

This principle applies to everything: architecture, code organization, naming conventions, testing approaches, and code style. AI agents are notorious for ignoring existing patterns and producing the same generic slop everywhere. The reviewer must catch this.

Output Format

The agent must produce:

  1. Summary - Brief overview of what the PR does
  2. Implementation Verification - Does the code actually do what the PR claims?
  3. Breaking Changes - Any backward-incompatible changes to the public API and migration paths
  4. Pattern & Style Conformance - Does the PR follow existing codebase patterns and style?
  5. Architecture Alignment - Is the PR consistent with RAGElo's Factory+Registry architecture?
  6. Code Quality & Testing - Test coverage, test quality, code organization
  7. Issue Linkage - Related GitHub issues
  8. Security Concerns - Issues identified against security requirements
  9. Recommendations - Required changes, suggestions, and approval status

Step 1: Gather PR Context

Get the PR description
bash
gh pr view --json title,body,number | jq '.'

The PR description tells you what the author claims the PR does. Your job is to verify this claim against the actual code.

Get the list of commits
bash
git log origin/master..HEAD --oneline
Get the full diff
bash
git diff origin/master..HEAD
Get list of changed files
bash
git diff --name-only origin/master..HEAD

CRITICAL: Do not rely on commit messages or PR descriptions alone. You MUST read the actual code changes to understand what was done. The PR description may be incomplete, misleading, or outright wrong.


Step 2: Verify Implementation Matches PR Description

This is a primary concern. Compare what the PR description claims against what the code actually does:

  • Does the code implement all features/fixes mentioned in the description?
  • Does the code do anything NOT mentioned in the description?
  • Are there discrepancies between stated behavior and actual behavior?

If there are discrepancies:

⚠️ Implementation Mismatch

PR claims: [what the description says]

Code actually does: [what you found in the diff]

Missing: [features claimed but not implemented]

Undocumented: [changes made but not mentioned]


Step 3: Check for Breaking Changes

RAGElo is a published library (pip install ragelo). We never introduce breaking changes without proper migration paths.

Identify breaking changes in:
  • Public Python API (functions in ragelo/__init__.py, factory functions like get_retrieval_evaluator(), get_llm_provider(), get_agent_ranker())
  • CLI interface (Typer commands in ragelo/cli/)
  • Pydantic configuration classes (removed fields, changed types, changed defaults)
  • Data model types (ragelo/types/evaluables.py, ragelo/types/results.py)
  • Experiment JSON/JSONL serialization format
  • Enum values in ragelo/types/types.py (removing or renaming enum members)

For each breaking change:

🚨 Breaking Change Identified

What breaks: [Describe the incompatibility]

Affected consumers: [Who/what depends on this]

Migration path provided: [Yes/No - describe if present]

Required action: [How to make this backward compatible, or document migration]


Browse recent open issues
bash
gh issue list --limit 50 --json number,title | jq -r '.[] | "\(.number): \(.title)"'
Search by keywords from the PR
bash
gh issue list --search "<keyword>" --json number,title | jq -r '.[] | "\(.number): \(.title)"'

If there's an obvious tracking issue that should be linked but isn't in the PR description:

💡 Suggested Issue Link: This PR appears to address issue #123 ([issue title]). Consider adding Closes #123 or Relates to #123 to the PR description.


Step 5: Pattern Conformance Analysis (Be Ruthless)

The cardinal rule: Find the existing pattern FIRST

Before evaluating ANY code change, actively search the codebase for how similar problems are already solved.

Pattern discovery process
  1. Identify the problem category

    • New evaluator? → Check existing evaluators in ragelo/evaluators/retrieval_evaluators/ and ragelo/evaluators/answer_evaluators/
    • New LLM provider? → Check ragelo/llm_providers/openai_client.py and ragelo/llm_providers/ollama_client.py
    • Configuration? → Check existing configs in ragelo/types/configurations/
    • New data type? → Check ragelo/types/evaluables.py and ragelo/types/results.py
    • Prompt template? → Check existing Jinja2 templates in evaluator classes
  2. Search for analogous implementations Use semantic_search or grep_search to find 3+ examples of the same pattern to confirm it's established.

  3. Document the existing pattern

    • Where is it used?
    • What are its characteristics?
    • Why was it chosen?
RAGElo-specific pattern conformance checklist

Factory + Registry pattern:

  • New components registered via decorator: @Factory.register(EnumType.NAME)
  • Enum value added to ragelo/types/types.py (RetrievalEvaluatorTypes, AnswerEvaluatorTypes, LLMProviderTypes, AgentRankerTypes)
  • Factory create() method works with the new component
  • Convenience function updated (e.g., get_retrieval_evaluator(), get_llm_provider())

Evaluator pattern:

  • Inherits from BaseRetrievalEvaluator or BaseAnswerEvaluator
  • Implements evaluate_async() as the core abstract method
  • Uses self.llm_provider for LLM calls — does not instantiate its own provider
  • Returns proper result type (RetrievalEvaluatorResult, AnswerEvaluatorResult, PairwiseGameEvaluatorResult)
  • Uses Jinja2 Template for prompt formatting (not f-strings or .format())
  • Has a corresponding Pydantic config class in ragelo/types/configurations/

Configuration pattern:

  • Config class inherits from appropriate base (BaseEvaluatorConfig, BaseRetrievalEvaluatorConfig, BaseAnswerEvaluatorConfig, LLMProviderConfig)
  • Uses Pydantic BaseModel conventions (type annotations, defaults, validators)
  • Config class is discoverable via get_config_class() introspection

LLM Provider pattern:

  • Inherits from BaseLLMProvider
  • Implements call_async() returning LLMResponseType[T_Schema]
  • Accepts LLMProviderConfig (or subclass) in constructor
  • Registered via @LLMProviderFactory.register(LLMProviderTypes.NAME)
  • Supports structured output via response_schema parameter

Data model pattern:

  • Core types (Query, Document, AgentAnswer, PairwiseGame) used as-is — not subclassed unnecessarily
  • Result types inherit from EvaluatorResult
  • LLM answer schemas in ragelo/types/answer_formats.py use Pydantic BaseModel
  • Extra CSV columns → metadata dict pattern respected

Prompt templating pattern:

  • Jinja2 Template objects, not raw string formatting
  • Template variables match established names: {{ query.query }}, {{ document.text }}, {{ answer.text }}, {{ game.agent_a_answer.text }}
  • Metadata accessed via {{ query.metadata.column_name }}

CLI pattern:

  • Uses Typer (ragelo/cli/)
  • CLI parameters dynamically generated from Pydantic config classes
  • Follows existing subcommand structure
Red flags to ruthlessly reject

🚫 Novel patterns when established ones exist

  • "Let's use a different approach here" → NO. Use the existing approach.

🚫 Inconsistent naming

  • user_id in one place, userId in another → NO. Match existing convention (snake_case throughout).

🚫 Bypassing the Factory+Registry pattern

  • Directly instantiating evaluators instead of using get_retrieval_evaluator() → NO. Use the factory.

🚫 New dependencies for solved problems

  • "Let's add library X" when existing code solves it → NO. Use existing solution.

🚫 Different error handling

  • Custom exception hierarchies that don't match existing → NO. Use established patterns.

🚫 f-strings or .format() for LLM prompts

  • All prompts must use Jinja2 Template objects → NO exceptions.

🚫 Synchronous-only evaluator implementations

  • All evaluators must implement evaluate_async() → NO synchronous-only variants.
When flagging pattern violations

Always show the existing pattern as evidence:

Pattern Violation: PR uses f-string for prompt formatting

Existing Pattern: Codebase uses Jinja2 Template for all LLM prompts

Evidence: Found in ragelo/evaluators/retrieval_evaluators/reasoner_evaluator.py, ragelo/evaluators/answer_evaluators/pairwise_evaluator.py

Required Fix: Convert to Jinja2 Template


Step 6: Code Style Conformance (Detect AI Slop)

AI coding agents are notorious for producing generic, pattern-ignorant code. The codebase must read as if a single person wrote it. Flag these common AI slop indicators:

Linting & Formatting

RAGElo uses ruff for linting and formatting:

  • Rules: E, F, I (errors, pyflakes, isort)
  • Line length: 119 characters
  • Type checking: mypy with pydantic.mypy plugin

Verify with:

bash
ruff check ragelo/
ruff format --check ragelo/
mypy ragelo/
Class Design

Single Responsibility Principle:

  • Each class has one clear responsibility
  • Classes are not "god objects" doing everything

Dependency Injection:

  • BaseLLMProvider is injected into evaluators, not instantiated inside them
  • Evaluators receive config objects, not raw kwargs
Imports

Absolute imports from ragelo package:

  • ✅ from ragelo.types.evaluables import Query
  • ❌ from .evaluables import Query
  • ❌ from ..types.evaluables import Query

Note: from __future__ import annotations is used throughout the codebase for forward references.

Show full SKILL.md (805 more words)Show less
Comments and Docstrings

Minimal, meaningful documentation:

  • No useless comments stating the obvious
  • Docstrings only when function signature is not self-explanatory

Style Violation: Excessive comments/docstrings

python
def get_evaluator(name: str) -> BaseEvaluator:
    """Get an evaluator by name.
    
    Args:
        name: The name of the evaluator
    
    Returns:
        The evaluator instance
    """

Required Fix: Remove docstring - the function signature is self-explanatory

Async Conventions
  • Core evaluation logic is in evaluate_async() methods
  • call_async_fn() utility used for sync→async bridge (from ragelo.utils)
  • asyncio.wait() used for bounded concurrent execution in evaluate_experiment()
  • No mixing of sync and async patterns within the same flow

Step 7: Testing Quality

Testing Patterns in RAGElo

RAGElo uses pytest with pytest-asyncio and pytest-mock.

Key testing conventions:

  • MockLLMProvider in tests/conftest.py returns deterministic responses based on the requested Pydantic schema
  • experiment fixture loads test data from tests/data/ (2 queries, 4 docs, 2 agents)
  • OpenAI integration tests gated with @pytest.mark.requires_openai (skipped unless --runopenai)
  • Tests organized under tests/unit/ and tests/cli/
Test Quality Checklist
  • Uses MockLLMProvider or similar fixture — not hand-rolled mocks that mirror implementation
  • Tests the public interface (factory functions, evaluate_experiment()) not internal methods
  • Uses existing fixtures (experiment, llm_provider_config, etc.)
  • OpenAI-dependent tests properly gated with @pytest.mark.requires_openai
  • Async tests use pytest-asyncio conventions

Test Coverage Priority:

  1. Happy paths (highest priority)
  2. Important edge cases (malformed input, missing fields)
  3. Error handling paths
  4. NOT: Trivial cases that add no value

AI Slop Test Indicators:

  • Testing obvious getters/setters
  • Excessive mocking that mirrors implementation details
  • Tests that break when implementation changes (brittle)
  • Not using existing fixtures and patterns from conftest.py
Running Tests
bash
# All tests (OpenAI skipped)
pytest tests/

# With OpenAI integration tests
pytest tests/ --runopenai

# Single file
pytest tests/unit/test_experiment.py -v

Step 8: Architecture Alignment

RAGElo Architecture Overview

Verify the PR respects these architectural patterns:

Factory + Registry Pattern:

  • All major components use decorator-based factory registration
  • Enum types in ragelo/types/types.py define valid component names
  • Registration: @Factory.register(EnumType.NAME) on the class
  • Instantiation: via factory functions (get_retrieval_evaluator(), get_llm_provider(), get_agent_ranker())

Evaluator Hierarchy:

BaseEvaluator (ragelo/evaluators/base_evaluator.py) — async-first, abstract
├── BaseRetrievalEvaluator — evaluates document relevance (Query + Document -> score)
│   Implementations: Reasoner, RDNAM, DomainExpert, FewShot, CustomPrompt
└── BaseAnswerEvaluator — evaluates answer quality (Query + AgentAnswer -> score/winner)
    Implementations: Pairwise, ChatPairwise, CustomPairwise, DomainExpert, CustomPrompt

LLM Providers:

  • BaseLLMProvider → call_async(input, response_schema) → LLMResponseType[T]
  • Implementations: OpenAIProvider, OllamaProvider

Data Model Layering:

  • Core evaluables in ragelo/types/evaluables.py: Query, Document, AgentAnswer, PairwiseGame
  • Results in ragelo/types/results.py: EvaluatorResult and subclasses
  • LLM answer schemas in ragelo/types/answer_formats.py: Pydantic models for structured LLM output
  • Configs in ragelo/types/configurations/: one config class per component

Experiment Orchestration:

  • Experiment class in ragelo/types/experiment.py is the central orchestrator
  • Loads from CSV, manages evaluation state, caches to avoid redundant LLM calls, persists to JSON/JSONL

If architecture violations are found:

⚠️ Architecture Violation: [Describe the violation]

Expected pattern: [Explain the correct RAGElo pattern with file references]

Required Fix: [Specific remediation]


Step 9: Security Review

Review security concerns relevant to a library that makes LLM API calls. Do NOT output a checklist. Instead, for each concern identified, use this format:

Security Requirements to Verify
  • No hardcoded API keys, secrets, or credentials (use environment variables)
  • API keys handled via SecretStr or similar — not logged or printed
  • Jinja2 templates not vulnerable to template injection from user-supplied metadata
  • No arbitrary code execution from user-supplied prompts or configuration
  • Dependencies properly declared in pyproject.toml with version constraints
  • Cached results (JSON/JSONL files) don't leak sensitive information
Output Format for Security Issues

For each security concern:

🔴 Security Concern: [Brief title]

Issue: [What the code does wrong or fails to do]

Risk: [Potential exploit, impact, or vulnerability]

Required Fix: [Specific remediation steps]

If no security concerns are identified, state: "No security concerns identified in this review."


Step 10: Generate Review Summary

Compile findings into a structured review:

markdown
# PR Review: [PR Title]

## Summary
[1-2 sentence overview of what the PR does]

## Implementation Verification
[✅ Matches PR description / ⚠️ Discrepancies found]
[List any mismatches between description and code]

## Breaking Changes
[🚨 Breaking changes found / ✅ No breaking changes]
[List any breaking changes with migration path assessment]

## Pattern & Style Conformance
[✅ Passes / ⚠️ Issues Found]
[List any violations with required fixes]

## Architecture Alignment
[✅ Aligned / ⚠️ Violations Found]
[List any architecture violations]

## Code Quality & Testing
[✅ Good / ⚠️ Issues Found]
[List any testing or code quality issues]

## Issue Linkage
- **Related Issues**: [List or "None identified"]

## Security Concerns
[List concerns in Security Concern format, or "No security concerns identified"]

## Recommendations

### Required Changes (Blocking)
1. [Critical issues that must be fixed]

### Suggested Improvements (Non-blocking)
1. [Nice-to-have improvements]

## Approval Status
[✅ Approved / ⚠️ Approved with comments / 🚫 Changes requested]

What NOT to Do

❌ Do not approve without reading the actual code changes ❌ Do not trust PR descriptions without verification ❌ Do not skip pattern and style conformance checking ❌ Do not accept novel patterns when established ones exist ❌ Do not treat pattern violations as style preferences ❌ Do not ignore security concerns (especially API key handling) ❌ Do not allow breaking changes to the public API without migration paths ❌ Do not let the codebase feel like it was built by mercenaries ❌ Do not accept AI slop (generic, pattern-ignorant code) ❌ Do not accept tests that don't use existing fixtures from conftest.py ❌ Do not accept f-strings or .format() for LLM prompt construction ❌ Do not accept synchronous-only evaluator implementations ❌ Do not accept components that bypass the Factory+Registry pattern

What TO Do

✅ Verify code actually implements what the PR description claims ✅ Flag all breaking changes to the public Python API and CLI ✅ Search for existing patterns BEFORE evaluating changes - This is mandatory ✅ Cite specific file:line references when flagging violations ✅ Verify code style matches existing codebase (ruff rules, 119 char lines, snake_case) ✅ Verify new components follow Factory+Registry pattern with enum types ✅ Verify evaluators are async-first and use Jinja2 templates ✅ Verify testing follows existing patterns (MockLLMProvider, fixtures, @pytest.mark.requires_openai) ✅ Check for related GitHub issues ✅ Review API key handling and credential security ✅ Ruthlessly reject foreign patterns - Suggest the existing way instead ✅ Be a chameleon - Changes must blend seamlessly with existing code ✅ Flag monolith page files and demand decomposition into _lib/ and _components/ ✅ Flag duplicated UI patterns and utility functions — demand shared components/modules ✅ Flag complex inline JSX callbacks — demand named handler functions ✅ Provide specific, actionable feedback ✅ Distinguish between blocking and non-blocking issues

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

Files

Just SKILL.md in .agents/skills/review-pr of zetaalphavector/RAGElo.

Open the folder on GitHubat commit 6f23f0f

Compare with similar skills

Review PR 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.

Review PR compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review PR this skillzetaalphavector/RAGElo133—~5kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
PR Design DocOpenHands/OpenHands91k—~2.4kAutomated safety check: PassMIT
WooCommerce Code Reviewwoocommerce/woocommerce11k3 repos~1.1kAutomated safety check: PassCustom licence

Similar skills

  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • PR Design Doc

    OpenHands/OpenHands

    For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…

    91k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Record PR Demo

    payloadcms/payload

    A skill your agent uses when a Payload pull request needs a concise visual walkthrough for reviewers.

    45k GitHub stars~1k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from zetaalphavector/RAGElo

  • Create PR Description

    zetaalphavector/RAGElo

    Creates comprehensive PR descriptions by analyzing commits, code changes, and gathering context from issues.

    133 GitHub stars~1.8k tokensUpdated 16 days ago
    Auto-check passed

Categories

Questions about Review PR

What does Review PR do?

Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness. Review PR is an agent skill from zetaalphavector/RAGElo. Reviews pull requests for code quality, pattern conformance, architecture alignment, security, and completeness.

When should I use Review PR?

Review PR fits situations like: asked to review a PR; validate code changes; check if a PR is ready for merge.

How do I install Review PR in Claude Code?

Run `npx skills add zetaalphavector/RAGElo --skill review-pr -a claude-code`. Or copy the skill folder (.agents/skills/review-pr in zetaalphavector/RAGElo) into .claude/skills/review-pr in your project. Claude Code loads it when a task matches its description.

How do I install Review PR in Codex?

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

Can I use Review PR 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 zetaalphavector/RAGElo --skill review-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review-pr, .gemini/skills/review-pr, .github/skills/review-pr and .opencode/skills/review-pr in your project.

What does Review PR need to run?

Going by SKILL.md and its folder, Review PR needs the command-line tools its instructions call (gh, jq, git, pytest, ruff and mypy). Our summary lists: Python 3.

Does Review PR access the network?

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

Is Review PR 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 Review PR use?

Review PR is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Review PR use?

About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Review PR?

Skills that share tags, products or a category with Review PR: Finishing a Development Branch (obra/superpowers, 297k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars) and PR Design Doc (OpenHands/OpenHands, 91k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review PR?

zetaalphavector (a GitHub organization) maintains it in zetaalphavector/RAGElo, which has 133 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 24, 2026.

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