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 agentmods add skills/bitflight-devops/skilllint/receiving-pr-reviewsnpx skills add bitflight-devops/skilllint --skill receiving-pr-reviewsgit clone --depth 1 https://github.com/bitflight-devops/skilllintWrote 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/bitflight-devops/skilllint/receiving-pr-reviews)<a href="https://agentmods.dev/skills/bitflight-devops/skilllint/receiving-pr-reviews"><img src="https://agentmods.dev/badge/skills/bitflight-devops/skilllint/receiving-pr-reviews.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 | $0.00055 | $0.02036 |
| Opus 5 | $0.00028 | $0.01018 |
| Sonnet 5 | $0.00011 | $0.00407 |
| Haiku 4.5 | $0.00006 | $0.00204 |
Grade A, and why
receiving-pr-reviews 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.
This is a copy
100% identical to receiving-pr-reviews — 38 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Receiving PR Reviews
-
Fetch every unresolved thread, every unresponded review, and Codex's approval state:
uv run ./.agents/skills/receiving-pr-reviews/scripts/pr_review_threads.py fetch --pr <N>If the helper cannot use
ghand GitHub MCP tools are available, use the lightweight GitHub MCP fallback for this workflow instead. Do not install or reconfigureghmerely to avoid the fallback, and do not run both paths for the same snapshot.Read
reviews_count,threads_count,unresolved_countandreviewability.blockerstogether — never treat an emptyunresolvedarray on its own as "nothing to do". Athreads_countof 0 means no inline thread landed, not that no review landed: a top-level approval orCOMMENTEDreview surfaces only throughreviews_with_body. A non-emptyblockersmeans the empty result set is expected and the fix is on the PR itself — undraft it, resolve the conflicts — not in the review queue.reviews_with_bodyis every review whose feedback lives in the review's own summary text rather than an inline comment.unresponded_reviewsnarrows that to the ones this run has not answered yet; treat every entry as actionable input. A thread'scomments_truncated: truemeans that one thread has passed 100 comments — page itscommentsconnection directly before concluding anything about it. Forcodex_approved, see step 7. -
For each unresolved thread or unresponded review: read it, validate the claim locally, assess against the change goal and repository instructions.
-
Implement, commit, and push a fix only when it improves the product — push before replying, so the SHA named in the reply is inspectable and resolving the thread never outruns what is actually on the remote.
Confirm that push's CI with
checksrather than hand-writing a polling loop:uv run ./.agents/skills/receiving-pr-reviews/scripts/pr_review_threads.py checks --pr <N> [--timeout-seconds 270]statusispassed,failed,pending, ornone—pendingis not green. Without--timeout-secondsthis is one snapshot; with it, the command sleeps--interval-secondsbetween polls and returns as soon as the verdict settles. Read the whole object rather than extracting one field:nonealongsidereviewability.mergeable: "CONFLICTING"means checks cannot start — GitHub builds no merge ref for a conflicting PR, so no workflow runs — which is what an apparently stalled PR usually is, and no amount of waiting will change it. A draft PR is not that case: workflows do run on drafts unless a workflow opts out, so a draft blocker inreviewability.blockerssays nothing about CI andcheckskeeps waiting through it.A bare
noneright after a push is not yet an answer — GitHub returns the same empty result before it has registered the push's workflow runs as it does for a repo with no CI.checksre-polls anoneonce to tell them apart, so pass--timeout-secondswhen you have just pushed rather than reading the first snapshot as final. -
Reply on that thread with the disposition — conclusion, evidence, commit SHA, or why no change was warranted:
uv run ./.agents/skills/receiving-pr-reviews/scripts/pr_review_threads.py reply --pr <N> --comment-id <databaseId> --body '...' -
Resolve the thread:
uv run ./.agents/skills/receiving-pr-reviews/scripts/pr_review_threads.py resolve --thread-id <id> -
A decision spanning threads (PR sequencing, rebase disposition), or a response to a
reviews_with_body/unresponded_reviewsentry, goes on the PR itself viagh pr comment <N> -R <owner>/<repo>— the same owner/repo this run used in step 1 — before the work it governs. When answering a specific entry, quote that review's ownurlfield from step 1's output in the comment body. That quotedurl, postdating the review, is what clears the review out ofunresponded_reviewson the next check; chronological order alone does not. -
Once all current threads and reviews are addressed, re-check with
watch, looping short calls rather than one long block:
What ships with it
5 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.
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.
- yesterday Changed · +15 lines 3166bbba7db1
- 5d ago First seen · 58 lines · 55 tokens per session scan A 6d00a5f1b48e
receiving-pr-reviews is a skill published in the GitHub repository bitflight-devops/skilllint (7 stars, last pushed yesterday), licensed MIT. It adds 55 tokens to every session and 2,036 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to receiving-pr-reviews, differing in 38 lines, and is treated as a copy.
Other skills, from other repositories
create-pr
Creates a GitHub PR with a Linear-ticket-prefixed title and a decision-led, narrative description for prisma-next. Use when the user wants to create a pull request, open a PR, or submit changes for review.
git-commit
Generate well-formatted git commit messages following conventional commit standards.
mcore-split-pr
Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.
commit-push-pr
Commit selected local changes, push the branch, and create or update a GitHub pull request with BitFun attribution. Use when the user asks to 提交 PR、提代码、commit and push、开 PR、create a pull request, or wants a Claude Code-like one-command PR publishing flow from BitFun.
commit
Commit current changes with a clear, descriptive message.
contributing
How to contribute to evlog, covering commit and PR conventions, changesets, the Definition of Done, testing rules, and the authored skills that walk through building a new adapter, enricher, framework integration, or map rule. Load this for any question about contributing, opening a PR, or adding something to the…