Official agent skill

PR Push and Review Loop

by pydantic in pydantic/pydantic-ai

Covers what to do on opening a pull request and after every push: apply a label, watch CI to green, answer every review comment and escalate real design trade-offs.

OfficialMITAuto-check passedDevelopment

Install PR Push and Review Loop

skills CLI
$ npx skills add pydantic/pydantic-ai --skill pushing-commits-to-the-repo -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pydantic/pydantic-ai pushing-commits-to-the-repo --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pydantic/pydantic-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pushing-commits-to-the-repo .claude/skills/pushing-commits-to-the-repo && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pushing-commits-to-the-repo
GitHub stars
21k
Token cost
~2.4k tokens
SKILL.md length
1,374 words
Files
3
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Covers what to do on opening a pull request and after every push: apply a label, watch CI to green, answer every review comment and escalate real design trade-offs.

  • Works in 5 steps: Why we make these changes — State the… → New public surface — List each new… → User-visible behavior — Show the… → …
  • Opening a pull request in a repository that triages by labels
  • SKILL.md covers When you open the PR, Mechanical text/data refreshes, Before you push and After you push — the loop, plus 2 more sections
  • Calls gh

What it does

This skill treats pushing as the start of a loop. Work stops only when CI is green and no review comment is left unresolved. On opening a PR, the agent fetches the repository's actual label list with gh label list instead of guessing, applies one label naming what the PR is (bug, enhancement or documentation) plus a topic label where one fits, and quotes the real error if labeling fails rather than assuming it lacks permission. Before pushing it attempts the push and reads any real error, and it leaves nothing unstaged or uncommitted unless your instructions say otherwise.

After each push it watches CI to a terminal state, fixing failures that are its own and stating with evidence when a failure is a known flake or already present on main. Every comment, from bots and humans, gets triaged: a valid one is fixed, answered with what changed and given a thumbs-up reaction, an invalid one is answered with concrete code evidence and a thumbs-down, and none is ignored or resolved without a reply. When a comment needs a maintainer decision, the agent posts the background, its reasoning, the decision needed, the trade-offs and a recommendation, then polls for a reply every 30 minutes.

When your agent uses it

  • Opening a pull request in a repository that triages by labels
  • Pushing follow-up commits and waiting for CI to finish
  • Replying to every bot and human review comment on a PR
  • Raising a design trade-off to maintainers instead of guessing

Example prompts

  • “Open the pull request for this branch, label it, and keep going until CI is green.”
  • “CI failed after my last push, so work out whether it is my change or a known flake.”
  • “Go through the review comments on my PR, fix the valid ones and reply to the rest with evidence.”

Requirements

  • The gh command-line tool, with label permissions on the repository

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Why we make these changes — State the problem and decision in a few sentences. Link the issue.
  2. New public surface — List each new maintained symbol. Write none when there is none.
  3. User-visible behavior — Show the smallest before-and-after example. Replace it with a
  4. Verification — Link the exact proving tests from the PR diff. Put a minimal runnable
  5. What changes for existing users — State the effect in one sentence. Nothing is valid.

What it can do on your machine

Read from SKILL.md and the folder at commit 69ea1e5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

PR Push and Review Loop loads about 2.4k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 1,374 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~61
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from pydantic/pydantic-ai at commit 69ea1e5, republished under its MIT licence (© pydantic). 1,374 words, ~2,357 tokens.

Download SKILL.mdSave it as .claude/skills/pushing-commits-to-the-repo/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
pushing-commits-to-the-repo
description
Open and advance a PR — write a current title and body, label it, review every push subject to the mechanical-refresh exception, watch CI, and triage every comment. Use whenever you open a PR or push a commit to one.

pushing-commits-to-the-repo

Pushing starts a loop; it does not end the task. Work stops only when CI is green AND no comment is left unresolved.

When you open the PR

Write the title and body

Follow the title and template rules in the root AGENTS.md.

Keep visible body content within 40 lines. Exclude template lines and collapsed <details> contents from the count. For a feature or behavior change, use this order:

  1. Why we make these changes — State the problem and decision in a few sentences. Link the issue.
  2. New public surface — List each new maintained symbol. Write none when there is none.
  3. User-visible behavior — Show the smallest before-and-after example. Replace it with a call-path diff when the changed call chain explains the behavior; do not include both.
  4. Verification — Link the exact proving tests from the PR diff. Put a minimal runnable playground in <details> only when it helps reviewers reproduce the behavior.
  5. What changes for existing users — State the effect in one sentence. Nothing is valid.

