create-pr
Skill1 starsChanged 41 days agoMITView on GitHub
Open a GitHub pull request for the branch that is currently checked out, covering every change on it against master. Runs the full CI suite locally first (the same jobs as .github/workflows/ci.yml), then writes a conventional-commit title and a fully filled-in .github/pull_request_template.md body in English. Use whenever the user asks to create, open, raise, or prepare a PR.
- Commits and pushes
196 other projects use a version of this.
Adopted by
Most recently taken up by
- lohi-ai/babysittheir own version, first seen Nov 8, 2026
- alexandrosandre/agentic-engineeringtheir own version, first seen Nov 8, 2026
- alexandrosandre/alice-issue-agenttheir own version, first seen Nov 8, 2026
- rccsousa/skillstheir own version, first seen Nov 8, 2026
- next-step/nextstep-skillstheir own version, first seen Nov 8, 2026
- blamechris/chroxytheir own version, first seen Nov 8, 2026
Used with
Projects with it also use update-pr, act-on-feedback and 10 more.
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.
MicrosoftSkillupdate-pr
Update the pull request for the current session. Use when the user wants to push new changes to an existing PR.
Also in 9 projects that use this
MicrosoftSkillact-on-feedback
Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit Feedback button.
Also in 3 projects that use this
ModelEngine-GroupSkillcreate-release-note
从 PR/commit 中自动生成结构化的 Release Notes,并可选创建 GitHub Draft Release。支持 x.y.0 版本合并前一 minor 系列的 release notes。当用户要求生成发布说明、创建 release notes 时触发。参数为版本号和可选的上一版本号。
Also in 3 projects that use this
frostneySkillnative-nostalgia-stack
Applies the user's FreePascal toolchain and its build, formatting, hook, and test contracts while leaving project-specific mechanics local. Use when scaffolding or working in a FreePascal project that follows this toolchain.
Also in 3 projects that use this
frostneySkillsoftware-engineering-excellence
Applies the user's engineering standards during substantial technical work: preserve scope, use current evidence, delegate independent parts, and complete authorized outcomes. Use during substantial implementation, debugging, refactoring, or multi-part delivery work.
Also in 3 projects that use this
parkchuSkillstart-mission
넥스트스텝(NextStep) 미션을 처음 시작할 때, 미션 저장소를 fork·clone하고 최초 작업 브랜치(step1 등)까지 만들어 준다. gh CLI로 fork하고 clone까지 이어서 처리하며, gh가 없거나 인증이 안 돼 있으면 브라우저 Fork 안내로 폴백한다. 이미 fork/clone돼 있으면 재사용하고 이어서 진행한다(재실행 안전). 사용자가 "미션 시작하려는데 저장소 세팅해줘", "새 미션 시작할래", "fork부터 해줘", "/nextstep:start-mission" 등으로 요청할 때 사용한다.
Also in 3 projects that use this
- +1 more from microsoft
Other versions196 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 196
- microsoft/vscode★ 195ksame name
- vercel/next.js★ 143ksame name
- penpot/penpot★ 62ksame name
- remix-run/react-router★ 57ksame name
- moeru-ai/airi★ 51ksame name
- ToolJet/ToolJet★ 41ksame name
- ueberdosis/tiptap★ 39ksame name
- BabylonJS/Babylon.js★ 26ksame name
- kortix-ai/suna★ 21ksame name
- kortix-ai/CompanyOS★ 21ksame name
186 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 repository10 other files it gives its agents.
- cleanupSkill
- commitSkill
- deps-updateSkill
- document-featureSkill
- extend-orbitSkill
- fix-ciSkill
- fix-reviewSkill
- frontend-polishSkill
- responsive-checkSkill
- reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. 0 are common, 6 are distinctive, and 10 are very specific to this project.
0
Common
Most of the 179 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
No attribution footer: Never add Co-Authored-By, "Generated with Claude Code", or any Claude/AI mention to the PR title, body, or commits …
- Distinctive: line 21
Run these first and read the output before writing anything:
- Distinctive: line 35
If the current branch is master, stop and tell the user.
- Very specific: line 36
If git status --short is non-empty, tell the user which files are uncommitted and ask whether to commit them, include them, or leave them …
- Very specific: line 37
If there are no commits ahead of origin/master, stop and say so.
- Very specific: line 39
If a PR already exists (gh pr view --json number,url,title), do not open a second one.
- Very specific: line 47
If the branch name ends in a ticket-style suffix, <PREFIX>-<digits> (e.g.
- Distinctive: line 49
Never derive the ID from anything other than the branch name (not commit messages, not the PR title) — the branch name is the one …
- Distinctive: line 51
Keep the resolved ID (or "none") in mind for Step 6.
- Distinctive: line 57
Run them in this order and stop at the first failure:
- Very specific: line 74
Before the first container command on a branch, make sure the stack is up (make up-d), and after any dependency change on the branch run …
- Very specific: line 111
Use .github/pull_request_template.md verbatim as the skeleton: same headings, same order, same checkbox lines.
- Very specific: line 120
If Step 2 resolved an Orbit issue ID, append <!-- orbit-issue:ID --> on its own line at the very end of the body, after Notes.
- Very specific: line 124
Write the body to a file in the scratchpad directory (never pass a long body inline.
- Very specific: line 134
Add --draft only if the user asked for a draft.
- Distinctive: line 136
Before running it, show the user the exact title and the full body and ask for confirmation.
“Common” is measured: kept by at least 6 in 10 of the 179 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 a pull request
Turns the work on the current branch into a review-ready GitHub pull request: verify locally that CI will pass, then open the PR with gh using a conventional-commit title and a completely filled-in PR template.
Hard rules
- English only. Title, body, bullets, notes: every word of the PR is English, regardless of the language the user is speaking.
- No emoji anywhere in the title or body, including the template headings and any footer.
- No AI-slop writing. No em dashes or double hyphens used as punctuation (
—,--), no "delve", "seamless", "robust", "leverage", "comprehensive solution", "in today's fast-paced", no hype adjectives, no trailing "This ensures..." summary sentences bolted onto every bullet. Write like a developer describing their own diff: concrete, specific, past tense for what was done. - No attribution footer. Never add
Co-Authored-By, "Generated with Claude Code", or any Claude/AI mention to the PR title, body, or commits in this repo. - Never open the PR before the local CI run is green. See "Step 3".
- Never invent a linked issue. See "Related Issue" below.
Step 1: gather the branch state
Run these first and read the output before writing anything:
git branch --show-current
git fetch origin master
git log --no-merges origin/master..HEAD --pretty='%h %s%n%b'
git diff origin/master...HEAD --stat
git status --shortThen read the actual diff for the substantive files (git diff origin/master...HEAD -- <path>) so the description reflects what the code does, not just the commit subjects. For a large diff, read the files that carry the behaviour change (Services, Repositories, Controllers, migrations, Pages/Components) and skim the rest.
Checks before going further:
- If the current branch is
master, stop and tell the user; there is nothing to open a PR from. - If
git status --shortis non-empty, tell the user which files are uncommitted and ask whether to commit them, include them, or leave them out. Do not commit on their behalf without an answer; if they want them committed, follow thecommitskill. - If there are no commits ahead of
origin/master, stop and say so. - Push the branch if needed:
git push -u origin <branch>. - If a PR already exists (
gh pr view --json number,url,title), do not open a second one. Report the existing PR and offer to update its title/body instead (gh pr edit).
Step 2: determine the Orbit issue marker
Orbit's GitHub integration links a pull request to an Orbit issue via a hidden marker in the PR description, <!-- orbit-issue:ID --> (see documentation/en/integrations/06-github-integration.md). This is a separate concept from the "Related Issue" GitHub issue number in Step 6 below: the marker links to an issue tracked inside Orbit itself, not to a GitHub Issue, and every PR opened from an Orbit-tracked branch should carry one.
Derive the ID from the current branch name, checked in Step 1:
- If the branch name ends in a ticket-style suffix,
<PREFIX>-<digits>(e.g.FE-1390,BUG-42), use the digits as the Orbit issue ID automatically — no confirmation needed, this is a mechanical extraction, not a guess.FE-1390→<!-- orbit-issue:1390 -->. - If the branch name does not match that pattern (e.g.
fix-typo,hotfix,main, or any name with no numeric ticket suffix), do not guess an ID. Ask the user for the Orbit issue ID before continuing — do not silently omit the question and do not invent a number. If the user confirms there is no corresponding Orbit issue, proceed without a marker. - Never derive the ID from anything other than the branch name (not commit messages, not the PR title) — the branch name is the one deliberate signal here, matching how these branches are actually created.
Keep the resolved ID (or "none") in mind for Step 6.
Step 3: run the full CI suite locally
Mirror every job in .github/workflows/ci.yml. The ci-status job requires all five to pass, so all five run here. Run them through the Docker containers (the Makefile targets, or the docker compose run command given below where no faithful target exists) rather than the host npm/composer binaries: the containers match CI's PHP and Node versions and ship PCOV, so the host toolchain drifting out of sync cannot produce a false pass or a false failure.
Run them in this order and stop at the first failure:
| CI job | Command |
| Type check | make type-check |
| Lint | docker compose run --rm vite npx eslint resources/js |
| Component tests (Vitest) | make test-js-coverage |
| Build verification | docker compose run --rm vite npm run build |
| PHP tests (Pest) | make test-coverage |
Two of these deliberately bypass the obvious Makefile target, because that target does not mirror CI:
- Lint.
make lintrunsnpm run lint, which passes--fixand so silently repairs problems that would fail the build. CI runs a barenpx eslint resources/js. Use thedocker compose runform above. If it reports fixable problems, fix them, then re-run that same bare command. - Build.
make buildbuilds the Docker images; it is not the Vite production build that CI's build job runs. Use thedocker compose runform above.
Other notes that matter:
- Before the first container command on a branch, make sure the stack is up (
make up-d), and after any dependency change on the branch runmake npm-install/make composer-install.node_modules/vendorare anonymous volumes, so without this the suites run against stale dependencies. make test-js-coverageenforces the thresholds invite.config.js(80% statements/functions/lines, 75% branches) andmake test-coverageenforces--min=90onapp/. A coverage shortfall is a CI failure like any other; treat it as one.make test-coveragecan die withAllowed memory size of 134217728 bytes exhaustedinphp-code-coverage's report serializer after every test has already passed. This is a local memory-limit problem, not a branch failure, and it is not fixable by writing amemory_limitini into the running container: the target usesdocker compose run --rm, which starts a fresh one, andphp artisan testspawns pest as a subprocess that does not inherit a-d memory_limitoverride. Run pest directly instead, which keeps the override in-process:docker compose run --rm app php -d memory_limit=3G vendor/bin/pest --coverage --min=90- Running on the host is a fallback only, for when Docker is unavailable:
npx tsc --noEmit,npx eslint resources/js,npm run test:coverage,npm run build,composer test-coverage. Note thatcomposer test-coverageneeds PCOV or Xdebug installed on the host and will refuse to run without one. If you fall back, say so when you report the results.
Other workflows in .github/workflows/ are not locally reproducible and are not part of this gate: gemini-review.yml, labeler.yml, release-please.yml and notify-docs-change.yml. Do not run them, and do not mention them in the PR body at all: not in Testing, not as a caveat in Notes. A reviewer does not need to be told that a workflow which runs automatically on the PR will run automatically on the PR, and speculating about what it might report is noise. Mention in the PR body only the commands you actually ran. The same goes for local-environment troubleshooting such as the memory-limit workaround above: it belongs in your report to the user, never in the PR.
On failure: fix the cause and re-run the failing command, then continue the sequence. If the failure is unrelated to the branch and pre-exists on master, say so explicitly to the user and ask whether to open the PR anyway. Never report a suite as passing that you did not run to completion.
Step 4: check the documentation rule
CLAUDE.md requires a guide under documentation/en/<category>/ plus its Polish translation at the matching documentation/pl/ path for anything genuinely new (a new subsystem, extensibility point, permission category, or event-driven flow). If the branch introduces one of those and the diff has no matching documentation change, tell the user before opening the PR and offer the document-feature skill. Small changes to already-documented extension points do not need a guide.
Step 5: write the title
Conventional commit format, matching .github/git-commit-instructions.md and the repo's commit history:
type(scope): description- Types:
feat,fix,docs,style,refactor,perf,test,chore,ci. - Scope is the domain or area touched, lowercase, as used in the log:
issues,issue-types,integrations,projects,labels,api,ui,auth,qodana. Checkgit log --oneline -20for the scopes actually in use and reuse one rather than inventing a synonym. - Imperative mood, lowercase after the colon, no trailing period, subject under 50 characters where possible and never over 72.
- Pick the type that describes the branch as a whole. A branch that adds a feature and its tests is
feat, nottest. If the branch is genuinely two unrelated things, say so and suggest splitting (thegh-stackskill handles stacked branches). - Append
!after the scope for a breaking change (feat(api)!: ...) and describe the break in the body.
Good: feat(issue-types): add per-project workflow transitions
Bad: Update files, feat: various improvements, feat(issues): Added new stuff.
Step 6: write the body
Use .github/pull_request_template.md verbatim as the skeleton: same headings, same order, same checkbox lines. Replace every <!-- comment --> placeholder with real content and delete the comment. Never leave an empty bullet or an unfilled section.
- Summary: two to five sentences: what problem the branch solves, the approach taken, and anything a reviewer needs to know up front. Not a restatement of the title.
- Changes: one bullet per meaningful change, ordered from most to least significant. Name the layer and the file or class (
Added IssueTypeService::applyTransition() to validate a status change against the project workflow). Keep the backend Controller/Service/Repository split visible: a reviewer should be able to tell from the bullets where query logic, orchestration and validation each landed. Group frontend work by component or page. Include migrations, config, and documentation as their own bullets. Add bullets freely; three is the template's placeholder, not a limit. - Related Issue: fill
Closes #only with a GitHub issue number the user gave you, or one that appears in a branch commit message or the branch name (e.g. branchFE-1334referencing issue#1334) and that you have confirmed withgh issue view <n>. If there is no confirmed issue, replace the whole line withNo related issue.rather than guessing a number. This is unrelated to the Orbit issue marker from Step 2 below. - Testing: describe how the change was verified: name the CI commands you ran in Step 3 and their outcome, plus any new test files and any manual verification. Tick the checkboxes that are actually true:
Existing tests passonly if the suites ran green,New tests addedonly if the diff adds test files,Manually verifiedonly if the app was actually exercised. Leave untrue boxes unticked rather than ticking everything. - Checklist: tick honestly, same rule.
Documentation has been updated where requiredstays unticked if Step 4 found a gap.CI checks are passingreflects the local run from Step 3. - Notes: reviewer-facing context: trade-offs, deliberately deferred work, follow-up tickets, anything risky, or where to start reading. Keep out anything that is not about the diff: no remarks about CI workflows that run automatically on the PR (Gemini review, labeler, release-please), and no local-environment troubleshooting such as a memory-limit or Docker workaround you needed to get a suite running. Report those to the user instead. If there is genuinely nothing to add, write
None.and do not pad it.
If Step 2 resolved an Orbit issue ID, append <!-- orbit-issue:ID --> on its own line at the very end of the body, after Notes. If Step 2 concluded there is no corresponding Orbit issue, omit it entirely — never write the marker with a placeholder or guessed ID.
Step 7: open the PR
Write the body to a file in the scratchpad directory (never pass a long body inline; heredocs mangle backticks and $), then:
gh pr create \
--base master \
--head "$(git branch --show-current)" \
--title 'type(scope): description' \
--body-file /path/to/scratchpad/pr-body.mdAdd --draft only if the user asked for a draft. Do not add reviewers, labels or assignees unless asked; labeler.yml applies labels automatically.
Before running it, show the user the exact title and the full body and ask for confirmation. After the PR is created, report the URL and the result of each local CI command.
Does 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.

