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-description/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-description)<a href="https://agentmods.dev/skills/agentsystemlabs/nebula/pr-description"><img src="https://agentmods.dev/badge/skills/agentsystemlabs/nebula/pr-description.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.00125 | $0.03928 |
| Opus 5 | $0.00063 | $0.01964 |
| Sonnet 5 | $0.00025 | $0.00786 |
| Haiku 4.5 | $0.00013 | $0.00393 |
Grade B, and why
pr-description scanned grade B with 1 finding 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
grep -ril '<slug or TERM>' .claude/memory/entries # the task's MEMORY LOG entry: the why and the gotchas How it starts
The opening of the file, as written. The whole thing — 228 lines — stays where its author put it; the contents beside it link to each section on GitHub.
A PR description is read three times: by the reviewer deciding whether to open the diff, by the
person six weeks later asking why the code looks like this, and by the PR ARCHIVE
(.claude/memory/prs/), which renders every merged PR into Markdown so a future agent can grep the
why without a network call. Write for all three: high level first, a picture before a paragraph, the
mechanism at the bottom where only the reviewer scrolls.
This skill produces the body. The title is the commit-subject rule from the RELEASE SKILL: what a user now gets, not what the diff did ("Workspaces as a top tab bar, and one nebula instance per checkout", never "feat(tui): add tabs").
What every PR body carries — no exceptions
- A table of contents at the top, one link per
##section, so the reader clicks straight to the part they want. GitHub gives a PR body's headings no anchors of their own, so every linked heading ends with<a id="…"></a>and the link names that id with GitHub's prefix,#user-content-…— see GitHub anchors below; a dead TOC is worse than none. - Screenshots of the change. A TUI change without a picture is a claim. At least one PNG of the
screen after the change; a before/after pair when the change replaces something. Captured with
the SCREENSHOT HARNESS, hosted on the
pr-assetsbranch (recipe below). A change with no screen (a daemon mechanism, a CLI flag) shows its terminal output in a fenced block and a diagram, and says why there is no screenshot. - A mermaid diagram of the change, in a
```mermaidfence — GitHub renders it inline. Draw the change, not the whole system: the new flow, the state that moved, the crates touched.flowchart,sequenceDiagramandstateDiagram-v2cover nearly every PR here; the templates show which fits which shape. - Categories a reader can scan. Benefit groups (
🚀 Launch faster,🔔 Know when it's done) or change classes (✨ Feature · 🐛 Fix · 📝 Docs · 🧪 Tests · ♻️ Refactor) — one emoji per heading, never on the bullets. A fix files under the feature whose promise it keeps. Inside a section a bullet is a bold hook and a dash, then two to four indented sub-bullets of one fact each — the key or command in backticks, a setting in theSettings › Sessions › done_soundform, a behaviour — never a paragraph (2026-09-05: PR #30's first cut could not be glanced through). When the change touches something the user likes, one bullet says what stayed the same. Credit contributors inline:Thanks @handle (#NN).No file paths, symbols or line numbers above the technical overview. - A technical overview section, last before the notes, for the reviewer: the mechanism in a
few sentences, the files that matter with a clause each, the rejected approach they would ask
about, the gate ("
make cigreen: fmt, clippy, 687 tests"). Everything above it stays high level. - A risk section, directly above the technical overview: the author's own read of what merging
could break, in the PR REVIEWER SKILL's order — 🔒 security and production-merge risk, ⚡ performance
cost, 🧩 fit with the codebase's patterns — one table row each, rated Low / Medium / High with a
one-clause why, a 🟢 / 🟡 / 🔴 verdict above the table, and a Rollback line saying what a
git revertundoes and what it does not (a PROTOCOL VERSION bump, a migrated store, a pushed branch). "No risk" is never bare: a docs-only or prose-only PR says why nothing runs. The reviewer checks this read against the diff, so write it as the reviewer would, not as the seller. - The footer. Every PR body ends with the line the harness gives you (currently
🤖 Generated with [Claude Code](https://claude.com/claude-code)plus the session link) — keep it verbatim, last, after a blank line.
Every fact comes from the diff, the commits and the MEMORY LOG entry of the task; do not add a claim
the code does not make. A gate that did not run is stated as such (PR #22: "cargo test could not be
run in this headless session — please run the test suite before merging"), never implied.
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- templates/01-benefit-groups.md 3.9 KB
- templates/02-before-after.md 3.5 KB
- templates/03-category-table.md 4.0 KB
- templates/04-story.md 3.2 KB
- templates/05-release-note.md 3.5 KB
- templates/06-user-journey.md 3.6 KB
- templates/07-collapsible.md 3.7 KB
- templates/08-bug-fix.md 3.5 KB
- templates/09-scorecard.md 3.7 KB
- templates/10-crate-map.md 3.7 KB
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 · 228 lines · 125 tokens per session scan B 0068d030a577
pr-description is a skill published in the GitHub repository AgentSystemLabs/nebula (106 stars, last pushed today), licensed MIT. It adds 125 tokens to every session and 3,928 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.
Other skills, from other repositories
review-implement-phase
Implements triaged review actions, commits focused fixes, and posts Done plus resolves threads. Use when the user wants only the implementation phase of the review-framework workflow.
engram-branch-pr
PR creation workflow for Engram following the issue-first enforcement system. Trigger: When creating a pull request, opening a PR, or preparing changes for review.
verify-behavior
Verify or reproduce visible product behavior by driving the real UI with pi-computer-use's checked tools, requiring verified expect postconditions and durable state evidence for meaningful UI flows. Use when triage needs visual reproduction, implementation needs behavioral proof, review needs interactive confirmation…
github-contributor
End-to-end playbook for shipping high-quality pull requests to open-source projects you don't maintain — discovery, CONTRIBUTING compliance, PR-size check, minimal-diff implementation, PR description with AI-assisted disclosure, conflict resolution, and post-submission maintainer interaction. Use whenever creating…
revdiff
Review diffs, files, and documents with inline annotations in a TUI overlay, or answer questions about revdiff usage, configuration, themes, and keybindings. Opens revdiff in agterm/tmux/zellij/herdr/kitty/wezterm/cmux/ghostty/iterm2/emacs-vterm, captures annotations, and addresses them. Works in git, hg, and jj repos…
write-pr
Reference standards for writing pull request titles and descriptions in the tldraw repository, plus the pre-flight comment sweep over the diff. Use as supporting guidance when another skill or workflow needs PR content standards, not as the user-facing create/update PR workflow.