Use one collapsed <details> section per goal only when the PR has multiple independent goals. For a trivial PR, use the issue link, a short summary, and the test plan.

User-visible call-path diff

Use one fenced diff tree from the public entry point to the changed observable result.

  • Format each node as path/file.py :: Class.method() or path/file.py :: function().
  • Indent each callee beneath its caller with └─. Preserve enough unchanged nodes to show each edge.
  • Collapse irrelevant intermediate calls as … unchanged machinery ….
  • Include arguments only when they explain the change.
  • Include results only on relevant leaves.
  • Keep the shared caller prefix unmarked. Mark only diverging nodes, relevant arguments, or results.
  • Target 12 content lines inside the fence. Never exceed 20; collapse secondary branches instead.
Keep labels current with the title and body

Assign title, body, and label updates to the same subagent. Reconcile labels whenever the title or body changes.

Run .agents/skills/pushing-commits-to-the-repo/label-catalog and give the subagent the printed file path. The checked-in catalog supplies clones and worktrees without label-read requests. Run the helper with --refresh after creating, renaming, or updating repository labels. Commit refreshed catalog changes. The helper uses at most two requests and verifies completeness before replacing the catalog. Never fetch labels individually or pass raw label API responses.

Keep the category label aligned with the PR's purpose (bug, feature, docs, chore, refactor). Add existing topic labels for every subject materially covered by the final title, body, and diff. Ignore incidental references, checklist text, and verification boilerplate when choosing topics. Remove topic labels only when the final scope no longer supports those labels. Preserve size, priority, review, and automation labels. Do not create or rename labels unless the user requests that change. Apply label additions and removals in a batch with the title/body update. Verify the resulting metadata.

Apply exactly one package label: pkg:core, pkg:harness, pkg:clai2, pkg:evals, pkg:graph or pkg:clai. Use the catalog descriptions to choose. Tests and docs count toward the package they cover. Use pkg:core for repository infrastructure. For changes spanning packages, choose the package whose users the change serves.

Labelling needs triage permission on the repo (Pydantic team members and their agents). If it fails, quote the actual error rather than concluding you lack permission. Size labels are applied automatically — don't set them.

Mechanical text/data refreshes

A small mechanical text/data refresh changes no code, runtime behavior, CI logic, or substantive instruction or review policy. A catalog-row refresh is one example.

For this case, skip local pre-push-review and any additional substantive review dispatch. Do not ask for a second-opinion choice. Automatic configured CI and hosted reviews still run.

Before you push

  • Commit the exact state you intend to push. Leave nothing staged, unstaged or uncommitted unless the user's instructions override this.
  • For all other diffs, run pre-push-review before each push. Address every finding, commit the fixes, and repeat the review until it returns no findings. This applies before the first PR push and between every later PR iteration.
  • A pre-push-review verdict belongs to the diff it read. Any later commit voids it — re-run against the new diff instead of carrying the earlier pass forward, and name the commit range each verdict covers when you report it.
  • Never force-push an open PR branch. Push follow-up commits so previous reviews remain valid; maintainers can squash them when merging.
  • Attempt the push. If it fails, read the real error — do not preemptively decide you lack permission from a flag or setting.

After you push — the loop

  1. Watch CI to a terminal state. Don't idle. If it fails, diagnose: fix if the failure is yours; if it's a known flake or pre-existing on main, say so with evidence.
  2. Triage every comment (bots and humans alike). For each one:
    • Valid → fix it, then reply saying what changed, and react 👍.
    • Invalid → reply explaining concretely why (with code evidence), and react 👎.
    • Never silently ignore a comment, and never resolve a thread without a reply.
  3. Escalate real trade-offs, don't guess. If a comment needs a maintainer decision (a design choice, an API trade-off, a behavioral default), leave a comment containing: the background, your reasoning, the decision that needs making, the trade-offs (pros/cons of each option), and your recommendation. Then poll every 30 minutes for a reply and continue when it lands.
  4. Repeat until CI is green and no comment is outstanding.
Show full SKILL.md (487 more words)Show less

When the loop completes — consider a deep douwebot review

