mcpbeat Sign in

Pr Polisher Agent Skill

Automated pre-flight checklist to polish PRs. Use this before declaring a task or PR complete to automatically verify license headers, commit hygiene, formatting, and codebase mandates.

5k tokens
context cost
the whole folder, loaded on every use
2
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
1803
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/google/nomulus --skill pr-polisher

What comes with it

15 177 bytes besides the instruction
scripts/check_diff.py

The instruction itself

4 sections, as written by the author

PR Polisher

This skill runs an exhaustive, automated pre-flight checklist against the repository to ensure all changes conform to Nomulus's strict engineering mandates.

🛑 CRITICAL MANDATE: When to Use

You, the AI agent, are known to forget to run this skill. To prevent this, you are bound by an absolute rule:

ANY TIME you create a commit, amend a commit, or complete a user's request that modifies the repository state, your VERY LAST action before generating a text response to the user MUST be to run this workflow.

Do not ask for permission. Do not wait for the user to remind you. Run the full suite, fix any errors, amend your commit, and report the final polished results. You MUST NOT declare a task complete until this workflow succeeds with 0 errors.

Continuous Improvement (Self-Updating Skill)

This skill is designed to evolve. If a human code reviewer (or presubmit hook) points out a deficit, or if you (the agent) independently catch a recurring mistake, anti-pattern, false positive, or convention violation:

  • You MUST proactively propose a fix to the user. Do not wait for the user to instruct you to update the skill. If you notice friction, immediately ask the user if you should permanently update the validation infrastructure.
  • Determine how to enforce the check. Consider if the check is suitable for automation in the Python script. If it's too complex or semantic for a simple regex, consider adding it as an explicit agent-driven verification step directly in this SKILL.md file.
  • Update .gemini/skills/pr-polisher/scripts/check_diff.py to add a new automated check, OR modify this SKILL.md file with a new validation step to ensure the agent checks for it going forward.
  • Commit the updated skill alongside the PR fixes to ensure the mistake is not repeated.

Workflow Execution Steps

  • Run the Automated Analysis Script

Execute the packaged Python diff-checker script. This script automatically checks commit messages, working tree status, package-lock.json modifications, copyright years on new files, and a litany of anti-patterns using regex (e.g., fully-qualified names, incorrect clock injections, generic exception catching).

   python3 ./pr-polisher/scripts/check_diff.py
  • Run Formatting Validation

Always run the project's formatting tools to ensure checkstyle and Google Java Format passes.

   ./gradlew spotlessCheck javaIncrementalFormatCheck
   # OR if formatting is needed:
   ./gradlew spotlessApply javaIncrementalFormatApply
  • Run Presubmits and Compilation

Ensure that the project builds correctly and all presubmit checks pass. Use scoped builds when possible to save time and avoid unwanted side effects (like modifying console-webapp/package-lock.json).

   # Run presubmits
   ./gradlew runPresubmits

   # Verify compilation (use a scoped build if you only modified one module, e.g., :core)
   ./gradlew :core:build -x test
   # Run standard test suite if modifying core
   ./gradlew :core:standardTest
  • Verify PR Scope and Extraneous Files (Line-by-Line Inspection)

You must carefully review the entirety of your changes (git diff HEAD^ or git diff --cached). Examine every single file and line changed to explicitly verify that the change *belongs* in this PR. You MUST look for and revert:

  • Irrelevant changes: Formatting or refactoring in files unrelated to the PR's core purpose.
  • Accidental files: Test output files, temp scripts, plan files (e.g., codebase_review_plan.md), scratchpads, or anything else generated during your workflow that shouldn't be committed.
  • Unintended side effects: Changes to configuration files like package-lock.json unless explicitly required.
  • Verify Test Coverage Additions (Line-by-Line Inspection)

While looking at all the diffs, thoroughly check every single line to determine if any test changes or additions are necessary. If you have modified existing logic, added new branches, added a null check, or added new public methods, you MUST manually verify that the corresponding Test.java file covers these changes. If the test file or specific test cases do not exist, you must create them. A code review is not thorough if it only checks for compilation.

  • Verify Commit Description Accuracy

Re-read your commit message (git log -1 --pretty=format:%B). Compare it directly against the actual diff (git diff HEAD^) to verify that it completely and accurately describes ONLY the changes present in the commit.

  • If the scope of the PR changed during prompting, you MUST update the commit message to reflect the final state of the code.
  • Ensure that the primary purpose of the PR is mentioned first, and that no irrelevant or outdated changes from previous attempts are listed.
  • Address Errors, Amend, and Re-Run (Iterative Checking)

If any script throws an error, if scope was reduced, if the commit message was inaccurate, or if formatting changes were applied, you must stage those fixes and amend your commit:

   git add -u
   git commit --amend # Or git commit --amend --no-edit if only files changed

CRITICAL: You must loop back to Step 1 and run python3 ./pr-polisher/scripts/check_diff.py again. Continue this loop of checking and amending until the script definitively returns 0 ERRORS, the build/presubmits pass, and the working directory is perfectly clean. Do not assume your fixes worked without re-running the check.

Other skills for the same job

different authors, same section of the catalogue
GitHub Project Management
by ComeOnOliver
×3

Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning

14k tokens
Folder Structure Blueprint Generator
by github
vendor ×1

Comprehensive technology-agnostic prompt for analyzing and documenting project folder structures. Auto-detects project types (.NET, Java, React, Angular, Python, Node.js, Flutter), generates detailed blueprints with visualization options, naming conventions, file placement patterns, and extension templates for maintaining consistent code organization across diverse technology stacks.

3k tokens
Sequential Thinking
by mrgoonie
×1

Use when complex problems require systematic step-by-step reasoning with ability to revise thoughts, branch into alternative approaches, or dynamically adjust scope. Ideal for multi-stage analysis, design planning, problem decomposition, or tasks with initially unclear scope.

4k tokens
Openserv Multi Agent Workflows
by internet-court
×1

Multi-agent workflow examples to work together on the OpenServ Platform. Covers agent discovery, multi-agent workspaces, task dependencies, and workflow orchestration using the Platform Client. Read reference.md for the full API reference. Read openserv-agent-sdk and openserv-client for building and running agents.

24k tokens
Caveman Compress
by HoangNguyen0403
×1

> Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.

7k tokens scripts
API Patterns
by lingxling
×1

API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.

5k tokens scripts
Github Workflow Automation
by lingxling
×1

Patterns for automating GitHub workflows with AI assistance, inspired by [Gemini CLI](https://github.com/google-gemini/gemini-cli) and modern DevOps practices.

5k tokens
Domain Identification Grouping
by christophacham
×1

Groups existing components into logical business domains to plan service-based architecture. Use when asking "which components belong together?", "group these into services", "organize by domain", "component-to-domain mapping", or planning service extraction from an existing codebase. Do NOT use for identifying new domains from scratch (use domain-analysis) or analyzing coupling (use coupling-analysis).

10k tokens

How to use it

Copy the folder

Take google/pr-polisher from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.