Borrowing it
Nothing to install: this file belongs to AgentSystemLabs/nebula. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/AgentSystemLabs/nebula/main/.claude/skills/pr-reviewer/SKILL.mdgit clone --depth 1 https://github.com/AgentSystemLabs/nebulaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/agentsystemlabs/nebula/pr-reviewer)<a href="https://agentmods.dev/skills/agentsystemlabs/nebula/pr-reviewer"><img src="https://agentmods.dev/badge/skills/agentsystemlabs/nebula/pr-reviewer.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00149 | $0.04516 |
| Opus 5 | $0.00075 | $0.02258 |
| Sonnet 5 | $0.00030 | $0.00903 |
| Haiku 4.5 | $0.00015 | $0.00452 |
Grade B, and why
pr-reviewer scanned grade B with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Downloads and executes remote codemediumSupply chain
curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.
with a composed argv and system prompt, runs `curl | sh` on remote hosts over NEBULA SSH, and migrates Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Reads agent configuration directorieslowAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
grep -n '<TERM>' .claude/memory/gotchas.md Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
with a composed argv and system prompt, runs `curl | sh` on remote hosts over NEBULA SSH, and migrates How it starts
The opening of the file, as written. The whole thing — 251 lines — stays where its author put it; the contents beside it link to each section on GitHub.
A pull request review here answers one question first: what happens to the people running nebula
in production if this merges? Nebula is a DAEMON that owns every agent PTY on a developer's box,
speaks to its TUI over an unauthenticated DAEMON SOCKET, installs MANAGED HOOKS into the user's own
~/.claude, ~/.codex, ~/.cursor and ~/.pi, spawns claude / codex / cursor-agent / pi
with a composed argv and system prompt, runs curl | sh on remote hosts over NEBULA SSH, and migrates
a SQLITE STORE on every user's disk at the first launch of a new binary. A wrong line in the wrong
place is not a bug report; it is every user's sessions gone, or every user's shell running someone
else's script. So the review weighs security and merge risk first and hardest, performance second, and
fit with the codebase's patterns third — and says which of the three every finding belongs to.
The second rule shapes everything else: the reviewer reads; it never runs. Not the PR's code, not
its tests, not the build, not the binary, not a script the PR adds. Three reasons, each sufficient on
its own. A PR — above all one from a fork (isCrossRepository: true) — is untrusted input, and even
cargo check executes its build.rs and proc-macros as you, with your gh token, ~/.claude and ssh
keys in reach. The SHARED CHECKOUT belongs to several sessions at once, so a gh pr checkout, a merge
or a stash yanks the tree out from under them. And a review that says "I ran the tests" asserts
something the reader cannot audit anyway: CI's verdict is the test gate — and on this repo nothing on
GitHub builds or tests a PR at all (claude-code-review.yml is the only PR workflow; release.yml
runs on tags), which is itself a fact the review states. What reading cannot settle goes into the
review as unsettled, named precisely enough that a human can run it. It is never quietly run.
Read, never run
Allowed — every one of these is a read: it touches no working tree and executes nothing from the PR.
gh pr view <n> --json … # metadata, description, files, checks, reviews
gh pr diff <n> # the unified diff
gh pr checks <n> # CI state as GitHub reports it (exit 8 = pending)
gh api repos/<owner>/<repo>/pulls/<n>/comments # inline review comments — not a --json field
git fetch origin && git fetch origin pull/<n>/head # refresh origin/<base>; the PR head lands in FETCH_HEAD, no ref, no checkout
git merge-base origin/<base> <headRefOid> # the commit the PR branched from — origin/<base> has moved on since, and is not the base
git show <headRefOid>:<path> # the PR's whole file (the SHA is stable; FETCH_HEAD is not, other sessions fetch too)
git show <mergeBase>:<path> # the same file as the PR saw it — what `gh pr diff` is relative to
git log · git grep · grep · cat · sed -n · wc · diff # over files, never through them
Forbidden, whatever the PR is — when a review seems to need one of these, it needs a human instead:
cargoanything, includingcargo check,cargo fmt --check,cargo clippy,cargo metadataandcargo tree— build scripts and proc-macros run under all of them;makeanything; thenebulabinary or anything undertarget/; INSTALL.SH;python3,node,sh,bash,sourceon any file the PR adds or changes — reading a script meanscat, notsh -n.gh pr checkout,git checkout,git switch,git merge,git rebase,git apply,git cherry-pick,git stash,git worktree add,git reset— nothing that moves the SHARED CHECKOUT or creates a tree; editing or creating any file inside the repo, with one carve-out: the SELF-IMPROVING LOOP's own files —.claude/MEMORY.md,.claude/memory/,TERMS.md— which NEBULA-MEMORY and PROJECT TERMS write after the review is posted, as on every other task. Nothing from the PR ever lands on disk; the review itself is written to the scratchpad, outside the repo.gh pr review --approve,gh pr review --request-changes,gh pr merge,gh pr edit,gh pr close,gh pr comment— the skill posts exactly one--commentreview and changes nothing else about the PR. Approval is a human's signature.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 251 lines · 149 tokens per session scan B 5e0cf07be176
pr-reviewer is a skill published in the GitHub repository AgentSystemLabs/nebula (106 stars, last pushed today), licensed MIT. It adds 149 tokens to every session and 4,516 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it B with 3 findings (downloads and executes remote code, reads agent configuration directories, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.
Other skills, from other repositories
remember
Review the current conversation and capture valuable knowledge — best practices, coding conventions, architecture decisions, workflows, and user feedback — into persistent memory (AGENTS.md) or reusable skills. Use when the user says: (1) remember this, (2) save what we learned, (3) update memory, (4) capture…
memory-dream
Memory consolidation protocol. Reviews all stored memories, merges duplicates, removes noise and credentials, rewrites unclear entries, and enforces TTL expiration. Use when the user asks to clean up, consolidate, or review their memories. Also triggers automatically after sufficient activity (configurable).
memory-reviewer
Reviews stored memory quality by detecting duplicates, contradictions, and stale entries with actionable recommendations. Use when search results seem conflicting, before running dream consolidation, or for periodic memory hygiene audits.
md-audit
Read-only code quality audit — scan the current working directory for common issues (bugs, dead code, security hotspots, missing error handling) and return a prioritised findings report. No files are edited. Use when asked to "audit the code", "quick audit", "find issues", "code scan", or "what's wrong with this…
memory-to-skill
Turn workflows from your MemSearch memory into reusable skills. Use when the user asks to make/create/extract/distill a skill from what they just did or from past work, review skill candidates, install a distilled skill, or 'turn this into a skill'. Manages MemSearch procedural-memory candidates under…
mindos
MindOS: local knowledge assistant & shared KB. Keeps decisions, notes, SOPs, debugging lessons, research findings, preferences across sessions/agents. Core: save notes, search KB, organize files, run workflows, review, append CSV, hand off context, distill lessons. NOT for app source or paths outside KB. Triggers…