PR

pr-finalize

Validates PR metadata and performs code reviews to ensure quality before merge.

Install

mkdir -p .claude/skills/pr-finalize && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3269" && unzip -o skill.zip -d .claude/skills/pr-finalize && rm skill.zip

Installs to .claude/skills/pr-finalize

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Finalizes any PR for merge by verifying title/description match implementation AND performing code review for best practices. Use when asked to "finalize PR", "check PR description", "review commit message", before merging any PR, or when PR implementation changed during review. Do NOT use for extracting lessons (use learn-from-pr), writing tests (use write-tests-agent), or investigating build failures (use azdo-build-investigator and ci-analysis).
452 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Verifies PR title and description against implementation
  • Performs code review for best practices
  • Generates structured summary reports
  • Identifies missing required PR elements

How it works

It analyzes PR metadata and code diffs to produce a report on consistency and quality without performing any direct GitHub actions.

Inputs & outputs

You give it
Pull Request identifier
You get back
Analysis report in pr-finalize-summary.md

When to use pr-finalize

  • Verify PR descriptions
  • Perform pre-merge code review
  • Check implementation consistency

About this skill

PR Finalize

Ensures PR title and description accurately reflect the implementation, and performs a code review for best practices before merge.

Standalone skill - Can be used on any PR, not just PRs reviewed by the pr-review skill.

Two-Phase Workflow

  1. Title & Description Review - Verify PR metadata matches implementation
  2. Code Review - Review code for best practices and potential issues

🚨 CRITICAL RULES

1. NEVER Approve or Request Changes

AI agents must NEVER use --approve or --request-changes flags.

ActionAllowed?Why
gh pr review --approveNEVERApproval is a human decision
gh pr review --request-changesNEVERBlocking PRs is a human decision

2. NEVER Post Comments Directly

This skill is ANALYSIS ONLY. Never post comments using gh commands.

ActionAllowed?Why
gh pr review --commentNEVERReview-PR.ps1 handles posting via scripts
gh pr commentNEVERReview-PR.ps1 handles posting via scripts
Analyze and report findingsYESThis is the skill's purpose

Correct workflow:

  1. This skill: Analyze PR, produce findings and write to pr-finalize-summary.md
  2. Human-controlled follow-up: PR finalization is not part of the automated Review-PR.ps1 flow. Only post or use the summary when a user explicitly asks for PR finalization.

Only humans control when comments are posted. Your job is to analyze and present findings.


Phase 1: Title & Description

Core Principle: Preserve Quality

Review existing description BEFORE suggesting changes. Many PR authors write excellent, detailed descriptions. Your job is to:

  1. Evaluate first - Is the existing description good? Better than a template?
  2. Preserve quality - Don't replace a thorough description with a generic template
  3. Enhance, don't replace - Add missing required elements (NOTE block, issue links) without rewriting good content
  4. Only rewrite if needed - When description is stale, inaccurate, or missing key information

Usage

# Get current state (no local checkout required)
gh pr view XXXXX --json title,body
gh pr view XXXXX --json files --jq '.files[].path'

# Review commit messages (helpful for squash/merge commit quality)
gh pr view XXXXX --json commits --jq '.commits[].messageHeadline'

# Review actual code changes
gh pr diff XXXXX

# Optional: if the PR branch is checked out locally
git diff origin/main...HEAD

Evaluation Workflow

Step 1: Review Existing Description Quality

Before suggesting changes, evaluate the current description:

Quality IndicatorLook For
StructureClear sections, headers, organized flow
Technical depthFile-by-file changes, specific code references
ScanabilityEasy to find what changed and where
AccuracyMatches actual diff - not stale or incorrect
CompletenessPlatforms, breaking changes, testing info

Step 2: Compare to Template

Ask: "Is the existing description better than what my template would produce?"

  • If YES: Keep existing, only add missing required elements
  • If NO: Suggest improvements or replacement

Step 3: Produce Output

  • Recommended PR title (if change needed)
  • Assessment of existing description
  • Specific additions needed (e.g., "Add NOTE block at top")
  • Only full replacement if description is inadequate

Title Requirements

The title becomes the commit message headline. Make it searchable and informative.

RequirementGoodBad
Platform prefix (if specific)[iOS] Fix Shell back buttonFix Shell back button
Describes behavior, not issue[iOS] SafeArea: Return Empty for non-ISafeAreaView viewsFix #23892
Captures the "what"Return Empty for non-ISafeAreaViewFix SafeArea bug
Notes model change if applicable(opt-in model)(omitted)
No noise prefixes[iOS] Fix...[PR agent] Fix...

Title Formula

[Platform] Component: What changed (model change if any)

Examples:

  • [iOS] SafeArea: Return Empty for non-ISafeAreaView views (opt-in model)
  • [Android] CollectionView: Fix scroll position reset on item update
  • [Windows] Shell: Use NavigationView instead of custom flyout

Description Requirements

PR description should:

  1. Include the base sections from .github/PULL_REQUEST_TEMPLATE.md ("Description of Change" and "Issues Fixed"). The skill adds additional structured fields (Root cause, Fix, Key insight, etc.) as recommended enhancements for better agent context.
  2. Match the actual implementation
### Description of Change
[Must match actual implementation]

### Issues Fixed
Fixes #XXXXX

Content for Future Agents

The title and description become the commit message. Future agents searching git history will use this to understand:

  • What changed and why
  • What patterns to follow or avoid
  • How this change affects related code

Required Elements for Agent Success

