create-pull-request
Skill439 starsChanged 6 months agoMITView on GitHub
Create a GitHub pull request.
- Commits and pushes
27 other projects use a version of this.
Adopted by
Most recently taken up by
- ErikaAX08/erikas-skillstheir own version, first seen Nov 8, 2026
- marcellocurto/skillstheir own version, first seen Nov 8, 2026
- openflocon/Flocontheir own version, first seen Nov 1, 2026
- StephanMeijer/skillstheir own version, first seen Nov 1, 2026
- tada5hi/skillstheir own version, first seen Nov 1, 2026
- vrodokanakis/claude-skillstheir own version, first seen Oct 25, 2026
Used with
Projects with it also use grilling and frontend-design.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
GoogleSkillgrilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Also in 3 projects that use this
BlockSkillfrontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Also in 3 projects that use this
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 27
- cline/cline★ 71ksame name
- makeplane/plane★ 62ksame name
- bitwarden/clients★ 14ksame name
- microsoft/vscode-pull-request-github★ 2.6ksame name
- Mapsui/Mapsui★ 1.6ksame name
- warpdotdev/oz-skills★ 825same name
- openflocon/Flocon★ 379same name
- haru/redmine_ai_helper★ 107same name
- braintrustdata/braintrust-sdk★ 30same name
- kimrgrey/claudini★ 9same name
17 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- aspire-restartSkill
- aspire-stopSkill
- buildSkill
- commitSkill
- create-prdSkill
- db-querySkill
- e2eSkill
- enhanced-message-contextSkill
- fix-e2e-testsSkill
- formatSkill
- lingui-best-practicesSkill
- lintSkill
- pull-platformplatform-changesSkill
- rebrandSkill
- rebuild-branchSkill
- swc-plugin-compatibilitySkill
- team-interruptSkill
- testSkill
- ultra-reviewSkill
- upgrade-packagesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. 0 are common, 14 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 27 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 11
Run in parallel (quick reads, not background):
- Distinctive: line 28
When validation IS needed:
- Very specific: line 35
After build, in parallel (with --no-build where applicable):
- Distinctive: line 42
Use judgment to decide which target a file belongs to (e.g.
- Very specific: line 50
Drift check: If the slug no longer describes the work (e.g.
- Distinctive: line 52
If either check 1 or check 3 fires, stash the proposed new name.
- Distinctive: line 56
Ask everything upfront so the user doesn't wait through slow research/drafting just to be prompted at the end.
- Very specific: line 67
Look up .claude/reference/product-management/[PRODUCT_MANAGEMENT_TOOL].md for [Task] ID format and MCP tools.
- Distinctive: line 81
Write a fresh title based on the actual diff, commits, and [Task] context - not the branch name (branch names are often abbreviated and …
- Distinctive: line 87
No personal pronouns ("we", "our", "he", "she")
- Very specific: line 92
Use the official template at .github/PULL_REQUEST_TEMPLATE.md:
- Distinctive: line 102
If the user picked "Show me before pushing" in STEP 4:
- Distinctive: line 105
Ask "Open pull request with this content?
- Distinctive: line 112
If STEP 4 confirmed a rename, rename the branch and verify.
- Distinctive: line 121
If remote-ahead: surface the divergence and stop.
- Distinctive: line 122
If only local-ahead: git push.
- Distinctive: line 126
Check the status of the background tasks started in STEP 2.
- Distinctive: line 137
Use the existing pull request check result from STEP 1.
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Create Pull Request Workflow
STEP 1: Gather Context
Run in parallel (quick reads, not background):
git status- working tree stategit branch --show-current- local branchgit --no-pager log --format=%s --reverse $(git merge-base HEAD main)..HEAD- commits on the branchgit --no-pager diff main- full diffgit rev-parse @{u} 2>/dev/null- upstream presence (already pushed?)gh pr view --json number,url,state 2>/dev/null(only if upstream exists) - check if the branch already has an open pull request
STEP 2: Kick Off Background Work
Everything in this step starts in the background (run_in_background: true) so the workflow proceeds without waiting. Results are reconciled in STEP 10.
Validation
Skip anything already green this session. Only run what's genuinely uncertain.
When validation IS needed:
Run build first:
- Backend change:
build(no flags - covers backend AND frontend; backend changes can break the frontend build via API contracts) - Frontend-only:
build --frontend - CLI-only:
build --cli
After build, in parallel (with --no-build where applicable):
aspire-restart- service / Aspire wiring changedformat --<target>,lint --<target>- for each target whose code changedtest --no-build- backend changee2e- frontend or shared E2E-covered code changed; use--smokefor low-impact changes (judgment)
Use judgment to decide which target a file belongs to (e.g. project / manifest / lock files affect their owning build, even when the extension isn't obvious). Each item runs only if needed and not already green.
STEP 3: Verify Branch Name
Three checks - all read-only at this stage; renames happen in STEP 8.
- Strip
worktree-prefix. Local-only convention; never push it. - Naming convention. Lowercase kebab-case.
- Drift check. If the slug no longer describes the work (e.g.
fix-login-bugwhose commits do a refactor), draft a new name.
If either check 1 or check 3 fires, stash the proposed new name; STEP 4 will ask the user to confirm.
STEP 4: Ask the User
Ask everything upfront so the user doesn't wait through slow research/drafting just to be prompted at the end. Single AskUserQuestion call, up to four questions:
- Labels (multi-select, can pick zero or more):
Enhancement,Bug,Deploy to Staging. - Pull request checklist (single-select): the recommended option spells out every
[ ]item from.github/PULL_REQUEST_TEMPLATE.mdin present-tense (e.g. for the current template: "Confirm you have added tests, done manual regression tests, and updated the documentation"). The alternative is "Leave checklist items unchecked". - Review before pushing (single-select): "Show me the rendered title and description before pushing" / "Push immediately".
- Branch rename confirmation (single-select), only if STEP 3 flagged a rename: "Rename
<current>to<proposed>?" with options Yes / No / Use a different name (free-text).
Stash the answers; consumed in STEP 6, 7, 8, 11.
STEP 5: Correlate to [Task]
Look up .claude/reference/product-management/[PRODUCT_MANAGEMENT_TOOL].md for [Task] ID format and MCP tools.
- Parse [Task] ID from branch name. The exact pattern depends on the configured [PRODUCT_MANAGEMENT_TOOL] — check
.claude/reference/product-management/[PRODUCT_MANAGEMENT_TOOL].md. Stripworktree-first if present. - If [Task] detected, fetch via MCP. Use its title, description, and parent [Feature] to validate the draft in STEP 6 and spot drift.
- Detect unrelated commits (rare). If some commits clearly belong to a different scope, offer to create a new [Task] as future follow-up - written as a fresh problem statement (future tense, what needs to happen). [Feature] choice: parent [Feature] of current branch's [Task] -> [Feature] with [Active] status -> ask.
- If no [Task] in the branch name, ask: "No [Task] detected. Create one for this pull request?". If yes, draft a [Task] from the diff (problem statement, not what was done) and create it via MCP. Suggest a [Feature] using the same rules as above.
STEP 6: Draft Title and Description
Title
Write a fresh title based on the actual diff, commits, and [Task] context - not the branch name (branch names are often abbreviated and won't make a good title).
- Imperative form ("Fix", "Add", "Upgrade", "Refactor")
- Sentence case (not Title Case)
- No trailing period
- No "Pull Request" / "PR" / abbreviations
- No personal pronouns ("we", "our", "he", "she")
- No [Task] IDs in the title
Description
Use the official template at .github/PULL_REQUEST_TEMPLATE.md:
- Summary & Motivation: lead with the most important change, explain what and why (not how), use bullets for multiple items, mention minor fixes last. Do not end with a closing benefit summary - that is the most common rejection reason.
- No "pull request" or "pull-request" in the body - CI rejects either phrase. Use "this change", "the change", etc.
- Checklist: copy items from the template. Render every
[ ]as[x]if the user picked "Mark all checklist items..." in STEP 4; otherwise leave them as[ ].
Save the rendered title (as a level-1 heading) + body to .workspace/<branch-name>/pull-request.md. Use the un-prefixed branch name if STEP 3 stripped worktree-.
STEP 7: Optional Review Gate
If the user picked "Show me before pushing" in STEP 4:
- Print the rendered title and the body inline.
- Ask "Open pull request with this content? (yes / edit)".
- On "edit", let the user dictate changes. Re-save the markdown. Re-confirm.
Otherwise skip this step.
STEP 8: Branch Hygiene
If STEP 4 confirmed a rename, rename the branch and verify. Safe in a worktree (directory path is independent of branch name). The push step sets the new upstream.
STEP 9: Push
- Re-check upstream tracking with
git rev-parse @{u} 2>/dev/null. - If unset (branch never pushed, or just renamed): ask "Branch is local-only. Push to origin?". On confirm, push and ensure the pushed branch has upstream tracking (
git push --set-upstream origin "$(git branch --show-current)"). - If upstream exists, check divergence:
git log --oneline @{u}..HEAD(local-ahead)git log --oneline HEAD..@{u}(remote-ahead)- If remote-ahead: surface the divergence and stop. Don't force-push without an explicit user request.
- If only local-ahead:
git push.
STEP 10: Wait for Background Validation
Check the status of the background tasks started in STEP 2.
- Done and passed: continue silently.
- Done and failed: print the failure and pause. Do not push or open the pull request until the user decides (fix / push anyway / abort).
- Still running: surface the status. Ask "Wait for completion, or proceed?". If proceeding, mention that CI will re-run these.
- Killed earlier (user opt-out): skip.
STEP 11: Create or Update the Pull Request via gh
Pre-flight: gh auth status. If not authenticated, surface and stop.
Use the existing pull request check result from STEP 1.
If an open pull request already exists for this branch:
gh pr edit <number> \
--title "<title>" \
--body-file ".workspace/<branch>/pull-request.md" \
--add-label "<each-selected-label>"(Strip the level-1 heading from the body file before passing.) Tell the user the pull request was updated, not newly created. Don't change draft/ready state without an explicit ask.
If no pull request exists:
gh pr create \
--title "<title>" \
--body-file ".workspace/<branch>/pull-request.md" \
--base main \
--assignee @meAppend --label "<name>" per label from STEP 4. @me resolves to the authenticated user. Don't pass --draft; this workflow opens ready-for-review.
Capture the pull request URL from gh's output for STEP 12.
STEP 12: Report
Print:
- The pull request URL (clickable)
- Title
- Labels applied
- [Task] linked via branch name (auto by [PRODUCT_MANAGEMENT_TOOL])
- Pull-request markdown saved at the absolute path
End with a clickable link to the saved file.
Examples
Example 1 - Title
# DO: imperative, sentence case, no period
Add user profile image upload functionality
Fix data protection key sharing between self-contained systems
Upgrade dependency versions to latest stable releases
# DON'T: past tense, period, title case, prefixes
Added User Profile Image Upload Functionality.
PR: Implement new feature
Updating dependenciesExample 2 - Description
### Summary & Motivation
Add data protection key sharing between self-contained systems to fix antiforgery token validation failures. Previously, each self-contained system had isolated encryption keys, causing tokens generated in one system to be invalid in another.
- Configure a common application name for all self-contained systems
- Store keys in a user-accessible directory on disk
# DO: stop here - no closing benefit summary
### Checklist
- [x] I have added tests, or done manual regression tests
- [ ] I have updated the documentation, if necessary### Summary
# DON'T: personal pronouns, past tense, "pull request" term, vague descriptions
In this pull request we fixed a bug causing issues in our scs's.
- We added some configuration.
- Fixed a bug.
These changes make the system more robust and maintainable. # DON'T: closing summaryExample 3 - Branch with worktree- prefix
Local: worktree-fix-login-redirect -> propose fix-login-redirect (rename in STEP 8, push in STEP 9).
Example 4 - Branch drift
Local: fix-login-redirect. Actual work: refactored the login command and added auto-redirect.
Propose refactor-login-command-with-auto-redirect. Confirm in STEP 4; rename in STEP 8.
Example 5 - Unrelated commits
Branch: fix-login-redirect. Commits: the redirect fix + an unrelated typo fix in README.
Surface the typo commit. Offer to create a new [Task]: "Fix typo in README troubleshooting section" (problem statement, future tense). The pull request continues with both commits.
Example 6 - End-of-output report
Pull request opened: https://github.com/<owner>/<repo>/pull/123
Title: Fix login redirect after OTP verification
Labels: Bug, Deploy to Staging
[Task]: linked via branch name (auto-detected by [PRODUCT_MANAGEMENT_TOOL])
Description: /absolute/path/to/repo/.workspace/fix-login-redirect/pull-request.mdDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

