Matlab Use Database
matlab/matlab-agentic-toolkit
Reads from, writes to, and manages relational databases using MATLAB Database Toolbox.
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.
$ npx skills add jxxghp/MoviePilot --skill database-operation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jxxghp/MoviePilot database-operation --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/database-operation .claude/skills/database-operation && 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 "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .claude/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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/database-operationType 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 database-operation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jxxghp/MoviePilot database-operation --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/database-operation .agents/skills/database-operation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .agents/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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 database-operation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jxxghp/MoviePilot database-operation --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/database-operation .cursor/skills/database-operation && 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 "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .cursor/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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/database-operation--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 database-operation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jxxghp/MoviePilot database-operation --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/database-operation .gemini/skills/database-operation && 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 "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .gemini/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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 database-operationInstalls 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 database-operation -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/database-operation .github/skills/database-operation && 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 "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .github/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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 database-operation -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 database-operation --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/database-operation .opencode/skills/database-operation && 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 "database-operation" agent skill from https://github.com/jxxghp/MoviePilot/tree/v3/skills/database-operation into .opencode/skills/database-operation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-operation", 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.
database-operationInspects, 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.
A bundled script, `scripts/mp-db.py`, is the only path to direct database access: it reads MoviePilot's own local settings to connect, so the agent never needs to extract a password, token or full connection string from the user. It can run table listings, statistics and aggregations, as well as SELECT, INSERT, UPDATE, DELETE and schema-changing statements, with broad or destructive writes requiring explicit authorization first.
Before reaching for raw SQL, the guidance points to safer, narrower tools: a structured `moviepilot-api` for normal product operations, a command-dispatch skill for slash commands, a file-organization skill for manual file moves, and a retry skill for failed transfer history. Two categories of system settings are called out as better edited through the API than directly in the database, since the API enforces registered keys, value normalization and secret redaction that direct writes would bypass.
5 steps, taken from the first numbered list 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:
execute_commandFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom 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 Database Operation loads about 7.3k tokens when it runs. Until then it costs about 134 tokens; SKILL.md has 3,008 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); 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). 3,008 words, ~7,280 tokens.
.claude/skills/database-operation/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.All script paths are relative to this skill file.
Use scripts/mp-db.py for all database access. Do not extract database passwords, API tokens, or full PostgreSQL DSNs from the prompt. The script reads MoviePilot local settings and connects to SQLite or PostgreSQL internally.
This skill is the direct SQL boundary. It is implemented as a Python script and is appropriate when the agent must inspect records, run data statistics, repair stuck state, or perform an explicitly requested database update.
Run the bundled copy from the MoviePilot program directory with its project runtime, for example:
cd <MOVIEPILOT_ROOT>
python skills/database-operation/scripts/mp-db.py tablesThe Agent command environment routes python to the project-specific moviepilot-python
entry when available and falls back to the project or Docker VENV_PATH Python otherwise.
The runtime sets MOVIEPILOT_ROOT for copied skills. If you run a copied
script directly from <CONFIG_PATH>/agent/skills/, set that variable to the
program directory first; otherwise the helper reports how to relocate it.
Use the project runtime instead of a system python3.
Prefer safer product surfaces first:
| Request | Preferred skill |
|---|---|
| Normal MoviePilot product operation | moviepilot-api structured operations |
| Operation outside the structured API catalog | A more specific Skill or explicit unsupported result |
| Slash commands or plugin/system command dispatch | command-dispatch |
| Manual file organization | organize-files |
| Retry failed transfer history records | transfer-failed-retry |
Use this skill as the final fallback for data access or mutation. It may run
SELECT, INSERT, UPDATE, DELETE, and schema-changing statements through
the bundled script, but broad or destructive writes still require explicit user
authorization.
System settings have two managed sources and should not normally be edited here:
Settings variables are queried and updated by moviepilot-api
operations config.system.get / config.system.update; updates perform type
conversion and persist to app.env.SystemConfigKey values are stored in the database systemconfig table, but
the same API operations must be preferred because they enforce registered
keys, plugin mutation admission, value normalization, secret redaction, and
configuration-change events.Use direct SQL against systemconfig only for an explicitly authorized repair
when the managed API cannot complete the operation. Inspect the exact row first,
avoid broad writes, and verify the managed API can read the repaired value.
List tables:
python scripts/mp-db.py tablesShow table schema:
python scripts/mp-db.py schema downloadhistoryRun a read query:
python scripts/mp-db.py query "SELECT COUNT(*) AS total FROM downloadhistory"Read SQL from stdin or a file:
python scripts/mp-db.py query --file /path/to/query.sqlRun a write statement:
python scripts/mp-db.py write "UPDATE subscribe SET state = 'S' WHERE id = 123"query --write is also supported for compatibility, but prefer the write subcommand for INSERT, UPDATE, DELETE, and schema changes.
tables first, then schema <table>.SELECT queries, execute directly with a narrow projection and an explicit LIMIT when reading rows.INSERT, UPDATE, DELETE, DROP, ALTER, TRUNCATE, CREATE, or REPLACE, use write and report the affected row count.query defaults to read-only mode.write executes data updates and schema-changing statements directly.query --write remains available as a compatibility alias for write statements.SELECT queries get a default LIMIT 100 if no limit is present.DELETE, DROP, or TRUNCATE.UPDATE or DELETE without a WHERE clause unless the user explicitly intends to affect all rows.tables returns the tables that exist in the current instance. The catalog below covers every MoviePilot ORM table plus Alembic metadata. Always treat the live schema <table> result as authoritative.
agentchatid, session_id, client_session_id, user_id, username, channel, source, original_chat_id, title, preview, agent_messages, display_messages, message_count, created_at, updated_atagentinvocationid, principal_id, session_id, invocation_id, tool_name, arguments_digest, claim_token, status, summary, created_at, updated_atagenttaskid, name, content, trigger_type, cron_expression, run_at, enabled, user_id, username, session_id, channel, source, original_chat_id, last_status, last_run_at, last_result, last_run_id, run_count, created_at, updated_atagenttaskrunid, run_id, task_id, trigger_source, name, content, trigger_type, cron_expression, run_at, user_id, username, session_id, channel, message_source, original_chat_id, status, started_at, finished_at, resultalembic_versionversion_numdownloadfailureid, fingerprint, type, title, year, media_source, media_id, seasons, episodes, site, site_name, torrent_id, torrent_name, torrent_size, downloader, source, error_message, retry_count, first_failed_at, last_failed_at, next_retry_atdownloadfilesid, downloader, download_hash, fullpath, savepath, filepath, torrentname, statedownloadhistoryid, path, type, title, year, media_source, media_id, music_type, seasons, episodes, image, poster, downloader, download_hash, torrent_name, torrent_description, torrent_site, userid, username, channel, date, note, media_category_id, media_category, classification_rule_id, classification_policy_revision, classification_source, episode_group, custom_wordsmediaserveritemid, server, library, item_id, item_type, title, original_title, year, media_source, media_id, path, seasoninfo, note, lst_mod_datemessageid, channel, source, mtype, title, text, image, link, userid, reg_time, action, noteoutboxmessageid, event_key, topic, payload_version, payload, status, attempt, next_retry_at, lease_until, last_error, created_at, completed_atpasskeyid, user_id, credential_id, public_key, sign_count, name, aaguid, created_at, last_used_at, is_active, transportsplugindataid, plugin_id, key, valuepluginidentityid, plugin_id, normalized_plugin_id, trusted_source_type, trusted_source_key, binding_basis, payload_source_type, payload_source_key, declared_version, package_generation, declared_metadata, payload_receipt, revision, created_at, updated_at, bound_at, payload_applied_atplugininstallationid, transaction_id, plugin_id, phase, membership_before, membership_target, identity_before_revision, identity_target_revision, package_existed, persistent_backup_existed, created_at, updated_at, schema_versionplugininstanceid, instance_id, source_plugin_id, plugin_name, plugin_desc, plugin_icon, is_default_target, is_enabled, log_level, log_expires_at, config_data, created_at, updated_atsearchsessionid, task_id, version, payload, updated_atsiteid, name, domain, url, pri, rss, cookie, ua, apikey, token, proxy, filter, render, public, note, limit_interval, limit_count, limit_seconds, timeout, is_active, lst_mod_date, downloadersiteiconid, name, domain, url, base64sitestatisticid, domain, success, fail, seconds, lst_state, lst_mod_date, notesiteuserdataid, domain, name, username, userid, user_level, join_at, bonus, upload, download, ratio, seeding, leeching, seeding_size, leeching_size, seeding_info, message_unread, message_unread_contents, err_msg, updated_day, updated_timesubscribeid, name, year, type, search_interval, keyword, media_source, media_id, music_type, total_tracks, downloaded_tracks, season, poster, backdrop, vote, description, filter, include, exclude, quality, resolution, effect, audio_quality, audio_format, min_bitrate, min_bit_depth, min_sample_rate, total_episode, start_episode, lack_episode, note, state, last_search, last_update, date, username, sites, downloader, best_version, best_version_full, current_priority, current_audio_format, current_bitrate, current_bit_depth, current_sample_rate, episode_priority, save_path, search_imdbid, manual_total_episode, custom_words, media_category_id, media_category, filter_groups, episode_groupsubscribehistoryid, name, year, type, search_interval, keyword, media_source, media_id, music_type, total_tracks, season, poster, backdrop, vote, description, filter, include, exclude, quality, resolution, effect, audio_quality, audio_format, min_bitrate, min_bit_depth, min_sample_rate, total_episode, start_episode, date, username, sites, best_version, best_version_full, current_priority, current_audio_format, current_bitrate, current_bit_depth, current_sample_rate, episode_priority, save_path, search_imdbid, custom_words, media_category_id, media_category, classification_rule_id, classification_policy_revision, classification_source, filter_groups, episode_groupsubscriptionsearchbatchid, batch_id, source, state, priority, total_count, finished_count, failed_count, cancelled_count, skipped_count, cancel_requested, created_at, updated_at, started_at, finished_at, last_errorsubscriptionsearchtaskid, task_id, batch_id, subscription_id, active_key, source, priority, position, state, phase, current_site_id, pending_site_ids, attempt_count, cancel_requested, lease_owner, lease_token, lease_expires_at, available_at, created_at, updated_at, started_at, finished_at, last_errorsubscriptionsitebudgetid, site_id, lease_owner, lease_token, lease_expires_at, next_allowed_at, consecutive_failures, success_streak, last_outcome, last_error, updated_atsystemconfigid, key, valuetransferexecutionstepid, task_id, operation_id, checkpoint_fingerprint, ordinal, phase, kind, state, attempt_token, attempt_count, intent_version, intent_payload, result_version, result_payload, last_error, prepared_at, started_at, completed_at, updated_attransferhistoryid, transfer_task_id, transfer_settlement_revision, src, src_storage, src_fileitem, dest, dest_storage, dest_fileitem, mode, type, media_category_id, category, classification_rule_id, classification_policy_revision, classification_source, title, year, media_source, media_id, music_type, total_tracks, audio_format, audio_lossless, bit_depth, sample_rate, bitrate, seasons, episodes, image, downloader, download_hash, status, errmsg, retry_count, auto_paused, failure_stage, recovery_action, cleanup_status, cleanup_error, date, files, episode_grouptransferpendingid, task_id, storage, src_path, created_at, state, updated_at, last_error, input_version, planning_input, input_fingerprint, checkpoint_version, checkpoint_payload, planned_at, lease_owner, lease_token, lease_expires_at, heartbeat_at, attempt_count, execution_state, execution_version, execution_payload, execution_fingerprint, retry_generation, retry_count, retry_due_at, retry_requested_by, retry_reason, settlement_revision, terminal_history_id, manual_review_revision, reviewed_at, reviewed_by, review_reason, review_decisiontransfersettlementreceiptid, task_id, history_id, settlement_revision, outcome, execution_fingerprint, lease_token, history_status, src, src_storage, pending_deleted, error, created_at, updated_atuserid, name, email, hashed_password, is_active, is_superuser, avatar, is_otp, otp_secret, permissions, settingsuserconfigid, username, key, valueworkflowid, name, description, timer, trigger_type, event_type, event_conditions, state, current_action, result, run_count, actions, flows, context, execution_config, execution_state, add_time, last_timetables: arguments={} lists current database tables.schema: arguments={"table_name":"downloadhistory"}; table_name must come from tables.query: arguments={"sql":"SELECT ...","limit":100,"write":false}; provide exactly one of sql and file. SELECT/WITH/EXPLAIN are allowed by default.write: arguments={"sql":"UPDATE ... WHERE ..."}; provide exactly one of sql and file and only one statement.file is a local SQL path readable by the MoviePilot process. MCP clients normally send sql directly.Use the live schema result instead of guessing columns from older documentation. Treat media_source and media_id as one atomic identity pair.
Total downloads:
SELECT COUNT(*) AS total FROM downloadhistoryRecent download history:
SELECT title, year, type, torrent_site, date FROM downloadhistory ORDER BY id DESC LIMIT 10Failed transfers:
SELECT id, title, src, errmsg, date FROM transferhistory WHERE status = 0 ORDER BY id DESC LIMIT 10Active subscriptions:
SELECT name, year, type, season, state, lack_episode FROM subscribe WHERE state = 'R' LIMIT 50Site upload/download statistics:
SELECT name, domain, upload, download, ratio, bonus, seeding, user_level FROM siteuserdata ORDER BY upload DESC LIMIT 50Media library statistics:
SELECT server, library, COUNT(*) AS count FROM mediaserveritem GROUP BY server, librarySite access success rate:
SELECT domain, success, fail, ROUND(success * 100.0 / (success + fail), 1) AS success_rate FROM sitestatistic WHERE success + fail > 0 ORDER BY success_rate DESC LIMIT 50Plugin data keys:
SELECT plugin_id, key FROM plugindata ORDER BY plugin_id, key LIMIT 100| Feature | SQLite | PostgreSQL |
|---|---|---|
| Boolean values | 0 / 1 | false / true |
| String concat | ` | |
| Current time | datetime('now') | NOW() |
| JSON access | json_extract(col, '$.key') | col->>'key' |
| Case-insensitive match | LIKE | ILIKE |
moviepilot doctor.python scripts/mp-db.py tables, then inspect the table with schema.© 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 1 other file (scripts) in skills/database-operation of jxxghp/MoviePilot.
Open the folder on GitHubat commit 97a6dc3
MoviePilot Database Operation 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 Database Operation this skilljxxghp/MoviePilot | 12k | — | ~7.3k | Automated safety check: Pass | GPL-3.0 | |
| Matlab Use Databasematlab/matlab-agentic-toolkit | 1.1k | — | ~3.1k | Automated safety check: Pass | Custom licence | |
| SQL Database Support for pRESTprest/prest | 4.6k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Chdb SQLvemetric/vemetric | 394 | 1 repos | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| PostgreSQL Documentation Reference2025Emma/vibe-coding-cn | 23k | 1 repos | ~19k | Automated safety check: Pass | MIT | |
| Squixeduardofuncao/squix | 273 | — | ~784 | Automated safety check: Pass | MIT |
matlab/matlab-agentic-toolkit
Reads from, writes to, and manages relational databases using MATLAB Database Toolbox.
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
vemetric/vemetric
A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…
2025Emma/vibe-coding-cn
PostgreSQL database documentation - SQL queries, database design, administration, performance tuning, and advanced features. Use when working with PostgreSQL…
eduardofuncao/squix
Run SQL queries across databases (Postgres, MySQL, SQLite, etc.) via the squix CLI.
OpenDCAI/DataMind
Database operations runbook — backup, recovery, performance tuning, troubleshooting.
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
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.
Works with
Categories
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. py`, is the only path to direct database access: it reads MoviePilot's own local settings to connect, so the agent never needs to extract a password, token or full connection string from the user. It can run table listings, statistics and aggregations, as well as SELECT, INSERT, UPDATE, DELETE and schema-changing statements, with broad or destructive writes requiring explicit authorization first.
MoviePilot Database Operation fits situations like: answering a statistics question like how many downloads happened this month; inspecting or repairing a stuck subscription or transfer record; running a cleanup request against old database records; querying site or download statistics directly from the database.
Run `npx skills add jxxghp/MoviePilot --skill database-operation -a claude-code`. Or copy the skill folder (skills/database-operation in jxxghp/MoviePilot) into .claude/skills/database-operation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jxxghp/MoviePilot --skill database-operation -a codex`. Or copy the skill folder (skills/database-operation in jxxghp/MoviePilot) into .agents/skills/database-operation 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 database-operation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/database-operation, .gemini/skills/database-operation, .github/skills/database-operation and .opencode/skills/database-operation in your project.
Going by SKILL.md and its folder, MoviePilot Database Operation needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: A MoviePilot installation; Python, run through the project's own runtime. Its frontmatter pre-approves these tools: execute_command.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
MoviePilot Database Operation 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 7.3k tokens (SKILL.md is roughly 29k 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 Database Operation: Matlab Use Database (matlab/matlab-agentic-toolkit, 1.1k stars), SQL Database Support for pREST (prest/prest, 4.6k stars), Chdb SQL (vemetric/vemetric, 394 stars) and PostgreSQL Documentation Reference (2025Emma/vibe-coding-cn, 23k 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.