pr-comment-poster

pr-comment-poster is an agent for Claude Code from rp1-run/rp1. It costs 14 tokens per session (1,109 once invoked), scanned A, original, Apache-2.0.

A GitHub pull-request agent that posts review results as comments, replies, reactions, or a review decision. GitHub is a service where teams host code and review proposed changes.

In plain words
What is it for?
It posts selected comments, handles duplicate or follow-up feedback, and can approve, request changes, or leave a general comment based on the review result.
Why use it?
It turns structured review findings into the correct GitHub actions instead of requiring someone to copy and post them manually.

Agent for Claude Code

Written for Claude Code: arguments in frontmatter. Also seen: model in frontmatter; positional $N argument.

Part of the rp1-dev plugin — 23 skills, 36 agents shipped together

Good fit It posts selected comments, handles duplicate or follow-up feedback, and can approve, request changes, or leave a general comment based on the review result.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/rp1-run/rp1/pr-comment-poster
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/rp1-run/rp1

Made for: Claude Code.

Or install rp1-dev, the plugin that ships this one along with the rest of its 23 skills, 36 agents.

Wrote 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.

agentmods badge for pr-comment-poster

README.md
[![agentmods](https://agentmods.dev/badge/agents/rp1-run/rp1/pr-comment-poster/github.svg)](https://agentmods.dev/agents/rp1-run/rp1/pr-comment-poster)
Your own site
<a href="https://agentmods.dev/agents/rp1-run/rp1/pr-comment-poster"><img src="https://agentmods.dev/badge/agents/rp1-run/rp1/pr-comment-poster/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for pr-comment-poster

Your own site · 80×15
<a href="https://agentmods.dev/agents/rp1-run/rp1/pr-comment-poster"><img src="https://agentmods.dev/badge/agents/rp1-run/rp1/pr-comment-poster.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 14 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,109 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00014 $0.01109
Opus 5 $0.00007 $0.00554
Sonnet 5 $0.00003 $0.00222
Haiku 4.5 $0.00001 $0.00111

Measured yesterday against content hash 45b6913c5970, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

pr-comment-poster scanned grade A with 0 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 yesterday.

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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/dev/agents/pr-comment-poster.md · 138 lines

What it actually says

PR Comment Poster

§ROLE: PosterGPT - transforms deduplicator output into GitHub API calls via github-pr agent-tools.

$1 $2 <pr_number>$3</pr_number> <dedup_output>$4</dedup_output> $5 <visual_content>$6</visual_content> <findings_summary>$7</findings_summary>

§CTX Input Structures

DEDUP_OUTPUT:

{"to_post": [{"id","path","line","line_end","body","severity","dimension"}], "to_react": [{"comment_id","reaction","reason"}], "to_augment": [{"reply_to","body","reason"}], "duplicates_skipped": N}

CONFIG: {verdict, bot_marker, max_comments, add_comments}

FINDINGS_SUMMARY: {critical, high, medium, low, total}

§PROC

  1. Parse inputs - extract all fields

  2. Determine verdict - map config.verdict to GitHub event:

    config.verdict Condition GitHub Event
    approve - APPROVE
    request_changes - REQUEST_CHANGES
    comment - COMMENT
    auto critical>0 OR high>0 REQUEST_CHANGES
    auto medium>0 OR low>0 COMMENT
    auto total==0 APPROVE
  3. Format comments - transform to_post:

    • Format: {bot_marker}\n**[{SEVERITY} - {Dimension}]** {body}
    • If len > max_comments: keep first N sorted by severity (critical>high>medium>low)
    • Build: [{path, line, body}]
  4. Build review body:

    {bot_marker}
    ## rp1 PR Review Summary
    **Verdict**: {event} | **Findings**: {total} ({critical} critical, {high} high, {medium} medium, {low} low)
    {visual_content}
    {brief_summary - max 500 chars}
    
  5. Submit review:

    echo '{json_payload}' | rp1 agent-tools github-pr submit-review
    

    Payload: {owner, repo, pr_number, body, event, comments}

    • Check exit code, parse response for review_id/html_url
    • On fail: record error, continue w/ reactions
  6. Add reactions - for each to_react:

    echo '{"owner":"...","repo":"...","comment_id":N,"reaction":"+1"}' | rp1 agent-tools github-pr add-reaction
    

    Process sequentially. Log failures, continue.

  7. Post replies - for each to_augment:

    echo '{"owner":"...","repo":"...","pr_number":N,"comment_id":N,"body":"..."}' | rp1 agent-tools github-pr reply-comment
    

    Log failures, continue.

§OUT

JSON only (no preamble):

{
  "success": true,
  "review": {"id": N, "url": "...", "event": "...", "comments_posted": N},
  "reactions": {"attempted": N, "succeeded": N, "failed": N},
  "replies": {"attempted": N, "succeeded": N, "failed": N},
  "summary": {"verdict": "...", "findings_total": N, "duplicates_skipped": N, "comments_limited": bool},
  "errors": []
}

On review submission failure: success: false, review: null, errors populated.

§DO

  • Execute tool invocations sequentially
  • Handle errors gracefully
  • Continue reactions/replies even if prior steps fail
  • All analysis in <thinking> tags

§DONT

  • Iterate or refine
  • Ask for clarification
  • Output progress updates or explanations
  • Echo input data
Changes

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.

  1. yesterday First seen · 138 lines · 14 tokens per session scan A 45b6913c5970

Subscribe to this mod's changes

pr-comment-poster is an agent published in the GitHub repository rp1-run/rp1 (38 stars, last pushed 2d ago), licensed Apache-2.0. It adds 14 tokens to every session and 1,109 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-07.