Contributor-First PR Merge
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
“Create a GitHub pull request.”
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install platformplatform/PlatformPlatform create-pull-request --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/create-pull-request .claude/skills/create-pull-request && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .claude/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-requestType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install platformplatform/PlatformPlatform create-pull-request --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/create-pull-request .agents/skills/create-pull-request && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .agents/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install platformplatform/PlatformPlatform create-pull-request --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/create-pull-request .cursor/skills/create-pull-request && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .cursor/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/platformplatform/PlatformPlatform.git --path .claude/skills/create-pull-request--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install platformplatform/PlatformPlatform create-pull-request --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/create-pull-request .gemini/skills/create-pull-request && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .gemini/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install platformplatform/PlatformPlatform create-pull-requestInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/create-pull-request .github/skills/create-pull-request && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .github/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install platformplatform/PlatformPlatform create-pull-request --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/platformplatform/PlatformPlatform.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/create-pull-request .opencode/skills/create-pull-request && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-pull-request" agent skill from https://github.com/platformplatform/PlatformPlatform/tree/main/.claude/skills/create-pull-request into .opencode/skills/create-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pull-request", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-pull-requestCreate Pull Request is a skill in platformplatform/PlatformPlatform (440 stars). Its SKILL.md is about 2.7k tokens. Licence: MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 269de1c. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
*From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Pull Request loads about 2.7k tokens when it runs. Until then it costs about 12 tokens; SKILL.md has 1,230 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from platformplatform/PlatformPlatform at commit 269de1c, republished under its MIT licence (© platformplatform). 1,230 words, ~2,654 tokens.
.claude/skills/create-pull-request/SKILL.md (or your agent's skills folder).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 requestEverything in this step starts in the background (run_in_background: true) so the workflow proceeds without waiting. Results are reconciled in STEP 10.
Skip anything already green this session. Only run what's genuinely uncertain.
When validation IS needed:
Run build first:
build (no flags - covers backend AND frontend; backend changes can break the frontend build via API contracts)build --frontendbuild --cliAfter 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 --smoke for 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.
Three checks - all read-only at this stage; renames happen in STEP 8.
worktree- prefix. Local-only convention; never push it.fix-login-bug whose 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.
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:
Enhancement, Bug, Deploy to Staging.[ ] item from .github/PULL_REQUEST_TEMPLATE.md in 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".<current> to <proposed>?" with options Yes / No / Use a different name (free-text).Stash the answers; consumed in STEP 6, 7, 8, 11.
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. Strip worktree- 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.
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).
Use the official template at .github/PULL_REQUEST_TEMPLATE.md:
[ ] 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-.
If the user picked "Show me before pushing" in STEP 4:
Otherwise skip this step.
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.
git rev-parse @{u} 2>/dev/null.git push --set-upstream origin "$(git branch --show-current)").git log --oneline @{u}..HEAD (local-ahead)git log --oneline HEAD..@{u} (remote-ahead)git push.Check the status of the background tasks started in STEP 2.
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.
Print:
End with a clickable link to the saved file.
# 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 dependencies### 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 summaryworktree- prefixLocal: worktree-fix-login-redirect -> propose fix-login-redirect (rename in STEP 8, push in STEP 9).
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.
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.
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.md© platformplatform, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/create-pull-request of platformplatform/PlatformPlatform.
Open the folder on GitHubat commit 269de1c
Create Pull Request next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Pull Request this skillplatformplatform/PlatformPlatform | 440 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Pull Request Title and Body Writeropeninterpreter/openinterpreter | 69k | 2 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| PR Review State Fetchprisma/orm | 48k | — | ~767 | Automated safety check: Pass | Apache-2.0 | |
| Creating Description For Gh PRredis/jedis | 12k | — | ~838 | Automated safety check: Pass | MIT |
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
openinterpreter/openinterpreter
Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.
prisma/orm
Fetches a pull request's canonical review state as JSON, validates it, and renders markdown, a text summary and triage target files from it using bundled scripts.
redis/jedis
Generate a clear, concise GitHub PR title and description from the diff between two local git branches, and save it to prDescription.md in the repo root.
makeplane/plane
Opens a pull request for the current branch using the repo's template, a work item ID in the title and a description filled in from the actual diff.
platformplatform/PlatformPlatform
Create a product requirement document (PRD) for a new feature.
platformplatform/PlatformPlatform
Rebuild a stale branch by cherry-picking each commit onto a fresh branch off main, using a ralph-loop to validate each commit (build, test, format, lint, optional e2e) before moving on.
platformplatform/PlatformPlatform
Diagnose and fix Lingui SWC plugin compatibility errors with Next.js, Rspack, or other SWC runtimes.
platformplatform/PlatformPlatform
Start or restart the .NET Aspire AppHost via the developer CLI.
platformplatform/PlatformPlatform
Commit session changes to git. An agent skill from platformplatform/PlatformPlatform.
platformplatform/PlatformPlatform
Run end-to-end Playwright tests via the developer CLI. An agent skill from platformplatform/PlatformPlatform.
Categories
Run `npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a claude-code`. Or copy the skill folder (.claude/skills/create-pull-request in platformplatform/PlatformPlatform) into .claude/skills/create-pull-request in your project. Claude Code loads it when a task matches its description.
Run `npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a codex`. Or copy the skill folder (.claude/skills/create-pull-request in platformplatform/PlatformPlatform) into .agents/skills/create-pull-request in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add platformplatform/PlatformPlatform --skill create-pull-request -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-pull-request, .gemini/skills/create-pull-request, .github/skills/create-pull-request and .opencode/skills/create-pull-request in your project.
Going by SKILL.md and its folder, Create Pull Request needs the command-line tools its instructions call (git and gh). Its frontmatter pre-approves these tools: *.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Create Pull Request is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Pull Request: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Create Pull Request (cline/cline, 70k stars), Pull Request Title and Body Writer (openinterpreter/openinterpreter, 69k stars) and PR Review State Fetch (prisma/orm, 48k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
platformplatform (a GitHub organization) maintains it in platformplatform/PlatformPlatform, which has 440 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on September 24, 2026.
Source: platformplatform/PlatformPlatform on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.