AgentSkillsCN

update-pr

使用新提交更新现有拉取请求

SKILL.md
--- frontmatter
name: update-pr
description: Update existing pull request with new commits

Update Pull Request

Push new commits to an existing pull request and optionally update its description.

Workflow

  1. Verify branch and PR: Ensure you're on a branch with an existing PR
  2. Review all commits: Show all commits that will be in the PR
  3. Ask user for confirmation: Before pushing, show what will be pushed and ask for confirmation
  4. Push any unpushed changes: Push any new commits to origin if user confirms
  5. Recompute PR description: Generate a fresh PR description based on all commits, using the previous description as a guide
  6. Update PR: Update both title (if needed) and description
  7. Return PR URL: Show the updated PR URL

Instructions

  1. Check current branch and PR status:

    bash
    git branch --show-current
    gh pr view --json number,title,url,baseRefName,body
    
    • If no PR exists, inform user and suggest using /create-pr instead
    • If on main/master, stop and ask user to switch branches
    • Store the current title and body for reference
  2. Review ALL commits in the branch (not just unpushed ones):

    bash
    # Get all commits in this branch compared to the base branch
    git log <base-branch>..HEAD --oneline
    
    # Also check if there are unpushed commits
    git log origin/<current-branch>..HEAD --oneline
    
    • Show all the commits that are part of this PR
    • Note if there are unpushed commits that need to be pushed
  3. ASK USER before pushing any unpushed commits:

    • Show user what commits will be pushed (from step 2)
    • Ask: "Ready to push these commits to update the PR?"
    • Wait for user confirmation
    • This respects the user's git workflow rules
  4. Push any unpushed commits (if user confirmed):

    bash
    git push
    
    • Only run this if there were unpushed commits AND user confirmed
    • If already up to date, skip this step
  5. Analyze all changes and recompute PR description:

    • Review ALL commits in the branch (from step 2)
    • Look at the previous PR description and title as a guide
    • Generate a fresh, comprehensive PR description that:
      • Accurately reflects ALL changes in the branch
      • Follows the same format/style as the previous description
      • Uses concise bullet points
      • Groups related changes together
      • Is complete but not verbose
    • Consider if the title needs updating to better reflect the scope
  6. Update the PR:

    bash
    # Update title if needed
    gh pr edit <pr-number> --title "New Title"
    
    # Update description
    gh pr edit <pr-number> --body "$(cat <<'EOF'
    ## Summary
    - First main change
    - Second main change
    - Additional improvements
    EOF
    )"
    
    • Always update the description
    • Only update the title if the current one doesn't accurately reflect the changes
  7. Return the PR URL and summary of what was done

Key Principles

  • Complete recomputation: Generate the description from scratch based on ALL commits
  • Use previous as guide: Keep similar format and style from the previous description
  • Smart title updates: Only change title if it's no longer accurate
  • Account for pushed commits: Handle cases where commits were already pushed
  • Clear and comprehensive: Description should cover everything in the branch
  • Concise format: Keep it readable with bullet points, no unnecessary detail
  • Respect git workflow: Always ask user before pushing (per user's git workflow rules)

Example Output

code
✅ Found PR #123: "Add user authentication"

📝 All commits in this branch:
   - abc1234 Initial authentication setup
   - def5678 Add JWT token support
   - 789abcd Fix login validation
   - 012cdef Add password reset

📤 Unpushed commits: 2
   - 789abcd Fix login validation
   - 012cdef Add password reset

🚀 Pushing commits...
✅ Pushed to origin

🔄 Recomputing PR description based on all commits...
✅ Updated PR #123:
   - Title: "Add user authentication" (unchanged)
   - Description: Updated to reflect all changes

PR URL: https://github.com/org/repo/pull/123