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.zipInstalls 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 upstreamKey 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
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
-
Verify prerequisites:
- Must NOT be on
mainbranch (should be on a feature branch) - The
upstreamremote must exist - The
originremote 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; } - Must NOT be on
-
Run
cargo fmtand 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 fiAfter 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.
-
Sync with upstream:
git fetch upstream git fetch origin -
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 --statIf there are no commits ahead of upstream/main, stop and tell the user there is nothing to submit.
- Find the merge base between the current branch and
-
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
## Summarysection with 1-3 bullet points describing the changes - A
## Changessection listing the commits - A
## Test plansection with a checklist of testing suggestions
- A
Present the title and body to the user for review before creating the PR.
-
Push the feature branch to origin:
BRANCH=$(git branch --show-current) git push -u origin ${BRANCH} -
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}" -
Report the PR URL to the user.
Troubleshooting
- No
upstreamremote: Add it withgit remote add upstream <repo-url> - No
originremote: This is your fork. Add withgit remote add origin <fork-url> - gh CLI not installed:
brew install ghor 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
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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| pr (this skill) | 0 | 4mo | Review | Intermediate |
| search-code | 2 | 4mo | Review | Intermediate |
| code-review | 0 | 6mo | No flags | Intermediate |
| gh-address-comments | 0 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by iopsystems
View all by iopsystems →You might also like
search-code
JamieMason
Search for code patterns in Syncpack. Use when finding symbols, implementations, or understanding how code is used. Covers ast-grep for Rust and grep/rg for other cases.
code-review
jonatron55
Instructions for reviewing changes and ensuring quality before completion. Use when asking for a review or before committing changes.
gh-address-comments
twlongzai
Help address review/issue comments on the open GitHub PR for the current branch using gh CLI; verify gh auth first and prompt the user to authenticate if not logged in.
pr
zmerlynn
Push a branch and open a PR with pre-flight checks
deepwiki-rs
sopaco
AI-powered Rust documentation generation engine for comprehensive codebase analysis, C4 architecture diagrams, and automated technical documentation. Use when Claude needs to analyze source code, understand software architecture, generate technical specs, or create professional documentation from any programming language.
rust-tests-guidelines
RediSearch
Guidelines for writing Rust tests.