Automates PR preparation and upstream sync for Rust projects.

Install

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

Installs to .claude/skills/pr-iopsystems

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.

Prepare outstanding commits on a feature branch for a pull request to upstream
78 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Verify prerequisites for PR creation (not on main, upstream/origin remotes exist)
  • Run `cargo fmt` and amend last commit for formatting changes
  • Sync local branches with `upstream` and `origin` remotes
  • Identify commits ahead of `upstream/main` for the PR
  • Generate a PR title and description summarizing changes
  • Create a pull request against `upstream`

How it works

The skill prepares a feature branch for a pull request by verifying git state, formatting code, syncing with remotes, identifying new commits, generating PR content, and then creating the PR.

Inputs & outputs

You give it
Current feature branch with outstanding commits, optional PR title
You get back
A new pull request on GitHub to `upstream` with a generated title and description

When to use pr

  • Prepare feature branch for PR
  • Sync branch with upstream
  • Automate PR content

About this skill

Prepare a pull request from the current feature branch. This skill collects all commits on the current branch that are ahead of upstream/main, generates a PR title and description summarizing the changes, and creates the PR against upstream.

Arguments

The skill accepts optional arguments:

  • No arguments: auto-generate title and description from commits
  • A short description: used as the PR title (e.g., /pr Add support for TLS client certs)

Example: /pr or /pr Fix saturation search convergence

Steps

  1. Verify prerequisites:

    • Must NOT be on main branch (should be on a feature branch)
    • The upstream remote must exist
    • The origin remote must exist
    BRANCH=$(git branch --show-current)
    if [ "$BRANCH" = "main" ]; then
      echo "Error: Must be on a feature branch, not main"
      exit 1
    fi
    git remote get-url upstream >/dev/null 2>&1 || { echo "Error: 'upstream' remote not found"; exit 1; }
    git remote get-url origin >/dev/null 2>&1 || { echo "Error: 'origin' remote not found"; exit 1; }
    
  2. Run cargo fmt and amend the last commit if formatting changes are needed:

    cargo fmt
    if [ -n "$(git status --porcelain)" ]; then
      git add -u
      git commit --amend --no-edit
    fi
    

    After this step, the working directory must be clean. If there are still uncommitted changes (non-formatting), stop and tell the user to commit or stash them first.

  3. Sync with upstream:

    git fetch upstream
    git fetch origin
    
  4. Identify commits for the PR:

    • Find the merge base between the current branch and upstream/main
    • List all commits from the merge base to HEAD
    • Show the full diff against upstream/main
    MERGE_BASE=$(git merge-base upstream/main HEAD)
    git log --oneline ${MERGE_BASE}..HEAD
    git diff ${MERGE_BASE}..HEAD --stat
    

    If there are no commits ahead of upstream/main, stop and tell the user there is nothing to submit.

  5. Generate PR title and description:

    • If the user provided a title argument, use that as the PR title
    • Otherwise, analyze the commits and diff to generate a concise PR title (under 70 characters)
    • Generate the PR body with:
      • A ## Summary section with 1-3 bullet points describing the changes
      • A ## Changes section listing the commits
      • A ## Test plan section with a checklist of testing suggestions

    Present the title and body to the user for review before creating the PR.

  6. Push the feature branch to origin:

    BRANCH=$(git branch --show-current)
    git push -u origin ${BRANCH}
    
  7. Create the PR against upstream:

    BRANCH=$(git branch --show-current)
    
    gh pr create \
      --repo "$(git remote get-url upstream | sed 's/.*github.com[:/]\(.*\)\.git/\1/' | sed 's/.*github.com[:/]\(.*\)/\1/')" \
      --head "$(git remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/' | sed 's/.*github.com[:/]\(.*\)/\1/' | cut -d/ -f1):${BRANCH}" \
      --base main \
      --title "${PR_TITLE}" \
      --body "${PR_BODY}"
    
  8. Report the PR URL to the user.

Troubleshooting

  • No upstream remote: Add it with git remote add upstream <repo-url>
  • No origin remote: This is your fork. Add with git remote add origin <fork-url>
  • gh CLI not installed: brew install gh or see https://cli.github.com/
  • Not authenticated with gh: gh auth login
  • PR already exists: If a PR already exists for this branch, report the existing PR URL instead

When not to use it

  • When on the `main` branch
  • When `upstream` or `origin` remotes do not exist
  • When there are uncommitted changes (non-formatting) in the working directory

Prerequisites

gitcargogh

Limitations

  • The current branch must not be `main`.
  • The `upstream` and `origin` remotes must be configured.
  • Uncommitted changes (other than formatting) will stop the process, requiring manual resolution.

How it compares

This skill automates the preparation and submission of pull requests to an `upstream` repository, including code formatting and content generation, simplify the contribution process compared to manual steps.

Compared to similar skills

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

SkillInstallsUpdatedSafetyDifficulty
pr (this skill)04moReviewIntermediate
search-code24moReviewIntermediate
code-review06moNo flagsIntermediate
gh-address-comments06moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry