Review all open PRs on pyinfra-dev/pyinfra and maintain review files in .prs/:
Steps
Run sync script: Execute bash .claude/skills/review-prs/sync.sh to clean up stale reviews and get the list of PRs to update/create.
For each PR in the sync output (Update + New only, NOT Unchanged), launch agents using rolling concurrency (see Parallelism below) to review:
- Each agent gets: repo name, PR number, whether it's an update or new review.
- Agent fetches the PR diff via
gh pr diff --repo pyinfra-dev/pyinfra {number}.
- Agent also fetches
updatedAt via gh pr view --repo pyinfra-dev/pyinfra {number} --json updatedAt --jq .updatedAt and includes it in the review header as **PR Updated:** {timestamp}.
- Agent reads relevant source code files being modified (use Read/Grep, never assume).
- Agent writes the review file to
.prs/{number}.md.
Review format for each PR file (.prs/{number}.md):
# PR #{number} - {title}
**Author:** {author}
**URL:** https://github.com/pyinfra-dev/pyinfra/pull/{number}
**Review Date:** {YYYY-MM-DD}
**PR Updated:** {updatedAt ISO timestamp from GH API}
## Verdict: {GO | NO-GO | NEEDS-DISCUSSION}
{1-2 sentence summary of what the PR does}
## Issues
{Only if there are problems. Each issue should be a concise bullet with a code snippet if relevant. Skip this section entirely if no issues.}
## Notes
{Optional minor observations, nits, or suggestions. Keep brief.}
Review guidelines
- Be minimal: Only highlight actual problems or risks. Don't pad reviews with praise or restatements.
- Code snippets: When referencing problematic code, include the relevant snippet (keep short).
- Deep inspection: Always read the actual source code being modified. Never assume behavior - trace code paths, check callers, verify types. Use Grep/Read extensively.
- Verdict options:
- GO = safe to merge as-is or with trivial nits only
- NO-GO = has bugs, security issues, breaking changes, or significant design problems
- NEEDS-DISCUSSION = requires maintainer input on approach/design
Parallelism
Use rolling concurrency, not fixed batches. The goal is to keep ~5 PR reviews in flight at all times so a slow review never blocks a fast one.
- Spawn each PR-review agent with
run_in_background: true so completions arrive as individual notifications instead of blocking on a whole batch.
- Initial fill: in a single message, launch up to 5 background agents (one per PR) to saturate the in-flight pool.
- On each completion notification: if any PRs remain in the queue, immediately launch one new background agent to replace the finished one — keep the in-flight count at 5 until the queue is empty.
- Track three sets in your head (or via TaskCreate if it helps):
queued (not yet started), in_flight (background agents running), done (review file written). Move PRs between sets as agents complete.
- Do not wait for the full pool to drain before launching replacements — the whole point is to avoid that.
- Each agent should be given the full context: repo name, PR number, review format, and instruction to deeply inspect code.
Final Summary
Once all review updates are complete, output a summary table of PRs grouped by verdict. Re-read the PR files to collect updated verdicts for each.
Source: pyinfra-dev/pyinfra — distributed by TomeVault.
1---2name: pyinfra-dev-pyinfra-pyinfra3description: Review all open PRs on pyinfra-dev/pyinfra and maintain review files in `.prs/`:4---56Review all open PRs on pyinfra-dev/pyinfra and maintain review files in `.prs/`:78## Steps9101. **Run sync script**: Execute `bash .claude/skills/review-prs/sync.sh` to clean up stale reviews and get the list of PRs to update/create.11122. **For each PR** in the sync output (Update + New only, NOT Unchanged), launch agents using rolling concurrency (see Parallelism below) to review:13 - Each agent gets: repo name, PR number, whether it's an update or new review.14 - Agent fetches the PR diff via `gh pr diff --repo pyinfra-dev/pyinfra {number}`.15 - Agent also fetches `updatedAt` via `gh pr view --repo pyinfra-dev/pyinfra {number} --json updatedAt --jq .updatedAt` and includes it in the review header as `**PR Updated:** {timestamp}`.16 - Agent reads relevant source code files being modified (use Read/Grep, never assume).17 - Agent writes the review file to `.prs/{number}.md`.18193. **Review format** for each PR file (`.prs/{number}.md`):2021```markdown22# PR #{number} - {title}2324**Author:** {author}25**URL:** https://github.com/pyinfra-dev/pyinfra/pull/{number}26**Review Date:** {YYYY-MM-DD}27**PR Updated:** {updatedAt ISO timestamp from GH API}2829## Verdict: {GO | NO-GO | NEEDS-DISCUSSION}3031{1-2 sentence summary of what the PR does}3233## Issues3435{Only if there are problems. Each issue should be a concise bullet with a code snippet if relevant. Skip this section entirely if no issues.}3637## Notes3839{Optional minor observations, nits, or suggestions. Keep brief.}40```4142## Review guidelines4344- **Be minimal**: Only highlight actual problems or risks. Don't pad reviews with praise or restatements.45- **Code snippets**: When referencing problematic code, include the relevant snippet (keep short).46- **Deep inspection**: Always read the actual source code being modified. Never assume behavior - trace code paths, check callers, verify types. Use Grep/Read extensively.47- **Verdict options**:48 * **GO** = safe to merge as-is or with trivial nits only49 * **NO-GO** = has bugs, security issues, breaking changes, or significant design problems50 * **NEEDS-DISCUSSION** = requires maintainer input on approach/design5152## Parallelism5354Use **rolling concurrency**, not fixed batches. The goal is to keep ~5 PR reviews in flight at all times so a slow review never blocks a fast one.5556- Spawn each PR-review agent with `run_in_background: true` so completions arrive as individual notifications instead of blocking on a whole batch.57- **Initial fill**: in a single message, launch up to 5 background agents (one per PR) to saturate the in-flight pool.58- **On each completion notification**: if any PRs remain in the queue, immediately launch one new background agent to replace the finished one — keep the in-flight count at 5 until the queue is empty.59- Track three sets in your head (or via TaskCreate if it helps): `queued` (not yet started), `in_flight` (background agents running), `done` (review file written). Move PRs between sets as agents complete.60- Do not wait for the full pool to drain before launching replacements — the whole point is to avoid that.61- Each agent should be given the full context: repo name, PR number, review format, and instruction to deeply inspect code.6263## Final Summary6465Once all review updates are complete, output a summary table of PRs grouped by verdict. Re-read the PR files to collect updated verdicts for each.6667---68> Source: [pyinfra-dev/pyinfra](https://github.com/pyinfra-dev/pyinfra) — distributed by [TomeVault](https://tomevault.io).69<!-- tomevault:4.0:skill_md:2026-07-01 -->