review-pr — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited review-pr (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are tasked with reviewing a GitHub pull request in the current repository. You will analyse the diff, check for issues across multiple dimensions, identify which skills were used during the review, assign a red-amber-green score to each review dimension, and produce a structured review saved to disk and presented to the user.
Verify that the GitHub CLI is available:
gh --versiongh (GitHub CLI) is required for this skill to work as expected and that without it you may not be able to perform the intended review. Ask the user explicitly whether they wish to continue regardless. If they decline, stop.If an argument was provided (PR number or URL):
If no argument was provided:
gh pr view --json number,title,url 2>/dev/null to detect a PR from the current branch.Validate the PR exists: gh pr view {number} --json number,title,headRefName,baseRefName,url,body,author,state
Run the following to collect metadata:
gh pr view {number} --json number,title,headRefName,baseRefName,url,body,author,state,commitsAlso collect:
gh pr view {number} --json commits --jq '.commits[-1].oid'date '+%Y-%m-%d %H:%M:%S %Z'basename $(git rev-parse --show-toplevel)Store all metadata for use in step 6.
Determine the output path (see step 6 for naming convention) and check whether a review file for this PR number already exists:
{repo root}/.ai/review/*{pr-number}*If an existing review is found:
last_reviewed_commit from the frontmattergh pr view {number} --json commits --jq '.commits[-1].oid'last_reviewed_commit so you can scope the diff in step 5 to only the new changes. You will update the existing file rather than creating a new one.If no existing review is found: proceed normally (new review).
Fetch the diff:
gh pr diff {number}git diff {last_reviewed_commit}..{latest_commit} -- {files in PR} to get only new changesRead project conventions:
CLAUDE.md, AGENT.md, and analogous files such as .claude/CLAUDE.md, .copilot/copilot-instructions.md, or .pi/agent/AGENT.mdrust-test-conventions, rust-standards) and read their SKILL.md files for referencereview-pr itself plus any project-specific convention or review skills used.Spawn parallel sub-agents using the dedicated review agents, each focused on one review dimension:
correctness-reviewer agent. Pass it the diff.security-reviewer agent. Pass it the diff.test-reviewer agent. Pass it the diff and any test convention references (e.g. rust-test-conventions).conventions-reviewer agent. Pass it the diff and all project convention references gathered above (for example CLAUDE.md, AGENT.md, .copilot/copilot-instructions.md, .pi/agent/AGENT.md, and language-specific convention skills).observability-reviewer agent. Pass it the diff. This agent has basic OTel conventions embedded; also pass any project-specific telemetry conventions found above.Each sub-agent prompt should include:
After collecting sub-agent findings, assign a red-amber-green score to each review dimension and prepare a short rationale for each score.
Review dimensions to score:
Scoring rules:
Capture these scores for both the review document and the agent's final response to the user.
Output location:
{repo root}/.ai/review/{yyyy-mm-dd} {pr-number} {pr-title-abbreviated}.md
Where:
{yyyy-mm-dd} is today's date{pr-number} is the PR number (e.g. 42){pr-title-abbreviated} is the PR title in kebab-case, truncated to max 50 characters (trim at word boundary).ai/review/ folder does not exist, create itFor a re-review, update the existing file rather than creating a new one.
Document structure:
---
pr_number: "{number}"
pr_title: "{title}"
pr_url: "{url}"
pr_author: "{author}"
pr_branch: "{headRefName}"
base_branch: "{baseRefName}"
repository: "{repo name}"
first_reviewed: "{yyyy-mm-dd HH:MM:SS TZ}"
last_reviewed: "{yyyy-mm-dd HH:MM:SS TZ}"
last_reviewed_commit: "{latest commit hash on PR branch}"
---
# PR Review: {title} (#{number})
## Summary
[2-3 sentence high-level assessment of the PR]
## Review Dimension Scores
| Dimension | Score | Rationale |
| ------------------- | ------------------------------ | ----------------- |
| Correctness & logic | {🔴 Red / 🟠 Amber / 🟢 Green} | {brief rationale} |
| Security | {🔴 Red / 🟠 Amber / 🟢 Green} | {brief rationale} |
| Observability | {🔴 Red / 🟠 Amber / 🟢 Green} | {brief rationale} |
| Tests | {🔴 Red / 🟠 Amber / 🟢 Green} | {brief rationale} |
| Style & conventions | {🔴 Red / 🟠 Amber / 🟢 Green} | {brief rationale} |
## Skills Used For This Review
- `review-pr`
- `{skill-name}`
- `{skill-name}`
## Review Dimension: Correctness & Logic
[Findings related to bugs, edge cases, error handling, race conditions, or incorrect assumptions]
[Prefix each finding with severity and status: e.g. `🔴 **[New]**`, `🟠 **[Unresolved]**`, `🟢 **[Resolved]**`]
[List most important first.]
[If none: "No correctness or logic issues found."]
## Review Dimension: Security
[Findings related to auth/authz, injection, secret handling, unsafe defaults, or other security risks]
[Prefix each finding with severity and status: e.g. `🔴 **[New]**`, `🟠 **[Unresolved]**`, `🟢 **[Resolved]**`]
[List most important first.]
[If none: "No security issues found."]
## Review Dimension: Tests
[Findings related to missing coverage, missing edge cases, weak assertions, or test quality]
[Prefix each finding with severity and status: e.g. `🔴 **[New]**`, `🟠 **[Unresolved]**`, `🟢 **[Resolved]**`]
[List most important first.]
[If none: "No meaningful test gaps found."]
## Review Dimension: Style & Conventions
[Findings related to naming, structure, patterns, formatting, or project-specific conventions]
[Prefix each finding with severity and status: e.g. `🔴 **[New]**`, `🟠 **[Unresolved]**`, `🟢 **[Resolved]**`]
[List most important first.]
[If none: "No style or convention issues found."]
## Review Dimension: Observability
[Specific telemetry recommendations — spans, attributes, metrics, log lines worth adding]
[Prefix each finding with severity and status: e.g. `🔴 **[New]**`, `🟠 **[Unresolved]**`, `🟢 **[Resolved]**`]
[List most important first.]
[If none: "Telemetry coverage looks adequate."]
## Review History
| Date | Commit | Type | Notes |
| ------ | ------------ | ---------- | -------------- |
| {date} | {short hash} | New review | Initial review |For a re-review, append a new row to the Review History table and update findings:
{severity} **[Resolved]**[New] to [Unresolved][New] under each relevant section[New] status taglast_reviewed and last_reviewed_commit frontmatter fieldsskills_used list if additional skills were consulted during the re-reviewPresent a concise summary to the user:
Ask if they would like to:
If the user wants to post comments:
gh pr review {number} with appropriate flags--request-changes, even when there are critical issues — always use --comment--- followed by This review was generated by {agent} {model}. where {agent} is the tool being used (e.g. Claude Code, GitHub Copilot, Pi) and {model} is the model name and version (e.g. Opus 4.6, Sonnet 4.5)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.