Terminal Opener
affaan-m/ECC
Open an executable and its argument array in a visible terminal window through a reusable, shell-free launch plan with dry-run, JSON, capability detection, detached fallback, and standalone recovery…
Query your Jellyfin media server from the terminal — recently added media, search, item details, series navigation, next-up episodes, library browsing, server info, and user login.
$ npx skills add magnus919/agent-skills --skill jellyfin -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install magnus919/agent-skills jellyfin --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/magnus919/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/jellyfin .claude/skills/jellyfin && 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 "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .claude/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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/magnus919/agent-skills/tree/main/jellyfinType 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 magnus919/agent-skills --skill jellyfin -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install magnus919/agent-skills jellyfin --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/jellyfin .agents/skills/jellyfin && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .agents/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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 magnus919/agent-skills --skill jellyfin -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install magnus919/agent-skills jellyfin --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/jellyfin .cursor/skills/jellyfin && 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 "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .cursor/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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/magnus919/agent-skills.git --path jellyfin--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 magnus919/agent-skills --skill jellyfin -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install magnus919/agent-skills jellyfin --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/jellyfin .gemini/skills/jellyfin && 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 "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .gemini/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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 magnus919/agent-skills jellyfinInstalls 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 magnus919/agent-skills --skill jellyfin -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/jellyfin .github/skills/jellyfin && 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 "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .github/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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 magnus919/agent-skills --skill jellyfin -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install magnus919/agent-skills jellyfin --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/jellyfin .opencode/skills/jellyfin && 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 "jellyfin" agent skill from https://github.com/magnus919/agent-skills/tree/main/jellyfin into .opencode/skills/jellyfin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jellyfin", 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.
jellyfinQuery your Jellyfin media server from the terminal — recently added media, search, item details, series navigation, next-up episodes, library browsing, server info, and user login.
Jellyfin is an agent skill from magnus919/agent-skills. Query your Jellyfin media server from the terminal — recently added media, search, item details, series navigation, next-up episodes, library browsing, server info, and user login. Use when the user asks about Jellyfin, media servers, movies, TV shows, next episodes, or their media library. Do not use this skill for server installation, library management, playback control, or Emby/Plex servers.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `README.md`, `evals/evals.json` and `references/auth-and-sessions.md`). Compatibility notes: Requires Python 3.8+ and requests. Authenticate with JELLYFINAPIKEY (Dashboard → API Keys), a user access token from login, or Quick Connect; user-scoped…
The repository describes itself as: Curated collection of AI agent skills for Hermes and other agent frameworks. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 22b4723. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
jqFrom 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 these keys or tokens, usually read from environment variables:
JELLYFIN_API_KEYJELLYFIN_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires Python 3.8+ and `requests`. Authenticate with JELLYFIN_API_KEY (Dashboard → API Keys), a user access token from `login`, or Quick Connect; user-scoped commands (`recent`, `next-up`, `item`, `seasons`, `episodes`) also need JELLYFIN_USER_ID or --user-id.
From compatibility in the SKILL.md frontmatter.
Jellyfin loads about 2.8k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 102 tokens; SKILL.md has 925 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 magnus919/agent-skills at commit 22b4723, republished under its MIT licence (© magnus919). 925 words, ~2,803 tokens.
.claude/skills/jellyfin/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Query recently added movies and TV episodes, search and inspect media, walk series →
seasons → episodes, browse libraries, see next-up episodes, log in as a user, and check
server stats — all from your Jellyfin server's REST API. Every command is read-only
except login.
http://localhost:8096).+. Administrator-level, no user identity:
every user-scoped command then needs an explicit user id.scripts/jellyfin login --username NAME --prompt once; it
prints the values to export.export JELLYFIN_URL="http://your-server:8096" # include protocol and port
export JELLYFIN_API_KEY="your-api-key-here" # or JELLYFIN_TOKEN after `login`
export JELLYFIN_USER_ID="your-jellyfin-user-id" # required by recent, next-up, item, seasons, episodesRun the bundled CLI as scripts/jellyfin. --help and --dry-run work without
credentials.
Jellyfin wants a MediaBrowser-scheme Authorization header on every call. The login
endpoint requires its Client=..., Device=..., DeviceId=..., Version=... quartet before
any token exists — the server rejects POST /Users/AuthenticateByName with
400 Error processing request. otherwise. Afterwards the access token (or API key) rides
the same header as Token="..."; the legacy X-Emby-Token header means the same thing
and is scheduled for removal from Jellyfin 12.0. The bundled CLI sends the modern form and
puts the token in exactly that one channel per request (never co-sends X-Emby-Token).
See references/auth-and-sessions.md.
scripts/jellyfin login --username alice --prompt # prints JELLYFIN_* exports
echo "pw" | scripts/jellyfin login --username alice --password-stdin
scripts/jellyfin login --username alice --dry-run --json # preview the pre-token headerlogin demonstrates the full researched sequence: complete pre-token MediaBrowser header
→ POST /Users/AuthenticateByName → capture User.Id + AccessToken → print the
post-token header for reuse. It never echoes the password.
scripts/jellyfin info # server name, version, OS, user count
scripts/jellyfin info --jsonscripts/jellyfin recent # last 10 items added for JELLYFIN_USER_ID
scripts/jellyfin recent --movies --limit 5 # server-side includeItemTypes filter
scripts/jellyfin recent --episodes --limit 20 --json
scripts/jellyfin recent --user-id USER_ID # override the env varHits /Items/Latest with userId; the response is a bare JSON array (no Items
wrapper), and groupItems merges episodes by series, so treat it as "what's new".
scripts/jellyfin search --query "dune" # everything
scripts/jellyfin search --query "dune" --type Movie # comma-separated types
scripts/jellyfin search --query "star trek" --type Series,Episode --limit 5 --jsonSearch hits /Search/Hints; results carry id (with a deprecated ItemId twin on old
servers — the CLI already prefers the modern field).
scripts/jellyfin search --query "dune" --type Movie --json # find an item ID
scripts/jellyfin item --id ITEM_ID # full metadata (needs user)
scripts/jellyfin seasons --series-id SERIES_ID # list seasons
scripts/jellyfin episodes --series-id SERIES_ID --season-id SEASON_ID
scripts/jellyfin next-up --limit 10 # next unwatched episodes
scripts/jellyfin next-up --series-id SERIES_ID --user-id USER_IDitem, seasons, episodes, and next-up are user-scoped: they require
JELLYFIN_USER_ID or --user-id and fail before any network call without one.
scripts/jellyfin libraries # library IDs and types
scripts/jellyfin browse --library-id LIBRARY_ID --type Movie --limit 50
scripts/jellyfin browse --library-id LIBRARY_ID --start-index 50 # paginate
scripts/jellyfin browse --library-id LIBRARY_ID --user-id USER_ID # userId sent explicitlylibraries reads /Library/MediaFolders, which is admin-only — non-admin tokens get
403 and should use /UserViews (see references). browse pages /Items with
startIndex/limit and passes userId when provided, since servers using non-API-key
auth reject unscoped queries with 400 userId is required.
scripts/jellyfin stats # movie, series, episode, song counts (/Items/Counts)scripts/jellyfin search --query "breaking bad" --type Series --json | jq -r '.results[0].id'
scripts/jellyfin next-up --series-id "$SERIES_ID" --user-id "$JELLYFIN_USER_ID" --json | jq -r '.items[0].name'scripts/jellyfin browse --library-id "$LIB_ID" --limit 100 --start-index 0 --json | jq -c '.items'
# loop: advance --start-index by the returned count until .total_record_count is reachedscripts/jellyfin login --username alice --prompt --json | jq -r '"\(.user_id) \(.access_token)"'Put --json before or after the subcommand. Output keys are stable snake_case: items
(with id, name, type, year, series, season_number, episode_number),
results, libraries, total_record_count, start_index. --dry-run emits a plan
carrying dry_run, path, and params (login adds authorization_header; info
composes a requests list), matching what would be sent, so jq can verify a chain before
running it live. Exit codes: 0 success (including dry-run), 1 CLI/API errors, 2
argument errors. Use jq -r '.items[] | [.name, .year] | @tsv' for tabular handoff.
http://192.168.1.100:8096.recent, next-up, item,
seasons, episodes refuse to run without JELLYFIN_USER_ID/--user-id. The CLI
never picks an administrator for you. A missing userId on user-token requests makes the
server answer 400 userId is required./Users/Me answers 400 Token is not owned by a user. to
API keys by design; per-user queries need an explicit user id (see
references/user-scoping-and-errors.md).400 with plain
text Error processing request.; wrong credentials → 401. Same endpoint, different
failures./Items and /Shows/* wrap results in
{Items, TotalRecordCount, StartIndex}; /Items/Latest returns a bare array; search
uses a SearchHints key. Generic clients must branch (the CLI already does).--movies/--episodes become
includeItemTypes before limit; no local filtering.libraries is admin-only — /Library/MediaFolders requires an administrator token;
non-admin tokens get 403.X-Emby-Token, X-MediaBrowser-Token, and the
api_key query parameter are deprecated; admins can already disable them (10.11+), and
removal targets 12.0. Prefer the modern Authorization header the CLI sends.--help and --dry-run work without credentials; dry-run never touches
the network.Use this skill for read-only interaction with a running Jellyfin server: discovery of
what's new, searching and inspecting items, walking series and seasons, next-up planning,
library inventories, and obtaining a user session via login or Quick Connect.
Do not use this skill for server installation or administration (installing Jellyfin or
Emby, editing libraries, managing users) — every bundled command is read-only except
login. It does not target Plex or Kodi (different APIs — use their own tools), and it is
not a playback remote: route streaming or remote-control automation to Jellyfin's official
clients.
| File | Use it for |
|---|---|
| references/auth-and-sessions.md | MediaBrowser header scheme, login flow, token channels, legacy deprecation, error signatures |
| references/endpoint-catalog.md | Every read endpoint's parameters, response shapes, image URLs, pagination loop |
| references/user-scoping-and-errors.md | The userId requirement matrix, API-key identity quirks, 400-vs-404 diagnosis |
| references/gotchas-field-guide.md | Wire-level failure signatures, version-drift ledger, mock shapes |
| references/worked-recipes.md | Multi-step curl/jq and CLI recipes: login → latest, libraries → browse, search → seasons → episodes |
| references/quick-connect.md | Passwordless Quick Connect login flow |
scripts/jellyfin — the bundled Python CLI (--json, --dry-run, lazy auth).
Imports only the standard library and requests.scripts/test_jellyfin_cli.py — offline test suite (pytest + unittest compatible);
all HTTP behavior is mocked, zero network egress.requests. A running Jellyfin server (10.8+ assumed; tested
behaviors anchored to the 12.0-era OpenAPI spec). No service is started by this skill.© magnus919, MIT. 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 10 other files (scripts, references) in jellyfin of magnus919/agent-skills.
Open the folder on GitHubat commit 22b4723
Jellyfin 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 |
|---|---|---|---|---|---|---|
| Jellyfin this skillmagnus919/agent-skills | 115 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Terminal Openeraffaan-m/ECC | 277k | — | ~635 | Automated safety check: Pass | MIT | |
| Terminal Opsaffaan-m/ECC | 277k | 2 repos | ~750 | Automated safety check: Pass | MIT | |
| Terminal Opsaffaan-m/ECC | 276k | — | ~439 | Automated safety check: Pass | MIT | |
| Terminal Opsaffaan-m/ECC | 276k | — | ~323 | Automated safety check: Pass | MIT | |
| Terminal Bench Looppaperclipai/paperclip | 100k | — | ~6.3k | Automated safety check: Pass | MIT |
affaan-m/ECC
Open an executable and its argument array in a visible terminal window through a reusable, shell-free launch plan with dry-run, JSON, capability detection, detached fallback, and standalone recovery…
affaan-m/ECC
Evidence-first repo execution workflow for ECC. An agent skill from affaan-m/ECC.
affaan-m/ECC
ECCのための証拠優先のリポジトリ実行ワークフロー。ユーザーがコマンドの実行、リポジトリの確認、CIの失敗のデバッグ、正確な実行と検証の証明を伴う狭い修正のプッシュを必要とする場合に使用する。
affaan-m/ECC
基于证据优先的仓库执行工作流,适用于ECC。当用户需要运行命令、检查仓库、调试CI失败或推送带有精确执行和验证证明的窄修复时使用。
paperclipai/paperclip
Run one Terminal-Bench task through a bounded Paperclip smoke/diagnosis/fix loop.
QwenLM/qwen-code
Drives a CLI through a TypeScript scenario and saves terminal screenshots at each step, so pull requests that change command output can be checked visually.
magnus919/agent-skills
Organize durable agent research outputs as summaries, analysis, and evidence dossiers.
magnus919/agent-skills
Build portable, first-person colored ASCII city engines and small GIS-derived city packs.
magnus919/agent-skills
Manage color workflows with ICC profiles, working spaces, gamut mapping, and color science.
magnus919/agent-skills
A skill your agent uses for PhD-level expertise in data science, statistics, and machine learning: rigorous statistical analysis, experimental design, causal inference, advanced modeling, research…
magnus919/agent-skills
Use Docker Compose to define, run, debug, and harden multi-container applications.
magnus919/agent-skills
Design, review, simulate, and verify FPGA logic using explicit RTL contracts, clock and reset models, CDC analysis, timing constraints, and reproducible implementation evidence.
Query your Jellyfin media server from the terminal — recently added media, search, item details, series navigation, next-up episodes, library browsing, server info, and user login. Jellyfin is an agent skill from magnus919/agent-skills. Query your Jellyfin media server from the terminal — recently added media, search, item details, series navigation, next-up episodes, library browsing, server info, and user login.
Jellyfin fits situations like: the user asks about Jellyfin; their media library; server installation; library management.
Run `npx skills add magnus919/agent-skills --skill jellyfin -a claude-code`. Or copy the skill folder (jellyfin in magnus919/agent-skills) into .claude/skills/jellyfin in your project. Claude Code loads it when a task matches its description.
Run `npx skills add magnus919/agent-skills --skill jellyfin -a codex`. Or copy the skill folder (jellyfin in magnus919/agent-skills) into .agents/skills/jellyfin 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 magnus919/agent-skills --skill jellyfin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jellyfin, .gemini/skills/jellyfin, .github/skills/jellyfin and .opencode/skills/jellyfin in your project.
Going by SKILL.md and its folder, Jellyfin needs Python for the scripts in its folder, the command-line tools its instructions call (jq) and credentials named JELLYFIN_API_KEY and JELLYFIN_TOKEN. Our summary lists: Python 3; A credential in JELLYFIN_API_KEY; A credential in JELLYFIN_TOKEN. Compatibility (from SKILL.md): Requires Python 3.8+ and `requests`. Authenticate with JELLYFIN_API_KEY (Dashboard → API Keys), a user access token from `login`, or Quick Connect; user-scoped commands (`recent`, `next-up`, `item`, `seasons`, `episodes`) also need JELLYFIN_USER_ID or --user-id..
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.
Jellyfin is published under the MIT licence (declared in SKILL.md). 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. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Jellyfin: Terminal Opener (affaan-m/ECC, 277k stars), Terminal Ops (affaan-m/ECC, 277k stars), Terminal Ops (affaan-m/ECC, 276k stars) and Terminal Ops (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
magnus919 (a GitHub user) maintains it in magnus919/agent-skills, which has 115 GitHub stars. The repository holds 131 skills in this directory. The repository was last updated on October 10, 2026.
Source: magnus919/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.