Back to list
dotnet

pr-finalize

by dotnet

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.

23,153🍴 1,906📅 Jan 23, 2026

Use Cases

Efficient Code Generation

Auto-generate boilerplate code to reduce development time.

🔍

Code Review Assistance

Analyze PR changes and suggest improvements.

🔧

Refactoring Suggestions

Suggest refactoring options to improve code quality.

FAQ

SKILL.md


name: pr-finalize description: Verifies PR title and description match actual implementation. Works on any PR. Optionally updates agent session markdown if present. metadata: author: dotnet-maui version: "1.0" compatibility: Requires GitHub CLI (gh)

PR Finalize

Ensures PR title and description accurately reflect the implementation for a good commit message.

Works on any PR - Does not require agent involvement or session markdown.

Inputs

InputRequiredSource
PR numberYesUser provides
Session markdownOptional.github/agent-pr-session/issue-XXXXX.md or pr-XXXXX.md

Outputs

  1. Recommended PR title - Platform prefix, behavior-focused
  2. Recommended PR description - NOTE block + structured content
  3. Session markdown updates (only if file exists)

Completion Criteria

  • Reviewed PR diff to understand actual implementation
  • Verified title matches implementation (or recommended fix)
  • Verified description matches implementation (or recommended fix)
  • Checked for session markdown and updated if needed

When to Use

  • Before merging any PR
  • "Finalize PR #XXXXX"
  • "Check PR description for #XXXXX"
  • When implementation changed during review

When NOT to Use

  • ❌ For analyzing lessons learned (use learn-from-pr skill instead)
  • ❌ For writing or running tests (use write-tests or sandbox)
  • ❌ For investigating why PR build failed (use pr-build-status)

Constraints

  • Don't change PR title/description directly - Only recommend changes
  • Don't modify code - Only verify title/description accuracy
  • Match existing style - Follow PR template format
  • Preserve user content - Enhance, don't replace custom descriptions

Workflow

Step 1: Get PR State

gh pr view XXXXX --json title,body,files
gh pr diff XXXXX
gh pr view XXXXX --json commits --jq '.commits[].messageHeadline'

Step 2: Analyze Implementation

Read the diff and understand:

  • What was actually changed (not what was planned)
  • Which platforms are affected
  • What the fix does

Step 3: Verify Title

RequirementGoodBad
Platform prefix (if specific)[iOS] Fix Shell back buttonFix Shell back button
Describes behaviorFix long-press not triggering eventsFix #23892
No noise prefixes[iOS] Fix...[PR agent] Fix...

Step 4: Verify Description

Must include:

  1. NOTE block (for testing PR artifacts)
  2. Description of Change (matches actual implementation)
  3. Issues Fixed

Should include (for agent context):

  • Root cause
  • Fix approach
  • Key insight

Step 5: Session Markdown (If Exists)

ls .github/agent-pr-session/issue-XXXXX.md .github/agent-pr-session/pr-XXXXX.md 2>/dev/null

If file exists:

  • Check if "Selected Fix: [PENDING]" → update with actual fix
  • Add "ACTUAL IMPLEMENTED FIX" section if missing
  • Document lessons learned

If file doesn't exist: Skip this step.

Step 6: Present Recommendations

Output recommended title and description.


Error Handling

SituationAction
PR not foundAsk user to verify PR number
No session markdownProceed - only verify title/description
Title already goodConfirm it's good, no change needed
Description missingGenerate recommended description

Output Template

# PR Finalize: #XXXXX

## Title Assessment
**Current:** [current title]
**Recommendation:** [recommended title, or "✅ Current title is good"]

## Description Assessment
**Issues:**
- [issue 1]
- [issue 2]

**Recommended Description:**

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you!

### Description of Change

[Brief summary matching implementation]

**Root cause:** [Why bug occurred]

**Fix:** [What code now does]

### Issues Fixed

Fixes #XXXXX

## Session Markdown
[Updated / No file exists / Already complete]

Title Requirements

  • Platform prefix if platform-specific: [iOS], [Android], [Windows], [MacCatalyst]
  • Behavior-focused - Describe what changed, not issue number
  • Concise - Should fit in commit message subject line

Description Requirements

Required Sections

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you!

### Description of Change
[Must match actual implementation]

### Issues Fixed
Fixes #XXXXX
ElementPurpose
Root causeWhy the bug occurred
Fix approachWhat the code now does
Key insightNon-obvious understanding
What to avoidPatterns that would re-break

Session Markdown Updates (Optional)

If session markdown exists and is incomplete, add:

## ACTUAL IMPLEMENTED FIX

**Selected Fix:** [Brief description]

**What was implemented:**
1. [What changed]
2. [Key files]

**Key insight:** [Non-obvious understanding]

## Lessons Learned

**What would have helped:**
1. [Suggestion 1]
2. [Suggestion 2]

Common Issues

ProblemSolution
Description doesn't match codeRewrite from actual diff
Missing root causeAdd from issue/analysis
References wrong approachUpdate to describe final approach
"Selected Fix: [PENDING]"Document actual implementation

Example

PR #33352 - MacCatalyst crash on window disposal

Step 1: Get PR State

gh pr view 33352 --json title,body,files
# Title: "Fix ObjectDisposedException in PageViewController"
# Files: PageViewController.cs

Step 2: Analyze Implementation

  • Fix adds null check for window.Handler before accessing services
  • Platform: MacCatalyst specific
  • Prevents crash during TraitCollectionDidChange when window disposed

Step 3: Verify Title

  • Current: "Fix ObjectDisposedException in PageViewController"
  • Assessment: Missing platform prefix
  • Recommended: [MacCatalyst] Fix ObjectDisposedException in PageViewController.TraitCollectionDidChange

Step 4: Verify Description

  • Missing NOTE block
  • Missing root cause explanation
  • Generate recommended description

Output:

# PR Finalize: #33352

## Title Assessment
**Current:** Fix ObjectDisposedException in PageViewController
**Recommendation:** [MacCatalyst] Fix ObjectDisposedException in PageViewController.TraitCollectionDidChange

## Description Assessment
**Issues:**
- Missing NOTE block for testing PR artifacts
- Missing root cause explanation

**Recommended Description:**
[Full description with NOTE block, root cause, fix approach...]

## Session Markdown
Updated - Added "ACTUAL IMPLEMENTED FIX" section

Integration

  • pr-finalize → Verify PR ready to merge (this skill)
  • learn-from-pr → Extract lessons after finalization
  • learn-from-pr agent → Extract lessons AND apply improvements

Score

Total Score

90/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 1000以上

+15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

+5
Issue管理

オープンIssueが50未満

0/5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon