Agent skill

Publish MoviePilot Plugin

by jxxghp in 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.

GPL-3.0Auto-check: notesDevelopment

Install Publish MoviePilot Plugin

skills CLI
$ npx skills add jxxghp/MoviePilot --skill publish-moviepilot-plugin -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jxxghp/MoviePilot publish-moviepilot-plugin --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jxxghp/MoviePilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/publish-moviepilot-plugin .claude/skills/publish-moviepilot-plugin && rm -rf skills-src

Use ~/.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/

Facts

Skill name
publish-moviepilot-plugin
GitHub stars
12k
Token cost
~1.9k tokens
SKILL.md length
777 words
Files
2 (incl. scripts)
Skills in repo
16
Repo updated
First seen
Licence
GPL-3.0

At a glance

Publishes and syncs a local MoviePilot plugin to a GitHub repository, merging only that plugin's package entry and previewing differences before writing.

  • Works in 4 steps: Identify the target plugin ID and local… → Identify the GitHub repository as… → Select the package version layout. → …
  • Publishing a local MoviePilot plugin to a GitHub repository
  • SKILL.md covers Scope, Ground Truth, Pre-Flight and Script, plus 3 more sections
  • Runs Python scripts from its folder; calls python; needs GITHUB_TOKEN and REPO_GITHUB_TOKEN

What it does

A local MoviePilot plugin stored under `plugins.v2` or the older `plugins` layout is published to GitHub without touching anything else. Only that plugin's files go up, only its entry is merged into `package.v2.json` or `package.json`, local and remote differences are previewed before any write, and remote files can be pulled back to the local source. Secrets and unrelated plugins are kept out of the upload, and updates go through the GitHub Contents API incrementally.

Pre-flight steps settle the plugin ID, the local repository (your path, or the one in `PLUGIN_LOCAL_REPO_PATHS`, asking if several match), the target `owner/repo`, the package layout (v2 preferred) and the token, preferring `REPO_GITHUB_TOKEN` over `GITHUB_TOKEN`. If no target repository is known, the agent asks whether to use an existing one or create a new public repository, and creates a private one only when you ask. A helper script is `scripts/publish_plugin.py`.

When your agent uses it

  • Publishing a local MoviePilot plugin to a GitHub repository
  • Pulling plugin changes from GitHub back into the local plugin source
  • Previewing the diff between local and remote plugin files before pushing
  • Maintaining the package metadata of a plugin repository

Example prompts

  • “Publish my local MoviePilot plugin to GitHub, but show me the diff before anything is pushed.”
  • “Pull the latest version of the plugin from my GitHub repo back into the local plugin folder.”
  • “Create a new public repository for the plugin and push it.”

Requirements

  • MoviePilot with a `GITHUB_TOKEN` or `REPO_GITHUB_TOKEN` setting
  • Local plugin repositories listed in `PLUGIN_LOCAL_REPO_PATHS`
  • Python, for `scripts/publish_plugin.py`
  • Pre-approved tools (allowed-tools): read_file, write_file, edit_file, apply_patch, execute_command, moviepilot_api

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Identify the target plugin ID and local source repository.
  2. Identify the GitHub repository as owner/repo.
  3. Select the package version layout.
  4. Verify token availability.

What it can do on your machine

Read from SKILL.md and the folder at commit 28e1cb3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • read_file
    • write_file
    • edit_file
    • apply_patch
    • execute_command
    • moviepilot_api

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GITHUB_TOKEN
    • REPO_GITHUB_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Publish MoviePilot Plugin loads about 1.9k tokens when it runs. Until then it costs about 179 tokens; SKILL.md has 777 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~179
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:127
    `.env`, `.env.*`, `config/`, `data/`, `cache/`, `logs/`, `tmp/`,

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.

SKILL.md

The full file from jxxghp/MoviePilot at commit 28e1cb3, republished under its GPL-3.0 licence (© jxxghp). 777 words, ~1,914 tokens.

Download SKILL.mdSave it as .claude/skills/publish-moviepilot-plugin/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
publish-moviepilot-plugin
description
Use this skill when the user asks to publish, upload, sync, pull, push, diff, or maintain a MoviePilot local plugin in a GitHub repository. Covers using the configured MoviePilot GitHub token, PLUGIN_LOCAL_REPO_PATHS local plugin repositories, package.json/package.v2.json metadata, plugins/plugins.v2 layouts, safe file exclusion, diff preview before publishing, incremental GitHub Contents API updates, and syncing local plugin changes back from GitHub. Includes asking whether to use an existing repository or create a new public repository when no target repository is available. Also use for Chinese requests mentioning 插件发布, 插件维护, 推送插件到 GitHub, 从 GitHub 拉取插件, 同步本地插件仓库, 增量发布插件, 插件仓库维护.
allowed-tools
read_file, write_file, edit_file, apply_patch, execute_command, moviepilot_api
version
3
allowed-api-operations
config.system.get config.system.update

Publish MoviePilot Plugin

Use this skill to publish and maintain a MoviePilot local plugin repository through GitHub while protecting local secrets and unrelated plugins.

Scope

  • Publish one local plugin under plugins.v2/<plugin_id_lower>/ or plugins/<plugin_id_lower>/ to a GitHub repository.
  • Merge only that plugin's entry into package.v2.json or package.json.
  • Preview local/remote differences before writing.
  • Pull remote plugin files back to the local plugin source.
  • Create the target GitHub repository when the user explicitly chooses automatic creation; repositories are public by default unless the user asks for private.
  • Reuse MoviePilot settings GITHUB_TOKEN, REPO_GITHUB_TOKEN, and PLUGIN_LOCAL_REPO_PATHS when available.

Ground Truth

  • Local plugin development rules: skills/create-moviepilot-plugin/SKILL.md.
  • Local plugin source discovery: app/adapters/external/market.py, PluginHelper.get_local_repo_paths().
  • GitHub token settings: app/runtime/config.py, especially GITHUB_TOKEN and REPO_GITHUB_TOKEN.
  • Plugin package layouts:
    • V2: package.v2.json and plugins.v2/<plugin_id_lower>/
    • Legacy: package.json and plugins/<plugin_id_lower>/

Pre-Flight

  1. Identify the target plugin ID and local source repository.
    • If the user gives a path, use it.
    • Otherwise query PLUGIN_LOCAL_REPO_PATHS; if exactly one configured repository contains the plugin, use it.
    • If several configured repositories contain the plugin, ask which one.
  2. Identify the GitHub repository as owner/repo.
    • Use the user's explicit repository first.
    • If omitted, infer only when the local source has an obvious Git remote.
    • If neither is available, ask whether to use an existing repository or automatically create a new public repository.
    • If the user chooses an existing repository, ask for owner/repo.
    • If the user chooses automatic creation, ask for the target owner/repo and state that the repository will be public by default.
    • Do not create a private repository unless the user explicitly asks for it.
  3. Select the package version layout.
    • Prefer v2 when package.v2.json or plugins.v2/<plugin_id_lower>/ exists.
    • Use legacy only when the local plugin is under plugins/.
  4. Verify token availability.
    • Prefer REPO_GITHUB_TOKEN for the target repo when configured.
    • Fall back to GITHUB_TOKEN.
    • If no token is configured, ask the user to configure one before pushing. Read-only preview may still run without a token for public repositories.

Script

Use scripts/publish_plugin.py for deterministic GitHub operations.

bash
python skills/publish-moviepilot-plugin/scripts/publish_plugin.py preview \
  --repo owner/repo \
  --plugin-id MyPlugin \
  --local-repo /path/to/MoviePilot-Plugins \
  --package-version v2

python skills/publish-moviepilot-plugin/scripts/publish_plugin.py push \
  --repo owner/repo \
  --plugin-id MyPlugin \
  --local-repo /path/to/MoviePilot-Plugins \
  --package-version v2 \
  --message "Publish MyPlugin v1.0.0"

python skills/publish-moviepilot-plugin/scripts/publish_plugin.py pull \
  --repo owner/repo \
  --plugin-id MyPlugin \
  --local-repo /path/to/MoviePilot-Plugins \
  --package-version v2

python skills/publish-moviepilot-plugin/scripts/publish_plugin.py create-repo \
  --repo owner/repo

