AgentSkillsCN

commit-pr

在 GitHub 上提交更改、推送并创建 Pull Request。触发条件:当用户运行 /commit-pr 命令时。

SKILL.md
--- frontmatter
name: commit-pr
description: >
  Commit, push changes, and create a Pull Request on GitHub.
  Trigger: User runs /commit-pr command.
disable-model-invocation: true

When to Use

  • User explicitly runs /commit-pr command
  • User asks to "commit and create a PR"
  • User wants to submit changes for review

Prerequisites

  • gh CLI must be installed and authenticated
  • Repository must be hosted on GitHub
bash
# Verify gh is available and authenticated
gh auth status

Execution Flow

Step 1: Execute Commit Flow

First, execute the full /commit workflow:

  1. Analyze changes (git status, git diff)
  2. Generate commit message (Conventional Commits)
  3. Stage and commit
  4. Push to remote

See .claude/skills/commit/SKILL.md for details.

Step 2: Gather PR Context

bash
# Get current branch
git branch --show-current

# Get base branch (usually main)
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'

# Get all commits in this branch (not in base)
git log origin/main..HEAD --oneline

# Get full diff against base
git diff origin/main...HEAD --stat

Step 3: Generate PR Content

Title: Based on the commit message or branch purpose

  • If single commit: Use commit message as title
  • If multiple commits: Summarize the feature/fix

Body: Structured summary using this template:

markdown
## Summary
<1-3 bullet points describing the changes>

## Test plan
- [ ] <Testing checklist items>

---
Generated with [Claude Code](https://claude.ai/code)

Step 4: Create Pull Request

bash
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
- <change 1>
- <change 2>

## Test plan
- [ ] <test item 1>
- [ ] <test item 2>

---
Generated with [Claude Code](https://claude.ai/code)
EOF
)"

Optional flags:

  • --base <branch> - Target branch (default: main)
  • --draft - Create as draft PR
  • --label <label> - Add labels
  • --assignee @me - Assign to self
  • --reviewer <user> - Request review

Step 5: Verify and Report

bash
# Get PR URL
gh pr view --web

Output Format

After successful execution, display:

code
Commit: <hash> <type>(<scope>): <subject>
Branch: <branch-name> -> main
PR: #<number> <title>
URL: https://github.com/<org>/<repo>/pull/<number>
Status: Ready for review

PR Title Guidelines

Commit TypePR Title Example
featAdd ISBN validation to book creation
fixFix token refresh race condition
refactorExtract validation logic to service
docsUpdate API documentation
testAdd unit tests for book handler

Rules:

  • Capitalize first letter
  • No period at end
  • Be descriptive but concise
  • Include scope if helpful

PR Body Guidelines

Summary Section

  • 1-3 bullet points
  • Focus on WHAT and WHY
  • Link to issues if applicable: Closes #123

Test Plan Section

  • List manual testing steps
  • Note any automated tests added
  • Include edge cases to verify

Example Body

markdown
## Summary
- Add ISBN-10 and ISBN-13 validation in CreateBookHandler
- Implement checksum verification for both formats
- Add descriptive error messages for invalid ISBNs

Closes #234

## Test plan
- [ ] Create book with valid ISBN-10
- [ ] Create book with valid ISBN-13
- [ ] Verify error for invalid checksum
- [ ] Verify error for malformed ISBN

---
Generated with [Claude Code](https://claude.ai/code)

Edge Cases

PR Already Exists

bash
# Check if PR exists for current branch
gh pr list --head $(git branch --show-current)

If PR exists, show link instead of creating new one.

Branch Not Pushed

The commit flow handles this automatically with git push -u origin <branch>.

No GitHub Remote

code
Error: Repository doesn't have a GitHub remote.
This command requires a GitHub-hosted repository.

gh Not Authenticated

code
Error: GitHub CLI not authenticated.
Run: gh auth login

Commands Reference

bash
# GitHub CLI
gh auth status                      # Check authentication
gh pr create --title "..." --body "..."  # Create PR
gh pr list --head <branch>          # Check existing PRs
gh pr view --web                    # Open PR in browser
gh pr view --json url               # Get PR URL

# Git context
git branch --show-current           # Current branch
git log origin/main..HEAD --oneline # Commits in branch
git diff origin/main...HEAD --stat  # Changes summary

Related Skills

  • commit: Base commit and push workflow
  • conventional-commits: Commit message format

Workflow Example

code
User: /commit-pr

Claude:
1. [Runs git status, git diff]
2. [Analyzes changes]
3. [Generates commit message]

   Committing: feat(library/book): add ISBN validation

4. [git add . && git commit]
5. [git push -u origin feature/isbn-validation]

   Pushed to origin/feature/isbn-validation

6. [Generates PR content]
7. [gh pr create]

   Commit: a1b2c3d feat(library/book): add ISBN validation
   Branch: feature/isbn-validation -> main
   PR: #42 Add ISBN validation to book creation
   URL: https://github.com/org/repo/pull/42
   Status: Ready for review