The repo has two standards reviewers, and they are independent:

  • CI Review runs automatically once the CI workflow succeeds on the PR's current head. It submits an APPROVE or REQUEST_CHANGES verdict and has the more rigorous process — severity scale, sub-agent fan-out, per-finding verification.
  • douwebot runs only when the douwebot label is applied, on a stronger model. It posts inline findings and a formal APPROVE or REQUEST_CHANGES review, and it deletes the label when it finishes, so each application buys exactly one review of the diff as it stands at that moment.

Applying the label adds a second opinion; it does not suppress or replace CI Review.

  • Skip additional-review selection for a mechanical text/data refresh defined above.

Once the loop above has terminated — CI green, every comment triaged — decide whether to apply it before handing the PR back or requesting merge:

  • Apply it last, not early. It won't re-run on later pushes, so a deep review of a still-moving PR is wasted money.
  • Use judgment on whether it's warranted. Skip it when you're highly confident there's nothing left to catch (typo fixes, dependency bumps, mechanical chores). Apply it for substantive changes: new features, behavior changes, public API surface, non-trivial bug fixes — and user-facing docs, where it catches things like examples using outdated models. In between, weigh cost against risk; smaller PRs are cheaper to review, so lean toward applying when unsure.
  • How: gh pr edit <number> --add-label douwebot. This requires triage permission on the repo (Pydantic team members and their agents). If it fails, quote the actual error — don't skip it based on an assumed lack of permission.
  • Known refusal: the job fails without reviewing if the PR touches an AGENTS.md or CLAUDE.md at any depth, CLAUDE.local.md, .mcp.json, or anything under .claude/, .agents/ or agent_docs/ — a security guard against a PR editing the reviewer's own instructions. The guard is skipped for an author with write or admin access on the repo. Don't apply the label to a PR the guard covers; the red check is the guard working.
  • Afterwards, re-enter the loop. The review posts inline comments and a formal verdict that need the same triage as any other review.

Before handing the PR back

Run this final metadata check after CI, comments, and any selected douwebot review have settled:

  1. Dispatch a fresh subagent that has not worked on the PR.
  2. Give it the PR URL, linked issue, current base...HEAD diff, final test status, title, body, labels, and complete catalog.
  3. Ask it to check only the title, body, and labels against this skill and the root AGENTS.md.
  4. Require either current or exact corrections: replacement title/body and label additions/removals.
  5. Apply every correction. Committed changes restart the post-push loop; GitHub metadata-only changes do not.
  6. After a replacement, repeat the check with another fresh subagent.
  7. Hand the PR back only after the check reports current.

© pydantic, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in .agents/skills/pushing-commits-to-the-repo of pydantic/pydantic-ai.

  • SKILL.md
  • label-catalog
  • labels.tsv

Open the folder on GitHubat commit 69ea1e5

Compare with similar skills

PR Push and Review Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

PR Push and Review Loop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
PR Push and Review Loop this skillpydantic/pydantic-ai21k—~2.4kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Pull Request Babysitterthedotmack/claude-mem99k—~1.1kAutomated safety check: PassApache-2.0
Renovate Actions PR Reviewbacknotprop/plannotator9.3k—~640Automated safety check: PassApache-2.0
Orca ReviewContinuum-AI-Corp/Orca-Code-Review175—~3.5kAutomated safety check: PassMIT
Code Reviewoaslananka/kicad-mcp-pro122—~3.9kAutomated safety check: PassMIT

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Pull Request Babysitter

    thedotmack/claude-mem

    Keeps watching a pull request, fixing real review and CI problems and resolving stale threads, until it is clean and ready to merge.

    99k GitHub stars~1.1k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Renovate Actions PR Review

    backnotprop/plannotator

    Reviews Renovate pull requests that bump GitHub Actions by checking pinned SHAs against upstream tags, scanning changelogs and confirming workflows stay compatible.

    9.3k GitHub stars~640 tokensUpdated today
    DevelopmentAuto-check passed
  • Orca Review

    Continuum-AI-Corp/Orca-Code-Review

    Review code changes yourself, locally, with OrcaCode Review's severity contract and merge gate — no GitHub Action, no OrcaRouter account, no API key.

    175 GitHub stars~3.5k tokensUpdated 20 days ago
    DevelopmentAuto-check passed
  • Code Review

    oaslananka/kicad-mcp-pro

    A skill your agent uses for GitHub Copilot pull request and code reviews in oaslananka/kicad-mcp-pro.

    122 GitHub stars~3.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    Drives an open pull request to merge-ready from inside a GitHub Copilot cloud agent, resolving review threads and local checks concurrently, without merging or retriggering CI.

    5.4k GitHub stars~3.9k tokensUpdated today
    DevelopmentAuto-check: warnings

