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.
npx skills add jjanczur/tyran --skill pr-feedbackgit clone --depth 1 https://github.com/jjanczur/tyranWrote 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/jjanczur/tyran/pr-feedback)<a href="https://agentmods.dev/skills/jjanczur/tyran/pr-feedback"><img src="https://agentmods.dev/badge/skills/jjanczur/tyran/pr-feedback.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
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.00057 | $0.01035 |
| Opus 5 | $0.00028 | $0.00517 |
| Sonnet 5 | $0.00011 | $0.00207 |
| Haiku 4.5 | $0.00006 | $0.00103 |
Grade A, and why
pr-feedback 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 8d ago.
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.
How it starts
The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PR feedback — closing the loop with a human reviewer
The safest autonomy class, and the default, ends with a change on a branch and a person merging it. So the ordinary last step of this plugin's work is a pull request somebody reviews — and it was the one step with no protocol.
tyran:reviewergoverns our own internal review; this governs theirs.
The three surfaces, and why one of them is a trap
GitHub keeps pull-request feedback in three separate resources:
| Surface | Endpoint | What lives there |
|---|---|---|
| Conversation | /issues/{n}/comments |
Plain comments on the PR |
| Inline review comments | /pulls/{n}/comments |
Anchored to a line of the diff |
| Reviews | /pulls/{n}/reviews |
The submitted verdict and its body text |
A review's body is not in the inline-comments collection. Reviewers write their summary there, and bots put whole findings there — anything that could not be anchored to a changed line, which is exactly the "outside diff range" class.
Measured, against a public repository: cli/cli PR #13944 has one review
carrying a written body and zero inline comments. An agent that reads only
/pulls/{n}/comments sees nothing on that PR and reports that there was nothing
to address. The report is true about what it looked at and false about what it
claims, which is the failure shape this whole plugin exists to refuse.
So: fetch all three, paginated, before triaging any of them. Print the
counts. 3 inline · 2 review bodies · 1 conversation is the first line of the
work, and it is what makes a missed surface visible.
Every comment gets a disposition
No comment is silently dropped. Each one ends as exactly one of:
- Fixed — with the commit that did it.
- Declined — with the reason, in one sentence. Disagreeing is allowed; disagreeing silently is not. If it is a product or scope decision rather than a technical one, it goes to the conductor instead of being decided here.
- Ticketed — real, out of this PR's scope, captured where it will be found again. A promise in a thread is not a ticket.
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.
- 8d ago First seen · 86 lines · 57 tokens per session scan A 4370b183a1b5
pr-feedback is a skill published in the GitHub repository jjanczur/tyran (86 stars, last pushed 5d ago), licensed Apache-2.0. It adds 57 tokens to every session and 1,035 once invoked, about $0.0003 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-08-30.
Other skills, from other repositories
procoder
Work like a senior developer in a repository governed by procoder: run the commit gate before calling anything done, format and lint through the binary, and drive the spec, plan, todo, backlog, and sprint chain in .procoder/. Use this skill when the repository contains a .procoder/ directory or an AGENTS.md naming…
ring:committing-changes
Commit changes with scope allowlist enforcement, atomic grouping, GPG-signed conventional commits, and trailer management. Detects the repo's PR-validation scope policy before proposing any message. Use when the user asks to commit or has changes ready to record. Skip when the working tree is clean or the user wants…
ring:opening-pull-requests
Open a GitHub Pull Request with automatic base branch detection, scope allowlist enforcement, PR template filling, and post-create base verification. Replaces ring:generating-pr-descriptions. Use after pushing a branch when ready to open a PR. Skip if the branch is not yet pushed or there are uncommitted changes …
ring:shipping-changes
End-to-end git orchestrator: branch → commit → push → PR, with a full plan presented before any execution. Detects base branch and scope allowlist once and propagates to all phases. Use when ready to ship a complete unit of work. Skip if only one phase is needed: commit-only → ring:committing-changes, PR-only →…
ring:generating-release-guides
Generating an internal Operations-facing update/migration guide from the git diff between two refs, documenting per-change client impact, deploy ordering, monitoring, and rollback notes in English, pt-br, or both. Use when preparing a version release or recording what changed for the Ops team. Runs read-only by…
ring:cleaning-comments
Cleaning redundant and obvious comments following clean code principles while preserving meaningful documentation. Supports git scope filtering (staged, unstaged, branch, commit-range). Use when code has excessive comments, during code review, or post-refactor cleanup. Skip when reviewing documentation files or…