Options:

  • create-repo: create the target GitHub repository. Default visibility is public; use --private only when the user explicitly asked for private.
  • preview: compare local filtered files with remote files and print JSON.
  • push: upload changed files and merge the plugin package entry.
  • pull: write remote plugin files and package entry into local source.
  • --create-repo-if-missing: on push, create the target public repository when GitHub reports that it does not exist.
  • --delete-remote: on push, delete remote plugin files that no longer exist locally after exclusions.
  • --force: on pull, allow overwriting local files that differ from remote.
  • --include PATTERN: add files otherwise excluded by default.
  • --exclude PATTERN: add an extra ignore pattern.
  • --dry-run: print planned changes without writing.
  • --proxy URL: use an explicit HTTP/HTTPS proxy for GitHub API requests.
Show full SKILL.md (326 more words)Show less

Safety Rules

  • Always run preview before push unless the user explicitly asks for a direct push and already reviewed the diff.
  • When no repository is known, ask the user to choose: 使用已有 GitHub 仓库 or 自动创建 GitHub 仓库(默认 public).
  • Only run create-repo or push --create-repo-if-missing after the user has explicitly chosen automatic creation.
  • Never upload these files unless explicitly included: .env, .env.*, config/, data/, cache/, logs/, tmp/, __pycache__/, .pytest_cache/, .mypy_cache/, .ruff_cache/, .DS_Store, *.pyc, *.pyo, *.db, *.sqlite, *.sqlite3, *.log, *.bak, *.tmp, *.secret, *.key, *.pem, *.crt, *.p12, *.pfx, node_modules/.
  • For Vue federation plugins, publish built runtime assets under dist/assets/ when they are present; do not exclude them as generated files.
  • Do not overwrite or remove package entries for other plugins.
  • Do not log or print GitHub token values.
  • For push operations, report created, updated, deleted, skipped, and rejected files separately.
  • For pull operations, preserve local-only ignored files and refuse to overwrite differing local files unless --force is used.

Examples

User asks: 把本地 MyPlugin 发布到我的 GitHub 插件仓库

  1. Find MyPlugin under configured PLUGIN_LOCAL_REPO_PATHS.
  2. Ask whether to use an existing repository or create a new public repository if owner/repo cannot be inferred.
  3. Run preview and summarize the diff.
  4. Run push only after the user confirms or requested immediate publish.

User asks: 发布插件,没有 GitHub 仓库

  1. Ask for the target owner/repo and confirm automatic creation.
  2. Run create-repo or use push --create-repo-if-missing.
  3. Continue with preview and push after repository creation succeeds.

User asks: 同步 GitHub 上 MyPlugin 的最新代码到本地

  1. Run pull without --force.
  2. If local conflicts are reported, show the conflicting paths and ask whether to force overwrite or resolve manually.

Final Checklist

  • The plugin ID matches the package object key.
  • The package file and plugin directory layout match the selected version.
  • Sensitive and runtime-local files were rejected or skipped.
  • The preview was shown before push, unless explicitly bypassed.
  • The final response mentions whether local agent restart is needed only when this built-in skill itself changed.

© 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

Files

SKILL.md and 1 other file (scripts) in skills/publish-moviepilot-plugin of jxxghp/MoviePilot.

  • SKILL.md
  • scripts/publish_plugin.py

Open the folder on GitHubat commit 28e1cb3

Compare with similar skills

Publish MoviePilot Plugin 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.

Publish MoviePilot Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Publish MoviePilot Plugin this skilljxxghp/MoviePilot12k—~1.9kAutomated safety check: NotesGPL-3.0
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Mole Release Notes Publishertw93/Mole70k—~1.9kAutomated safety check: PassGPL-3.0
Pre-Release PR Triagejamiepine/voicebox57k—~3.1kAutomated safety check: PassMIT
WinAppSDK Triage Meeting Prepmicrosoft/WindowsAppSDK4.7k—~2.8kAutomated safety check: PassApache-2.0
Verdaccio PR Reviewverdaccio/verdaccio18k—~1.7kAutomated safety check: PassMIT

Similar skills

  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    70k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Pre-Release PR Triage

    jamiepine/voicebox

    Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.

    57k GitHub stars~3.1k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • WinAppSDK Triage Meeting Prep

    microsoft/WindowsAppSDK

    Official

    Prepares the triage meeting summary for WinAppSDK Needs-Triage issues, with research-backed area suggestions, draft replies and a diff since the last triage.

    4.7k GitHub stars~2.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Verdaccio PR Review

    verdaccio/verdaccio

    Reviews an existing verdaccio/verdaccio pull request end to end, verifies each finding and reports whether it is mergeable, optionally fixing it on the PR branch.

    18k GitHub stars~1.7k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Creates backports of a merged Ansible devel pull request onto the right stable branches by cherry-picking its merge commit onto new backport branches.

    71k GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from jxxghp/MoviePilot

All 16 skills in this repo
  • Inspects, diagnoses and directly controls qBittorrent, Transmission or rTorrent downloaders configured in MoviePilot through a bundled Python helper.

    12k GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • 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.

    12k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Inspects and operates Emby, Jellyfin, Plex and other media servers configured in MoviePilot through one helper script, without exposing stored credentials.

    12k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • 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.

    12k GitHub stars~1.1k tokensUpdated today
    Auto-check: notes
  • AnySearch

    jxxghp/MoviePilot

    Gives your agent a real-time search service for web queries, domain-specific lookups, parallel batch searches and full-page URL extraction.

    12k GitHub starsUsed in 1 repo~2.7k tokens
    Auto-check: notes
  • 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.

    12k GitHub stars~7.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Publish MoviePilot Plugin

What does Publish MoviePilot Plugin do?

Publishes and syncs a local MoviePilot plugin to a GitHub repository, merging only that plugin's package entry and previewing differences before writing. v2` or the older `plugins` layout is published to GitHub without touching anything else.json`, local and remote differences are previewed before any write, and remote files can be pulled back to the local source.

When should I use Publish MoviePilot Plugin?

Publish MoviePilot Plugin fits situations like: publishing a local MoviePilot plugin to a GitHub repository; pulling plugin changes from GitHub back into the local plugin source; previewing the diff between local and remote plugin files before pushing; maintaining the package metadata of a plugin repository.

How do I install Publish MoviePilot Plugin in Claude Code?

Run `npx skills add jxxghp/MoviePilot --skill publish-moviepilot-plugin -a claude-code`. Or copy the skill folder (skills/publish-moviepilot-plugin in jxxghp/MoviePilot) into .claude/skills/publish-moviepilot-plugin in your project. Claude Code loads it when a task matches its description.

How do I install Publish MoviePilot Plugin in Codex?

Run `npx skills add jxxghp/MoviePilot --skill publish-moviepilot-plugin -a codex`. Or copy the skill folder (skills/publish-moviepilot-plugin in jxxghp/MoviePilot) into .agents/skills/publish-moviepilot-plugin in your project. Codex loads it when a task matches its description.

Can I use Publish MoviePilot Plugin in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jxxghp/MoviePilot --skill publish-moviepilot-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-moviepilot-plugin, .gemini/skills/publish-moviepilot-plugin, .github/skills/publish-moviepilot-plugin and .opencode/skills/publish-moviepilot-plugin in your project.

What does Publish MoviePilot Plugin need to run?

Going by SKILL.md and its folder, Publish MoviePilot Plugin needs Python for the scripts in its folder, the command-line tools its instructions call (python) and credentials named GITHUB_TOKEN and REPO_GITHUB_TOKEN. Our summary lists: MoviePilot with a `GITHUB_TOKEN` or `REPO_GITHUB_TOKEN` setting; Local plugin repositories listed in `PLUGIN_LOCAL_REPO_PATHS`; Python, for `scripts/publish_plugin.py`. Its frontmatter pre-approves these tools: read_file, write_file, edit_file, apply_patch, execute_command, moviepilot_api.

Does Publish MoviePilot Plugin access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Publish MoviePilot Plugin safe to install?

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.

What licence does Publish MoviePilot Plugin use?

Publish MoviePilot Plugin 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.

How many tokens does Publish MoviePilot Plugin use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Publish MoviePilot Plugin?

Skills that share tags, products or a category with Publish MoviePilot Plugin: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Mole Release Notes Publisher (tw93/Mole, 70k stars), Pre-Release PR Triage (jamiepine/voicebox, 57k stars) and WinAppSDK Triage Meeting Prep (microsoft/WindowsAppSDK, 4.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Publish MoviePilot Plugin?

jxxghp (a GitHub user) maintains it in jxxghp/MoviePilot, which has 11,861 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 11, 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.