pr-reviewer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pr-reviewer (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.
When the user asks to review / audit / comment / 评审 / 审查 a GitHub PR by URL or local diff. Trigger phrases include:
Not suitable for: bug-hunting (use Copilot Code Review), security scans (use CodeQL), runtime performance review.
Estimated frequency: per-PR (high-frequency, daily for active repos).
Unlike GitHub Copilot Code Review (focuses on bugs) or CodeQL (focuses on security), pr-reviewer focuses on team-specific style and structural conventions — the kind of rules that are written down in your team handbook but no off-the-shelf tool knows about.
Quantified value: cuts the average human "first-pass review" from ~30 min to ~5 min per PR — saves about 25 min/PR × 10 PRs/week ≈ 4 h/week per reviewer.
| Field | Type | Required | Notes |
|---|---|---|---|
pr_url | string | yes | e.g. https://github.com/owner/repo/pull/123 |
team_rules | string | optional | path to team convention markdown; defaults to references/default-rules.md |
language | enum | optional | one of python, typescript, go; auto-detect if omitted |
Cache key: SHA-256 of (pr_url, head_sha, team_rules_hash) — same PR + same head SHA reuses cached review without re-calling the LLM.
scripts/fetch_pr.py with pr_url → returns unified diff + file list.ruff / eslint / golangci-lint) for objective issues.team_rules to the LLM, ask for ≤ 5 most impactful style issues with line refs.(file, line, message_first_30_chars).scripts/validate_review.py against assets/review.schema.json; on fail, regenerate once, then escalate to user.gh pr review --comment or copy-paste into a GitHub review.{
"summary": "string, ≤ 200 chars",
"comments": [
{ "file": "path/to/file.py", "line": 42, "severity": "info|warn|error", "message": "string" }
],
"approve": "comment | request_changes | approve"
}Schema lives at assets/review.schema.json; comments[].severity must be one of the three enum values.
| Name | Type | Paid? | Approx cost / call |
|---|---|---|---|
| GitHub API (read-only) | API | free (60 req/h unauth, 5000/h with token) | $0 |
ruff / eslint / golangci-lint | CLI | free | $0 |
| Skill's underlying LLM provider | API | yes | ~$0.005 / PR |
temperature=0.2; same diff + same rules produces ≈ same output across reruns.(file, line, message_first_30_chars) so result order doesn't matter._schema_failed: true flag and surface the validation error to the user._partial: true.Diff content is sent to the LLM provider configured by the host (e.g. DeepSeek / Anthropic). Do NOT use this skill on PRs containing secrets, credentials, or internal-only code without first checking your provider's data retention policy. See references/privacy.md for per-provider notes. No PR data is persisted by this skill itself.
# input
pr-reviewer review https://github.com/octocat/hello-world/pull/42
# output (truncated)
{
"summary": "3 minor style issues; safe to merge after fixes.",
"comments": [
{"file": "src/utils.py", "line": 18, "severity": "warn",
"message": "Function process_data has 4 params; consider grouping into a dataclass per team rule §2.3."},
{"file": "src/utils.py", "line": 45, "severity": "info",
"message": "Magic number 0.85 — extract to a named constant THRESHOLD."}
],
"approve": "comment"
}scripts/fetch_pr.py — GitHub API client for diff fetchingscripts/validate_review.py — JSON schema validatorreferences/default-rules.md — fallback team conventions if user doesn't supply onereferences/privacy.md — per-LLM-provider data handling notes (read before reviewing PRs containing secrets)assets/review.schema.json — JSON schema for output validationtests/sample_inputs.json — sample PR diffs for regression testingtests/expected_outputs.json — expected reviews for those diffs0.3.0 — added schema validation step, multi-language linter support0.2.0 — switched to deterministic dedup; added cache key0.1.0 — initial release (Python only)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.