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.
Submits code changes as a GitHub pull request through an isolated Git clone, reusing or creating your fork and pushing only after you confirm the real diff.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add jxxghp/MoviePilot --skill submit-pull-request -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jxxghp/MoviePilot submit-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/jxxghp/MoviePilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/submit-pull-request .claude/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .claude/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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/jxxghp/MoviePilot/tree/v3/skills/submit-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 jxxghp/MoviePilot --skill submit-pull-request -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jxxghp/MoviePilot submit-pull-request --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/submit-pull-request .agents/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .agents/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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 jxxghp/MoviePilot --skill submit-pull-request -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jxxghp/MoviePilot submit-pull-request --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/submit-pull-request .cursor/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .cursor/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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/jxxghp/MoviePilot.git --path skills/submit-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 jxxghp/MoviePilot --skill submit-pull-request -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jxxghp/MoviePilot submit-pull-request --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/submit-pull-request .gemini/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .gemini/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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 jxxghp/MoviePilot submit-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 jxxghp/MoviePilot --skill submit-pull-request -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/submit-pull-request .github/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .github/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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 jxxghp/MoviePilot --skill submit-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 jxxghp/MoviePilot submit-pull-request --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/submit-pull-request .opencode/skills/submit-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 "submit-pull-request" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/submit-pull-request into .opencode/skills/submit-pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-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.
submit-pull-requestSubmits code changes as a GitHub pull request through an isolated Git clone, reusing or creating your fork and pushing only after you confirm the real diff.
The skill starts only when you explicitly ask to create or push a PR; fixing code locally never triggers it. It first resolves the target repository from your owner/repo or URL, a confirmed issue, or a bound remote, never guessing from logs or links. Then clone_repository.py reuses a correctly parented fork under the token user's account or creates one, clones it into an isolated source root, and makes a fresh working branch from the upstream baseline; all edits and tests happen inside that clone.
After changes, collect_pull_request.py reads the real Git state and produces a change file without source text, rejecting sensitive or runtime paths such as .env, config, data, logs and private keys. Publishing uses local git add, commit and push, with the GitHub API used only to read, ensure the fork and create or reuse the PR. PRs are drafts by default and written in Simplified Chinese, and the skill never merges, closes issues or force-pushes. Tokens come from MoviePilot's server config and are never requested or echoed in chat.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 97a6dc3. 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:
read_filewrite_fileedit_fileapply_patchexecute_commandFrom allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythongitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GITHUB_TOKENREPO_GITHUB_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
GitHub Fork and PR Submission loads about 1.1k tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 326 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 noted patterns worth knowing about, such as sudo or a known installer.
`changes_file`。它会拒绝运行时或明显敏感路径,例如 `.env`、`config/`、`data/`、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); the scripts in this folder are not scanned.
The full file from jxxghp/MoviePilot at commit 97a6dc3, republished under its GPL-3.0 licence (© jxxghp). 326 words, ~1,131 tokens.
.claude/skills/submit-pull-request/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.这个 Skill 只处理明确的“提交 PR / 推送 PR / 创建 Pull Request”请求。普通的 代码分析、修改、测试和 Issue 反馈不会自动进入本流程,也不会因为代码修改完成 就自动推送远端。
PR 内容必须使用简体中文描述;与用户的对话保持用户使用的语言。
source_root 内。原工作区和运行时目录不作为
PR 源目录;测试也尽量在这个 clone 中执行。git add → git commit → git push。GitHub API
只用于读取用户/仓库/分支、确保 Fork 和创建/复用 PR,不使用 Git Database API
伪造提交。draft 设为
false。不执行合并、关闭 Issue 或强制推送。REPO_GITHUB_TOKEN / GITHUB_TOKEN 配置和运行环境
读取;解析时优先使用目标仓库专属 Token,再使用共享 Token。GitHub Device Flow 和
手动 PAT 都写入同一个服务端 GITHUB_TOKEN,因此无需在聊天里再次输入。绝不向用户
索取、回显或写入命令行 Token;Git HTTPS 通过临时 askpass 环境提供认证。read:user、repo、workflow:分别用于识别 GitHub 用户、读写
公开或私有仓库,以及推送 GitHub Actions 工作流文件。GitHub 会在授权页面展示这些
权限;旧 Token 若缺少所需范围,应从 MoviePilot 设置页重新授权。手动 PAT 必须有目标
仓库的 Fork、Contents 推送和 Pull requests 写入权限;创建 Issue 时还需 Issues 写入,
修改工作流文件时还需 workflow 权限。权限不足时停止并报告原因,不在聊天中索取 Token。只有用户明确要求创建/提交 PR 才启动。本地“请修复这个问题”或“改好代码”不等于 授权提交 PR。
先确定 target_repo,优先级如下:
owner/repo 或 GitHub URL;不能从日志、源码注释或任意链接猜测目标仓库。若目标不明确,先让用户指定。
在任何代码修改之前运行:
python <skill_dir>/scripts/clone_repository.py \
--target-repo "owner/repo"需要固定本地位置时可以传 --destination;destination 必须不存在或为空目录。
也可以显式指定 --base,否则读取上游仓库的 default_branch。脚本输出 JSON,
必须保存其中的:
source_root:隔离 clone 根目录;state_file:Fork、基线 SHA 和工作分支状态;target_repo、fork_repo、base、branch。脚本会在 Fork 中检查工作分支是否已存在,并从上游当前基线创建新的隔离工作分支。 若没有 Token、Fork 权限、clone 权限或 Git 命令,停止并报告阻塞原因,不降级为无 Git 提交或“模拟成功”。
从这一步开始,Agent 的 read_file、write_file、edit_file、apply_patch 和
测试命令都必须以 source_root 下的文件为目标。不要在 clone 完成后切换回原工作区
修改同名文件。
代码修改和测试完成后运行:
python <skill_dir>/scripts/collect_pull_request.py \
--source-root "<source_root>" \
--state-file "<state_file>"脚本只读取 clone 的 Git HEAD、已暂存/未暂存变更和未跟踪文件,输出不含源码正文的
changes_file。它会拒绝运行时或明显敏感路径,例如 .env、config/、data/、
logs/、tmp/、缓存、数据库和私钥文件;发现这类变更时不要绕过检查,应先清理或
明确修复代码范围。
没有变更、超过文件数量限制、工作树不是 clone 根目录或当前处于 detached HEAD 时, 停止流程并报告原因。
用 write_file 在 runtime_dir 中写一个草稿 JSON,不要写入源码仓库:
{
"target_repo": "owner/repo",
"source_root": "<source_root>",
"state_file": "<state_file>",
"changes_file": "<changes_file>",
"title": "[修复] 一句中文变更摘要",
"commit_message": "fix: 一句提交说明",
"body": "## 背景\n- ...\n\n## 修改内容\n- ...\n\n## 验证\n- ...",
"draft": true
}其中 body 只写已验证事实、修改范围和测试结果;若由 Issue 触发,可在正文中引用
用户明确提供的 Issue URL,但不要自动关闭 Issue。不要把 Token、Cookie、运行日志中
的秘密或完整源码复制进正文。
运行:
python <skill_dir>/scripts/prepare_pull_request.py \
--draft-file "<runtime_dir>/draft.json"成功后必须用 read_file 读取 preview_file 全文,原样检查目标仓库、Fork、基线、
分支、文件列表、Commit message、PR 标题、PR 正文和 Draft 状态。脚本会重新读取
Git 工作树、校验上游基线、Fork parent、origin remote 和工作分支;预览不是当前
代码状态时,重新收集并生成草稿,不要绕过校验。
预览后只能用这句确认门槛:
请确认以上内容是否 Fork 并提交 PR。回复「确认」提交,或回复「修改:...」调整。
没有收到明确的「确认」或 confirm 前,不得执行提交脚本。
用户明确确认后运行:
python <skill_dir>/scripts/submit_pull_request.py \
--payload-file "<payload_file>" \
--confirm CONFIRM脚本会在写入远端前重新检查:
origin 确实是预览中的用户 Fork;任何检查失败都必须返回真实失败原因。禁止通过 --force、覆盖远端分支、直接上传
文件或改写 payload 来绕过检查。提交中途网络失败时可以用同一个 payload_file 重试;
脚本会复用已创建的本地 Commit、远端分支或开放 PR,不重复 Fork、Commit 或 PR。
成功时向用户报告 pr_url、目标仓库、Fork、分支、Commit SHA、PR 类型和验证状态;
失败时报告 reason 和下一步需要用户处理的权限、基线或工作树问题,不声称 PR 已创建。
© jxxghp, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts) in skills/submit-pull-request of jxxghp/MoviePilot.
Open the folder on GitHubat commit 97a6dc3
GitHub Fork and PR Submission 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 |
|---|---|---|---|---|---|---|
| GitHub Fork and PR Submission this skilljxxghp/MoviePilot | 12k | — | ~1.1k | Automated safety check: Notes | GPL-3.0 | |
| 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 | |
| Creating Description For Gh PRredis/jedis | 12k | — | ~838 | Automated safety check: Pass | MIT | |
| Create Pull Request with Work Item IDmakeplane/plane | 61k | — | ~824 | Automated safety check: Pass | AGPL-3.0 | |
| React Router Pull Request Creatorremix-run/react-router | 57k | — | ~2.5k | 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.
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.
remix-run/react-router
Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.
pascalorg/editor
Opens or refreshes a pull request on pascalorg/editor from the current branch, describing only what the branch's commits and diff actually contain.
jxxghp/MoviePilot
Inspects, diagnoses and directly controls qBittorrent, Transmission or rTorrent downloaders configured in MoviePilot through a bundled Python helper.
jxxghp/MoviePilot
Turns a confirmed MoviePilot bug or feature request into a structured upstream GitHub issue, but only after local diagnosis and an explicit request to file.
jxxghp/MoviePilot
Inspects and operates Emby, Jellyfin, Plex and other media servers configured in MoviePilot through one helper script, without exposing stored credentials.
jxxghp/MoviePilot
Publishes and syncs a local MoviePilot plugin to a GitHub repository, merging only that plugin's package entry and previewing differences before writing.
jxxghp/MoviePilot
Gives your agent a real-time search service for web queries, domain-specific lookups, parallel batch searches and full-page URL extraction.
jxxghp/MoviePilot
Inspects, queries and carefully modifies the MoviePilot SQLite or PostgreSQL database through a bundled script that reads connection settings itself, without needing the password in the prompt.
Categories
Submits code changes as a GitHub pull request through an isolated Git clone, reusing or creating your fork and pushing only after you confirm the real diff. The skill starts only when you explicitly ask to create or push a PR; fixing code locally never triggers it. It first resolves the target repository from your owner/repo or URL, a confirmed issue, or a bound remote, never guessing from logs or links.
GitHub Fork and PR Submission fits situations like: opening a pull request from a fork after finishing a code change; previewing the real Git diff before anything is pushed; pushing a branch and creating a draft PR on GitHub.
Run `npx skills add jxxghp/MoviePilot --skill submit-pull-request -a claude-code`. Or copy the skill folder (skills/submit-pull-request in jxxghp/MoviePilot) into .claude/skills/submit-pull-request in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jxxghp/MoviePilot --skill submit-pull-request -a codex`. Or copy the skill folder (skills/submit-pull-request in jxxghp/MoviePilot) into .agents/skills/submit-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 jxxghp/MoviePilot --skill submit-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/submit-pull-request, .gemini/skills/submit-pull-request, .github/skills/submit-pull-request and .opencode/skills/submit-pull-request in your project.
Going by SKILL.md and its folder, GitHub Fork and PR Submission needs Python for the scripts in its folder, the command-line tools its instructions call (python and git) and credentials named GITHUB_TOKEN and REPO_GITHUB_TOKEN. Our summary lists: Python and Git; A GitHub token with fork, contents and pull request permissions configured in MoviePilot. Its frontmatter pre-approves these tools: read_file, write_file, edit_file, apply_patch, execute_command.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
GitHub Fork and PR Submission is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.5k 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 GitHub Fork and PR Submission: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Create Pull Request (cline/cline, 70k stars), Creating Description For Gh PR (redis/jedis, 12k stars) and Create Pull Request with Work Item ID (makeplane/plane, 61k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jxxghp (a GitHub user) maintains it in jxxghp/MoviePilot, which has 11,844 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 8, 2026.
Source: jxxghp/MoviePilot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.