More from pydantic/pydantic-ai

All 20 skills in this repo
  • Pydantic AI Harness

    pydantic/pydantic-ai

    Official

    Adds optional capabilities to Pydantic AI agents from pydantic-ai-harness, led by Code Mode, which runs many tool calls as one sandboxed Python script.

    21k GitHub stars~4.9k tokensUpdated today
    Auto-check passed
  • Building Pydantic AI Agents

    pydantic/pydantic-ai

    Official

    Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), workspaces, structured output, streaming, testing, and multi-agent patterns.

    21k GitHub stars~8.2k tokensUpdated today
    Auto-check passed
  • Complete Partial PR

    pydantic/pydantic-ai

    Official

    Evaluate and complete an issue or PR where the submitted patch fixes only a narrow symptom of the reported pain point.

    21k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Testing Skill

    pydantic/pydantic-ai

    Official

    Record, rewrite, and debug VCR cassettes for HTTP recordings.

    21k GitHub stars~839 tokensUpdated today
    Auto-check: notes
  • Migrating Agno To Pydantic AI

    pydantic/pydantic-ai

    Official

    Migrate Python Agno applications to Pydantic AI and, only when needed, Pydantic AI Harness.

    21k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Official

    Migrate Python applications from the Claude Agent SDK to Pydantic AI and, only when needed, Pydantic AI Harness.

    21k GitHub stars~1.6k tokensUpdated today
    Auto-check passed

Categories

Questions about PR Push and Review Loop

What does PR Push and Review Loop do?

Covers what to do on opening a pull request and after every push: apply a label, watch CI to green, answer every review comment and escalate real design trade-offs. This skill treats pushing as the start of a loop. Work stops only when CI is green and no review comment is left unresolved.

When should I use PR Push and Review Loop?

PR Push and Review Loop fits situations like: opening a pull request in a repository that triages by labels; pushing follow-up commits and waiting for CI to finish; replying to every bot and human review comment on a PR; raising a design trade-off to maintainers instead of guessing.

How do I install PR Push and Review Loop in Claude Code?

Run `npx skills add pydantic/pydantic-ai --skill pushing-commits-to-the-repo -a claude-code`. Or copy the skill folder (.agents/skills/pushing-commits-to-the-repo in pydantic/pydantic-ai) into .claude/skills/pushing-commits-to-the-repo in your project. Claude Code loads it when a task matches its description.

How do I install PR Push and Review Loop in Codex?

Run `npx skills add pydantic/pydantic-ai --skill pushing-commits-to-the-repo -a codex`. Or copy the skill folder (.agents/skills/pushing-commits-to-the-repo in pydantic/pydantic-ai) into .agents/skills/pushing-commits-to-the-repo in your project. Codex loads it when a task matches its description.

Can I use PR Push and Review Loop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pydantic/pydantic-ai --skill pushing-commits-to-the-repo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pushing-commits-to-the-repo, .gemini/skills/pushing-commits-to-the-repo, .github/skills/pushing-commits-to-the-repo and .opencode/skills/pushing-commits-to-the-repo in your project.

What does PR Push and Review Loop need to run?

Going by SKILL.md and its folder, PR Push and Review Loop needs the command-line tools its instructions call (gh). Our summary lists: The gh command-line tool, with label permissions on the repository.

Does PR Push and Review Loop access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is PR Push and Review Loop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does PR Push and Review Loop use?

PR Push and Review Loop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does PR Push and Review Loop use?

About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to PR Push and Review Loop?

Skills that share tags, products or a category with PR Push and Review Loop: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Pull Request Babysitter (thedotmack/claude-mem, 99k stars), Renovate Actions PR Review (backnotprop/plannotator, 9.3k stars) and Orca Review (Continuum-AI-Corp/Orca-Code-Review, 175 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains PR Push and Review Loop?

pydantic (a GitHub organization, an official publisher) maintains it in pydantic/pydantic-ai, which has 20,537 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 11, 2026.

Source: pydantic/pydantic-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.