Review a GitHub pull request for a Rust codebase. An agent skill from apollographql/apollo-mcp-server.

MITAuto-check passedTesting & QA

Install Review

skills CLI
$ npx skills add apollographql/apollo-mcp-server --skill review -a claude-code

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

GitHub CLI
$ gh skill install apollographql/apollo-mcp-server review --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/apollographql/apollo-mcp-server.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/review .claude/skills/review && 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
GitHub stars
314
Token cost
~2.9k tokens
SKILL.md length
1,393 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Review a GitHub pull request for a Rust codebase. An agent skill from apollographql/apollo-mcp-server.

  • Works in 3 steps: Gather all context (single turn - run… → Analyze the changes → Manual review using the criteria below,…
  • Tasks that involve Test coverage
  • SKILL.md covers Usage, Best Practices Reference, Pull Request Context and Important: Review Only, plus 5 more sections
  • Calls gh

What it does

Review is an agent skill from apollographql/apollo-mcp-server. Review a GitHub pull request for a Rust codebase. Focuses on security, performance, test coverage, and Rust idioms. Runs in GitHub Actions and posts comments directly to the PR.

Its SKILL.md is about 2.9k 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 Testing & QA, covering Test coverage, GraphQL and CI/CD. It works with Rust, GitHub, GitHub Actions and Model Context Protocol. The licence is MIT.

When your agent uses it

  • Tasks that involve Test coverage
  • Tasks that involve GraphQL
  • Tasks that involve CI/CD

Example prompts

  • “/review”

Requirements

  • Pre-approved tools (allowed-tools): Bash(gh:*), Bash(git diff*), Bash(git log*), Bash(git show*), Read, Grep, Glob

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Gather all context (single turn - run all commands in parallel)
  2. Analyze the changes
  3. Manual review using the criteria below, referencing the best practices documents

What it can do on your machine

Read from SKILL.md and the folder at commit 04e4e6e. 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(git diff*)
    • Bash(git log*)
    • Bash(git show*)
    • Read
    • Grep
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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 loads about 2.9k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,393 words of instructions outside code blocks.

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

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 apollographql/apollo-mcp-server at commit 04e4e6e, republished under its MIT licence (© apollographql). 1,393 words, ~2,938 tokens.

Download SKILL.mdSave it as .claude/skills/review/SKILL.md (or your agent's skills folder).
name
review
description
Review a GitHub pull request for a Rust codebase. Focuses on security, performance, test coverage, and Rust idioms. Runs in GitHub Actions and posts comments directly to the PR.
allowed-tools
Bash(gh:*), Bash(git diff*), Bash(git log*), Bash(git show*), Read, Grep, Glob

Rust Pull Request Review

Review the current PR with a focus on high-signal, actionable feedback. Avoid nitpicks and style preferences unless they impact correctness or maintainability.

Usage

/review

This skill runs in GitHub Actions and automatically reviews the current PR, posting inline comments and a summary directly to GitHub.

Best Practices Reference

Before reviewing, familiarize yourself with Apollo's Rust best practices by reading the rust-best-practices skill. Read ALL relevant chapters in the same turn in parallel. Reference these files when providing feedback:

Additionally, you MUST ALWAYS read @.claude/MEMORIES.md which is a long term memory file of feedback you have been given on your reviews on previous PRs. You should utilize and consider these memories when determining what feedback to leave on the PR.

Pull Request Context

Fetch PR information:

PR Metadata: !gh pr view --json number,title,body,author,baseRefName,headRefName,commits,headRepository,headRepositoryOwner PR Diff: !gh pr diff PR Level Comments: !gh pr view --json comments Get existing inline review comments: gh api repos/{owner}/{repo}/pulls/{pr_number}/comments

Important: Review Only

DO NOT:

  • Pull down the branch or checkout the code
  • Run tests, clippy, cargo build, or any other commands
  • Attempt to run or validate the code locally

All automated checks (tests, linting, clippy, formatting) are handled by GitHub Actions. Focus exclusively on reviewing the code diffs.

Review Process

You have a maximum of 10 turns to complete this review. Allocate turns strategically:

  • Turn 1: Gather all context (parallel commands)
  • Turns 2-4: Analysis and evaluation
  • Turns 5+: Post comments and summary
  1. Gather all context (single turn - run all commands in parallel)

    • Fetch PR metadata, diff, and all existing comments
    • This gives you complete information before starting analysis
  2. Analyze the changes

    • Read the PR description and linked issues to understand intent
    • Review the complete diff to identify the scope
    • Review existing feedback to note what's already been raised
    • Do not duplicate comments that have already been made
    • Consider context from existing discussions when evaluating code
    • Important: If a user has responded to a comment/issue stating that they will not be following that suggestion, do not argue with the user, and do not bring up that suggestion again within this PR
  3. Manual review using the criteria below, referencing the best practices documents

    • Focus on high-signal findings only
    • Skip issues already raised by other reviewers
    • Batch findings into cohesive inline comments

Review Criteria

Security (Blocking)
  • Unsafe blocks: Is unsafe necessary? Is the invariant documented with // SAFETY:? Is there a safe alternative?
  • Input validation: Is user/external input validated before use?
  • Error exposure: Are internal errors or stack traces exposed to users?
  • Unwrap on external data: unwrap() or expect() on user input, network data, or file contents (see Chapter 4)
  • Secret handling: Are credentials, tokens, or keys properly handled (not logged, not in errors)?
  • SQL/Command injection: Is external input used in queries or shell commands without sanitization?
Performance (Should Fix)

Reference Chapter 1 and Chapter 3 for details:

  • Unnecessary clones: .clone() where a borrow would suffice
  • Allocation in hot paths: String or Vec allocations in loops or frequently-called functions
  • Inefficient iterators: .collect() followed by iteration, when chaining would work (see Chapter 1.5)
  • Blocking in async: Synchronous I/O or heavy computation in async functions without spawn_blocking
  • Missing Cow: Could Cow<str> or Cow<[T]> avoid allocations? (see Chapter 3.2)
  • Large structs by value: Passing large structs by value instead of reference (see Chapter 3.3)
  • Early allocation: Using unwrap_or, map_or instead of _else variants when allocation is involved (see Chapter 1.4)
Test Coverage (Should Fix)

Reference Chapter 5 for testing best practices:

  • New public functions: Are they tested?
  • Error paths: Are Err cases and edge conditions tested? (see Chapter 4.6)
  • Changed logic: If behavior changed, are tests updated to reflect it?
  • Integration tests: For public API changes, are there integration tests?
  • Test naming: Do test names describe the behavior being tested? (see Chapter 5.1)
  • One assertion per test: Are tests focused on a single behavior?
Correctness & Rust Idioms (Blocking/Should Fix)

Reference Chapter 1, 4, and 6:

  • Panics in library code: unwrap(), expect(), panic!() in library code that should return Result
  • Ignored errors: let _ = fallible_operation() without justification
  • Missing #[must_use]: Functions returning Result or important values
  • Lock poisoning: Proper handling of Mutex/RwLock poisoning (see Chapter 9)
  • Iterator invalidation: Modifying collections while iterating
  • Integer overflow: Arithmetic on user-controlled values without checked/saturating ops
  • Lifetime issues: Unnecessary 'static bounds, overly restrictive lifetimes
  • Clone traps: Auto-cloning inside loops, cloning references instead of taking ownership (see Chapter 1.1)
Show full SKILL.md (563 more words)Show less
Error Handling (Should Fix)

Reference Chapter 4:

  • thiserror for libraries: Are custom errors using thiserror with proper #[from] and #[error] attributes?
  • anyhow in libraries: Is anyhow being used in library code? (should use thiserror instead)
  • Error propagation: Is ? used instead of verbose match chains?
  • Error context: Are errors descriptive and actionable?
API Design (Consider)

Reference Chapter 6 and 7:

  • Breaking changes: Are public API changes intentional and documented?
  • Error types: Are custom errors descriptive and actionable?
  • Builder pattern: For structs with many optional fields
  • Naming: Does it follow Rust conventions (snake_case, clear verb prefixes)?
  • Static vs dynamic dispatch: Is dyn Trait used only when necessary? (see Chapter 6)
  • Type state pattern: Could compile-time state validation improve safety? (see Chapter 7)
Documentation (Consider)

Reference Chapter 8:

  • Public API docs: Are public items documented with ///?
  • Error/Panic sections: Do fallible functions document their error conditions?
  • Comments explain why: Are comments explaining the "why" not the "what"?
  • TODOs have issues: Are TODO comments linked to tracked issues?

Output Format

Post review comments directly on the PR using inline comments on specific lines of code:

CRITICAL: Inline comment parameters:

  • Always use line and side parameters — NEVER use position. The position parameter refers to a diff hunk offset and will fail with HTTP 422 errors.
  • The line value must be a line number that appears in the PR diff for that file. If the line you want to comment on is not in the diff, comment on the nearest changed line and reference the actual line in the body, or use a general PR comment instead.
  • Use -F line=N (not -f line=N) so the value is sent as an integer.
bash
# For line-specific comments:
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments \
  -f body="**[Blocking]** Issue description here. See Chapter X for details." \
  -f commit_id="<commit_sha>" \
  -f path="src/foo.rs" \
  -f side="RIGHT" \
  -f subject_type="line" \
  -F line=42

# For the summary comment, always update an existing one if present (instead of creating a new one):
COMMENT_ID=$(gh api repos/{owner}/{repo}/issues/{pr_number}/comments --jq '.[] | select(.body | contains("Reviewed by Claude Code")) | .id' | tail -1)
BODY="## Review Summary\n\n...\n\n---\n_Reviewed by Claude Code {model}_"
if [ -n "$COMMENT_ID" ]; then
  gh api repos/{owner}/{repo}/issues/comments/$COMMENT_ID -X PATCH -f body="$BODY"
else
  gh pr comment {pr_number} --body "$BODY"
fi

Each inline comment should:

  • Start with severity: **[Blocking]**, **[Should Fix]**, or **[Consider]**
  • Explain the problem clearly
  • Reference the relevant best practice chapter when applicable
  • Suggest a fix
  • Important: For duplicate findings in multiple locations within a file (E.g. multiple tests have the same issue), leave a single online comment referencing the various places in the file it needs to be fixed instead of leaving several inline comments about the same issue.

After posting inline comments, add a summary comment with:

  • Overall assessment (summary of the change, keep this to a couple of sentences maximum)
  • Findings (bullet point, concise summary of issues found)
  • Test coverage assessment
  • Final recommendation (Approve / Approve with suggestions / Request changes)
  • Sign-off line at the end: _Reviewed by Claude Code {model}_ where {model} is the current model name (e.g., "Opus 4.5")

Important: Always update the existing summary comment rather than creating a new one. Use the find-and-update pattern shown above.

Guidelines for High-Signal Reviews

  • Be specific: Always reference exact file and line numbers
  • Explain why: Don't just say "this is wrong" - explain the consequence
  • Reference best practices: Link to the relevant chapter when suggesting changes
  • Suggest fixes: Provide concrete code examples when helpful
  • Skip the obvious: Don't mention things clippy would catch (run it instead)
  • Focus on this PR: Don't request unrelated refactoring
  • Acknowledge good work: Note well-designed solutions briefly
  • Don't Overwhelm: Stick to a maximum of the top 5 most important findings.

Posting Review Comments

Batch all findings into a single turn:

  1. Collect all inline comments (blocking, should-fix, and consider issues) during analysis
  2. Post all inline comments in one go using multiple gh api calls
  3. Post the summary comment as the final action

This approach reduces turn count by avoiding iterative comment posting.

© apollographql, MIT. 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 .claude/skills/review of apollographql/apollo-mcp-server.

Open the folder on GitHubat commit 04e4e6e

Compare with similar skills

Review 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 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review this skillapollographql/apollo-mcp-server314—~2.9kAutomated safety check: PassMIT
GreptimeDB Fuzz CI Failure InvestigationGreptimeTeam/greptimedb6.7k—~4.4kAutomated safety check: PassApache-2.0
Unblock PRdatadog-labs/agent-skills177—~2.7kAutomated safety check: PassMIT
Devops Pipelineluongnv89/skills131—~4.8kAutomated safety check: PassMIT
Prepare Cloudflare Production DeploymentLubomirGeorgiev/cloudflare-workers-nextjs-saas-template786—~5.9kAutomated safety check: NotesMIT
Cuga GitHub Issuescuga-project/cuga-agent896—~1.2kAutomated safety check: PassCustom licence

Similar skills

  • Diagnoses a failed GreptimeDB fuzz CI job by pulling its GitHub Actions logs and fuzz artifacts, then matching the evidence to the local source code.

    6.7k GitHub stars~4.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Unblock PR

    datadog-labs/agent-skills

    Load when investigating a failing PR CI pipeline or checking PR health.

    177 GitHub stars~2.7k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Devops Pipeline

    luongnv89/skills

    Configure pre-commit hooks and lean GitHub Actions for shift-left quality assurance.

    131 GitHub stars~4.8k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Prepare Cloudflare Production Deployment

    LubomirGeorgiev/cloudflare-workers-nextjs-saas-template

    Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.

    786 GitHub stars~5.9k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Cuga GitHub Issues

    cuga-project/cuga-agent

    Create GitHub issues for cuga-agent (bugs, features, epics, designs, and related work) against origin using gh, with epic → feature → issue hierarchy and GraphQL sub-issue linking.

    896 GitHub stars~1.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Spikard

    Goldziher/spikard

    Scaffold Spikard projects and generate code from OpenAPI, AsyncAPI, OpenRPC, GraphQL, and Protobuf schemas using the Spikard CLI or its MCP server.

    124 GitHub stars~799 tokensUpdated today
    Backend & APIsAuto-check passed

More from apollographql/apollo-mcp-server

  • MCP Apps Sync Docs

    apollographql/apollo-mcp-server

    Syncs MCP Apps documentation with the @apollo/client-ai-apps changelog.

    314 GitHub stars~1.2k tokensUpdated 3 days ago
    Auto-check passed

Questions about Review

What does Review do?

Review a GitHub pull request for a Rust codebase. An agent skill from apollographql/apollo-mcp-server. Review is an agent skill from apollographql/apollo-mcp-server. Review a GitHub pull request for a Rust codebase.

When should I use Review?

Review fits situations like: tasks that involve Test coverage; tasks that involve GraphQL; tasks that involve CI/CD.

How do I install Review in Claude Code?

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

How do I install Review in Codex?

Run `npx skills add apollographql/apollo-mcp-server --skill review -a codex`. Or copy the skill folder (.claude/skills/review in apollographql/apollo-mcp-server) into .agents/skills/review in your project. Codex loads it when a task matches its description.

Can I use Review 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 apollographql/apollo-mcp-server --skill review -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, .gemini/skills/review, .github/skills/review and .opencode/skills/review in your project.

What does Review need to run?

Going by SKILL.md and its folder, Review needs the command-line tools its instructions call (gh). Its frontmatter pre-approves these tools: Bash(gh:*), Bash(git diff*), Bash(git log*), Bash(git show*), Read, Grep, Glob.

Does Review access the network?

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

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

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

How many tokens does Review use?

About 2.9k tokens (SKILL.md is roughly 12k 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?

Skills that share tags, products or a category with Review: GreptimeDB Fuzz CI Failure Investigation (GreptimeTeam/greptimedb, 6.7k stars), Unblock PR (datadog-labs/agent-skills, 177 stars), Devops Pipeline (luongnv89/skills, 131 stars) and Prepare Cloudflare Production Deployment (LubomirGeorgiev/cloudflare-workers-nextjs-saas-template, 786 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review?

apollographql (a GitHub organization) maintains it in apollographql/apollo-mcp-server, which has 314 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.

Source: apollographql/apollo-mcp-server on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.