ElementPurposeExample
Root causeWhy the bug occurred"Non-ISafeAreaView views falling through to return baseSafeArea"
Fix approachWhat the code now does"Return SafeAreaPadding.Empty for views without interface"
Philosophy/model changeIf behavior model changed"Before: opt-out. After: opt-in via interface"
Key interfaces/typesTypes agents need to know"ISafeAreaView, ISafeAreaView2 = opt-in contract"
What NOT to doFailed approaches to avoid"Don't use Element type in Platform layer"
Architectural constraintsLayer boundaries, type availability"Platform layer cannot reference Controls types"
Edge casesKnown limitations or risks"Legacy layouts are [Obsolete], custom views need interface"

"What NOT to Do" Section (Critical)

When try-fix or debugging revealed failed approaches, document them:

### What NOT to Do (for future agents)

- ❌ **Don't use [Type] in [Layer]** - [Why it fails]
- ❌ **Don't use [Pattern]** - [Why it's brittle/wrong]
- ❌ **Don't [Approach]** - [Why it doesn't work]

This prevents future agents from repeating failed experiments.

Philosophy/Model Changes

When a fix changes the behavioral model (not just fixing a bug), call it out explicitly:

**This is a philosophy change:**
- **Before:** [Old behavior model]
- **After:** [New behavior model]

Example: "Before: Safe area applied by default (opt-out). After: Only views implementing ISafeAreaView get safe area (opt-in)."

Common Issues

ProblemCauseSolution
Description doesn't match codeImplementation changed during reviewUpdate description to match actual diff
Missing root causeAuthor focused on "what" not "why"Add root cause from issue/analysis
References wrong approachStarted with A, switched to BUpdate to describe final approach
Missing NOTE blockAuthor didn't use templatePrepend NOTE block, keep rest
Good description replacedAgent used template blindlyEvaluate existing quality first

Output Format

When Existing Description is Good

## PR #XXXXX Finalization Review

### ✅ Title: [Good / Needs Update]
**Current:** "Existing title"
**Recommended:** "[Platform] Improved title" (if needed)

### ✅ Description: Excellent - Keep As-Is

**Quality assessment:**
- Structure: ✅ Clear sections with headers
- Technical depth: ✅ File-by-file breakdown
- Accuracy: ✅ Matches implementation
- Completeness: ✅ Platforms, breaking changes noted

**Only addition needed:**
- ❌ Missing NOTE block - prepend to top

**Action:** Add NOTE block, preserve everything else.

When Description Needs Rewrite

Use structured template only when existing description is inadequate:

### Root Cause

[Why the bug occurred - be specific about the code path]

### Description of Change

[What the code now does]

**This is a philosophy change:** (if applicable)
- **Before:** [Old model]
- **After:** [New model]

[Cross-platform alignment notes if relevant]

### Key Technical Details

**[Relevant interfaces/types]:**
- `InterfaceA` - [What it does]
- `InterfaceB` - [What it does]

**[Category] that [work/don't work]:**
- List of types/views affected

### What NOT to Do (for future agents)

- ❌ **Don't [approach 1]** - [Why it fails]
- ❌ **Don't [approach 2]** - [Why it's wrong]
- ❌ **Don't [approach 3]** - [Constraint that prevents it]

### Edge Cases

| Scenario | Risk | Mitigation |
|----------|------|------------|
| [Case 1] | Low/Medium/High | [How to handle] |
| [Case 2] | Low/Medium/High | [How to handle] |

### Issues Fixed

Fixes #XXXXX

### Platforms Tested

- [x] iOS
- [x] Android
- [ ] Windows
- [ ] Mac

Quality Comparison Examples

Good Existing Description (KEEP)

## Changes Made

### 1. **PickerHandler.iOS.cs** - MacCatalyst-specific improvements

#### Added UIAlertController instance field
- Declared `UIAlertController? pickerController` as instance field...

#### Improved picker dismiss logic
- Moved picker dismiss logic from event handler to "Done" button action
- Removed `EditingDidEnd` event handler causing duplicate dismiss calls

## Platforms Affected
- **MacCatalyst** (primary)
- iOS (no behavior changes, shared code)

## Breaking Changes
None

Verdict: Excellent - file-by-file breakdown, specific changes, platforms, breaking changes. Keep it.

Poor Existing Description (REWRITE)

Fixed the issue mentioned in #30897

Verdict: Inadequate - no detail on what changed. Use template.


Phase 2: Code Review

After verifying title/description, perform a code review to catch best practice violations and potential is


Content truncated.

When not to use it

  • When attempting to approve or request changes
  • When trying to post comments directly to GitHub

Limitations

  • Cannot approve or block PRs
  • Cannot post comments to GitHub
  • Requires manual human follow-up

How it compares

It focuses on objective analysis and reporting for human review rather than automating the approval or commenting process.

Compared to similar skills

pr-finalize side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
pr-finalize (this skill)12moReviewIntermediate
effective-go3239moNo flagsBeginner
architect-review1094moNo flagsAdvanced
resolve-conflicts818moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

effective-go

openshift

Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations.

323536

architect-review

sickn33

Master software architect specializing in modern architecture patterns, clean architecture, microservices, event-driven systems, and DDD. Reviews system designs and code changes for architectural integrity, scalability, and maintainability. Use PROACTIVELY for architectural decisions.

109320

resolve-conflicts

antinomyhq

Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.

81334

solid-principles

SmidigStorm

Enforce SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) in object-oriented design. Use when writing or reviewing classes and modules.

57236

python-testing-patterns

wshobson

Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.

77204

codex

Lucklyric

Invoke Codex CLI for complex coding tasks requiring high reasoning capabilities. This skill should be invoked when users explicitly mention "Codex", request complex implementation challenges, advanced reasoning, or need high-reasoning model assistance. Automatically triggers on codex-related requests and supports session continuation for iterative development.

32238

Search skills

Search the agent skills registry