Disk Storage Analyzer
KKKKhazix/khazix-skills
Scans a Mac or Windows PC read-only to find what fills the disk, grades each item by how safe it is to clean and builds an interactive HTML report.
Writes custom recognition rules for MoviePilot so misidentified torrent or file names resolve to the right title, season and episode.
$ npx skills add jxxghp/MoviePilot --skill generate-identifiers -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jxxghp/MoviePilot generate-identifiers --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/generate-identifiers .claude/skills/generate-identifiers && 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 "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .claude/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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/generate-identifiersType 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 generate-identifiers -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jxxghp/MoviePilot generate-identifiers --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/generate-identifiers .agents/skills/generate-identifiers && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .agents/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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 generate-identifiers -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jxxghp/MoviePilot generate-identifiers --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/generate-identifiers .cursor/skills/generate-identifiers && 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 "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .cursor/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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/generate-identifiers--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 generate-identifiers -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jxxghp/MoviePilot generate-identifiers --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/generate-identifiers .gemini/skills/generate-identifiers && 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 "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .gemini/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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 generate-identifiersInstalls 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 generate-identifiers -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/generate-identifiers .github/skills/generate-identifiers && 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 "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .github/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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 generate-identifiers -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 generate-identifiers --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/generate-identifiers .opencode/skills/generate-identifiers && 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 "generate-identifiers" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/generate-identifiers into .opencode/skills/generate-identifiers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-identifiers", 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.
generate-identifiersWrites custom recognition rules for MoviePilot so misidentified torrent or file names resolve to the right title, season and episode.
Custom identifiers clean up names before MoviePilot's recognition engine runs, and this skill produces them through the `moviepilot_api` tool. It fetches the current list with `config.identifiers.get`, checks the new rule against existing ones for duplicates, saves with `config.identifiers.update` (which replaces the whole list), and can try the result with `media.recognize`. Four rule formats exist: block words, regex replacements, episode offsets written with an `EP` placeholder, and a combined replacement plus offset joined by `&&`.
Replacements can also pin a title directly by source-native ID using `tmdbid`, `doubanid`, `bangumiid` or `anilistid`, with optional season and episode, and `g` selects a TMDB episode group for TV. Because identifiers are global, the skill defaults to conservative regex patterns tied to the sample name instead of broad matches, unless you ask for global cleanup. Operators need spaces on both sides, special characters must be escaped, and each list entry is one rule.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6034dcc. 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:
moviepilot_apiFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
MoviePilot Custom Identifier Generator loads about 2.8k tokens when it runs. Until then it costs about 243 tokens; SKILL.md has 1,142 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 jxxghp/MoviePilot at commit 6034dcc, republished under its GPL-3.0 licence (© jxxghp). 1,142 words, ~2,791 tokens.
.claude/skills/generate-identifiers/SKILL.md (or your agent's skills folder).This skill helps generate custom identifier rules for MoviePilot's media recognition system. Custom identifiers preprocess torrent/file names before the recognition engine runs, correcting naming issues that cause misidentification.
Use these moviepilot_api operations:
config.identifiers.get - Query all existing custom identifier rulesconfig.identifiers.update - Save the updated identifier list (replaces the full list)media.recognize - Test recognition of a torrent title or file path (optional)There are four formats. Operators must have spaces on both sides.
Removes matched text from the title. Supports regex.
SomeUniqueAliasUse a bare block word only when the token itself is specific enough globally, or when the user explicitly wants a global cleanup rule.
Regex substitution. The left side is a regex pattern, the right side is the replacement (supports backreferences).
被替换词 => 替换词Special replacement for direct ID specification:
被替换词 => {[tmdbid=xxx;type=movie/tv;s=xxx;e=xxx]}
被替换词 => {[doubanid=xxx;type=movie/tv;s=xxx;e=xxx]}Use the source-specific field that matches the target metadata provider:
tmdbid, doubanid, bangumiid, or anilistid. Where s (season) and e
(episode) are optional. For TMDB TV recognition, add g=xxx to specify an
episode group:
被替换词 => {[tmdbid=xxx;type=tv;g=xxx;s=xxx;e=xxx]}Shifts episode numbers found between the front and back delimiter words. EP is the placeholder for the original episode number.
前定位词 <> 后定位词 >> EP-12First performs replacement; episode offset only runs if replacement succeeded.
被替换词 => 替换词 && 前定位词 <> 后定位词 >> EP-12Lines starting with # are comments and will be skipped during processing.
. * + ? ^ $ { } [ ] ( ) | \) must be escaped with \ when matching literally.=>, <>, >>, && must have spaces on both sides.EP represents the original episode number. Common patterns:EP-12 means subtract 12EP+5 means add 5EP*2 means multiply by 2=> is equivalent to a block word.Custom identifiers are global. A new rule affects all future torrent/file recognition, not just the sample provided by the user.
When generating a new rule, default to the narrowest regex that still fixes the user's sample:
1080p, WEB-DL, 中字, 国配, REPACK, S01E01, or pure numbers unless the user explicitly wants a global cleanup rule.前定位词 and 后定位词 should use sample-specific context so the offset only runs on the intended naming pattern.Bad (too broad for a global rule):
REPACK
1080p
S01E01 => {[tmdbid=12345;type=tv;s=1;e=1]}Better (scoped to the user's sample pattern):
(\[SubGroup\].*?My\.Show.*?2024.*?)REPACK => \1
Some\.Weird\.Name(?:\.2024)?(?:\.S01E\d+)? => {[tmdbid=12345;type=tv;s=1]}
\[Baha\] <> \[1080P\] >> EP-12Before saving, mentally test the rule against:
Parse the torrent/file name provided by the user. Identify:
Write the rule using the appropriate format. Ensure:
#) above the rule to describe what it doesUse moviepilot_api with operation_id=config.identifiers.get to get all current rules:
{"operation_id": "config.identifiers.get"}Compare each new rule against the existing identifiers:
Merge new non-duplicate rules into the existing list, then use
operation_id=config.identifiers.update to save the complete list:
{
"operation_id": "config.identifiers.update",
"body": {"identifiers": ["existing rule 1", "existing rule 2", "# new comment", "new rule"]}
}CRITICAL: Always include ALL existing rules in the list. This tool replaces the entire list.
If the user wants to verify the rule works, use media.recognize to test:
{"operation_id": "media.recognize", "query": {"title": "the torrent title to test"}}Tell the user:
User: "种子名 [SubGroup] My Show - 13 [1080P],这是第二季第1集,但被识别成第13集"
Solution: Episode offset to subtract 12:
# My Show 第二季集数偏移(13->1)
\[SubGroup\] <> \[1080P\] >> EP-12User: "种子名 My.Show.2024.REPACK.1080p.mkv,REPACK导致识别异常"
Solution: Contextual replacement, scoped to this title pattern:
# 仅在 My.Show.2024 命名中移除 REPACK
(My\.Show\.2024\.)REPACK(\.1080p) => \1\2User: "文件名 [OldName] EP01.mkv,应该识别为 NewName"
Solution: Replacement scoped to the wrong alias:
# 将特定错误别名 OldName 替换为 NewName
\[OldName\] => [NewName]User: "种子名 Some.Weird.Name.S01E01.1080p.mkv,识别不到,TMDB ID是12345,是电视剧"
Solution: Direct ID specification with a sample-specific alias pattern:
# 仅在 Some.Weird.Name 这一命名模式下强制绑定 TMDB ID 12345
Some\.Weird\.Name(?:\.S01E\d+)?(?:\.1080p)? => {[tmdbid=12345;type=tv;s=1]}User: "种子名 Some.Weird.Name.S01E01.1080p.mkv,这是按 TMDB 剧集组 5ad0ec240e0a26303f00d84d 排序的电视剧"
Solution: Direct TMDB ID specification with g=...:
# 仅在 Some.Weird.Name 命名模式下绑定 TMDB ID 12345 并指定剧集组
Some\.Weird\.Name(?:\.S01E\d+)?(?:\.1080p)? => {[tmdbid=12345;type=tv;g=5ad0ec240e0a26303f00d84d;s=1]}User: "种子名 [Baha][OldTitle][13][1080P],标题应该是NewTitle,而且13应该是第二季第1集"
Solution: Combined replacement + episode offset:
# OldTitle替换为NewTitle并偏移集数
OldTitle => NewTitle && \[Baha\] <> \[1080P\] >> EP-12User: "种子名 [Group] Title - 13-14 [1080P],应该是第1-2集"
Solution: Episode offset (handles multiple numbers between delimiters):
# Title 集数偏移
\[Group\] <> \[1080P\] >> EP-12The WordsMatcher.prepare() method (in app/domain/meta/words.py) processes each rule in order:
#=> AND && AND >> AND <> → Combined format (4)=> → Replacement format (2)>> AND <> → Episode offset format (3)custom_words parameter takes precedence over global CustomIdentifiers© 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
Just SKILL.md in skills/generate-identifiers of jxxghp/MoviePilot.
Open the folder on GitHubat commit 6034dcc
MoviePilot Custom Identifier Generator 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 |
|---|---|---|---|---|---|---|
| MoviePilot Custom Identifier Generator this skilljxxghp/MoviePilot | 12k | — | ~2.8k | Automated safety check: Pass | GPL-3.0 | |
| Disk Storage AnalyzerKKKKhazix/khazix-skills | 21k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Answer Me With HTMLQingYunA/answer-me-with-html | 2.4k | — | ~4.1k | Automated safety check: Pass | MIT | |
| Abp App Nolayersabpframework/abp | 14k | — | ~575 | Automated safety check: Pass | LGPL-3.0 | |
| Mole Mac Cleanup CLI Safetytw93/Mole | 70k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Feishu Driveraucvr/Group-Goki | 112 | 3 repos | ~587 | Automated safety check: Pass | MIT |
KKKKhazix/khazix-skills
Scans a Mac or Windows PC read-only to find what fills the disk, grades each item by how safe it is to clean and builds an interactive HTML report.
QingYunA/answer-me-with-html
Turns an answer into a one-page visual HTML explainer: the model writes a short Markdown draft and the bundled CLI builds one page.
abpframework/abp
ABP Single-Layer (No-Layers / nolayers) application template - single project structure, feature-based file organization, no separate Domain/Application.Contracts projects.
tw93/Mole
Teaches an agent to drive the Mole (mo) Mac cleaning CLI safely: preview first, use JSON output, and leave destructive runs to the user.
raucvr/Group-Goki
Feishu cloud storage file management. An agent skill from raucvr/Group-Goki.
microsoft/azurelinux
Read this before authoring, editing, or reviewing a .comp.toml file; do not work from memory.
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
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.
jxxghp/MoviePilot
Gives your agent a real-time search service for web queries, domain-specific lookups, parallel batch searches and full-page URL extraction.
Categories
Writes custom recognition rules for MoviePilot so misidentified torrent or file names resolve to the right title, season and episode. Custom identifiers clean up names before MoviePilot's recognition engine runs, and this skill produces them through the `moviepilot_api` tool.recognize`.
MoviePilot Custom Identifier Generator fits situations like: A release or file name is recognized with the wrong title, season or episode; blocking unwanted keywords from names before recognition; shifting episode numbers for a series with non-standard numbering; forcing recognition of a specific title by its TMDB or Douban ID.
Run `npx skills add jxxghp/MoviePilot --skill generate-identifiers -a claude-code`. Or copy the skill folder (skills/generate-identifiers in jxxghp/MoviePilot) into .claude/skills/generate-identifiers in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jxxghp/MoviePilot --skill generate-identifiers -a codex`. Or copy the skill folder (skills/generate-identifiers in jxxghp/MoviePilot) into .agents/skills/generate-identifiers 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 generate-identifiers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-identifiers, .gemini/skills/generate-identifiers, .github/skills/generate-identifiers and .opencode/skills/generate-identifiers in your project.
SKILL.md names no scripts, command-line tools or credentials: MoviePilot Custom Identifier Generator is instructions for the agent only. Our summary lists: A running MoviePilot instance reachable through the `moviepilot_api` tool. Its frontmatter pre-approves these tools: moviepilot_api.
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.
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.
MoviePilot Custom Identifier Generator 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 2.8k 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 MoviePilot Custom Identifier Generator: Disk Storage Analyzer (KKKKhazix/khazix-skills, 21k stars), Answer Me With HTML (QingYunA/answer-me-with-html, 2.4k stars), Abp App Nolayers (abpframework/abp, 14k stars) and Mole Mac Cleanup CLI Safety (tw93/Mole, 70k 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,853 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 9, 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.