{"_id":"@bitmovin/skills","_rev":"11-c222334b44d453efb0e7a488d7f4679a","name":"@bitmovin/skills","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bitmovin/skills","version":"0.1.0","keywords":["bitmovin","ai","skill","claude","cursor","windsurf","copilot","wizard","video","streaming"],"license":"MIT","_id":"@bitmovin/skills@0.1.0","maintainers":[{"name":"bitadmin","email":"admin@bitmovin.com"}],"homepage":"https://github.com/bitmovin/skills","bugs":{"url":"https://github.com/bitmovin/skills/issues"},"bin":{"bitmovin-skills":"bin/cli.js"},"dist":{"shasum":"bcd2a9b9db052f28b41780ce8234796f14a7be13","tarball":"https://registry.npmjs.org/@bitmovin/skills/-/skills-0.1.0.tgz","fileCount":5,"integrity":"sha512-+AMBkgBnc4cgQ/hXgx6xYk6T9WDPkFKats1Duhpg88YIwLdMhvAZ7r/Gj+3Nx/3gnFpOw+9bKNPDZfxdNXQmfg==","signatures":[{"sig":"MEQCIFczV5PdFSfCXgYbBwbpwZDjy0BypOu9CkWlybHS2SApAiBrgu92xLC+qygYt0WD5Flfm//9CnovKJDoenLBoHJs9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24317},"type":"module","engines":{"node":">=20"},"gitHead":"5be1e3a0351dc493ac54249949bb92bb285beb93","_npmUser":{"name":"bitadmin","email":"admin@bitmovin.com"},"repository":{"url":"git+https://github.com/bitmovin/skills.git","type":"git"},"_npmVersion":"10.9.3","description":"Install Bitmovin's AI skill into Claude Code, Cursor, Windsurf, GitHub Copilot, and other AI coding tools with one command.","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.0_1778575128177_0.7803152785652705","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-12T08:38:48.030Z","modified":"2026-09-08T09:53:22.207Z","0.1.0":"2026-05-12T08:38:48.321Z"},"bugs":{"url":"https://github.com/bitmovin/skills/issues"},"license":"MIT","homepage":"https://github.com/bitmovin/skills","keywords":["bitmovin","ai","skill","claude","cursor","windsurf","copilot","wizard","video","streaming"],"repository":{"url":"git+https://github.com/bitmovin/skills.git","type":"git"},"description":"Install Bitmovin's AI skill into Claude Code, Cursor, Windsurf, GitHub Copilot, and other AI coding tools with one command.","maintainers":[{"email":"admin@bitmovin.com","name":"bitadmin"},{"email":"jakov.fustin@bitmovin.com","name":"jf-bitmovin"},{"email":"vojtech.zalesky@gmail.com","name":"mimoza"},{"email":"jakob.mayring@bitmovin.com","name":"jmayring"},{"email":"lukas.knoch-girstmair@bitmovin.com","name":"l_kg"},{"email":"daniel.weinberger@bitmovin.com","name":"dweinber"},{"email":"lukas.kroepfl@bitmovin.com","name":"lkroepfl"}],"readme":"# Bitmovin Skills\n\nA collection of portable agent skills for working with the Bitmovin platform and video development in general.\n\nThis repo is intentionally **not tied to Claude Code only**:\n- Each skill lives under `skills/<skill-name>/SKILL.md` as portable markdown\n- `.claude-plugin/` provides Claude Code plugin wrappers\n- `plugins/<skill-name>/.codex-plugin/plugin.json` provides Codex plugin wrappers\n- The canonical `skills/` layout is compatible with [`skills.sh`](https://skills.sh)\n- The same skill files can also be installed directly into ChatGPT/Codex-style local skills directories\n\n## Skills\n\n| Skill | Status | What it covers |\n| --- | --- | --- |\n| [`bitmovin`](skills/bitmovin/SKILL.md) | Available | Hub skill — routes to all Bitmovin products and walks through MCP/CLI/SDK setup. Hosted at `bitmovin.com/skill`. |\n| [`bitmovin-player-web`](skills/bitmovin-player-web/SKILL.md) | Available | Bitmovin Web Player SDK — Player v8 (stable) and Player Web X / PWX (next-gen) |\n| [`bitmovin-player-android`](skills/bitmovin-player-android/SKILL.md) | Available | Bitmovin Android Player SDK integration and troubleshooting |\n| [`bitmovin-encoding-vod`](skills/bitmovin-encoding-vod/SKILL.md) | Available | VOD encoding with the Bitmovin Encoding API (H.264 per-title, fixed ladder, AV1 UGC, hardware-accelerated sports clips) via the Encoding Templates API |\n| [`bitmovin-encoding-live`](skills/bitmovin-encoding-live/SKILL.md) | Available | Live encoding with the Bitmovin Encoding API (RTMP, redundant RTMP, SRT) via the Encoding Templates API |\n| `bitmovin-observability` | Planned | Bitmovin Analytics and observability tooling |\n| `video-development` | Planned | General video development guidance (codecs, packaging, DRM, streaming protocols) not specific to Bitmovin |\n\nThe sections below describe install paths shared by all skills in this repo. Skill-specific details live inside each skill's directory.\n\n## Quick Install With npx (any AI tool)\n\nFor the hub `bitmovin` skill — the one-prompt entry point that introduces every Bitmovin product and walks through MCP/CLI/SDK setup — run:\n\n```bash\nnpx @bitmovin/skills\n```\n\nThe wizard detects which AI tool you're using (Claude Code, Cursor, Windsurf, GitHub Copilot, OpenAI Codex, …) and installs the skill into the right location. Pass `--target <name>` to skip the prompt or `--list-targets` to see the full list. Source: [`bin/cli.js`](bin/cli.js).\n\nThe wizard fetches the canonical skill content from `https://bitmovin.com/skill` so updates to the hosted skill propagate to existing installs without republishing the package.\n\n## Install In Claude Code\n\n```bash\n# Add the Bitmovin marketplace\n/plugin marketplace add bitmovin/skills\n\n# Install a plugin (one per skill)\n/plugin install bitmovin-player-web@bitmovin\n```\n\nAfter install, the skill loads in every Claude Code session automatically. No further config.\n\nVerify with *\"What skills do you have access to?\"* — the installed skill should appear.\n\n## Install In ChatGPT / Codex\n\nIf your ChatGPT/Codex setup supports local skills, copy the skill into your Codex home:\n\n```bash\nmkdir -p ~/.codex/skills/bitmovin-player-web\ncp skills/bitmovin-player-web/SKILL.md ~/.codex/skills/bitmovin-player-web/SKILL.md\n```\n\nRepeat for any other skill in `skills/` you want available.\n\n## Install With skills.sh\n\nThis repository is compatible with [`skills.sh`](https://skills.sh) because each skill lives under `skills/<skill-name>/SKILL.md`, which is one of the repository layouts that `npx skills` discovers automatically.\n\nExamples:\n\n```bash\n# List the skills exposed by this repo\nnpx skills add bitmovin/skills --list\n\n# Install just one skill interactively\nnpx skills add bitmovin/skills --skill bitmovin-player-web\n\n# Install to specific agents\nnpx skills add bitmovin/skills --skill bitmovin-player-web -a claude-code -a codex\n\n# Install globally without prompts\nnpx skills add bitmovin/skills --skill bitmovin-player-web -g -y\n```\n\nUse `skills.sh` when you want the portable skill installed into an agent's normal skill directory. Use the Claude or Codex plugin wrappers in this repo only when you specifically want those host-native plugin surfaces.\n\n## Install In Codex As A Plugin\n\nThis repo includes Codex plugin wrappers under `plugins/<skill-name>/` plus repo-local marketplace metadata at `.agents/plugins/marketplace.json`.\n\nFor a home-local Codex plugin install, copy the plugin and marketplace entry into the standard Codex locations:\n\n```bash\nmkdir -p ~/.agents/plugins ~/plugins\ncp -R plugins/bitmovin-player-web ~/plugins/bitmovin-player-web\ncp .agents/plugins/marketplace.json ~/.agents/plugins/marketplace.json\n```\n\nIf you already have `~/.agents/plugins/marketplace.json`, merge in the new entries instead of overwriting the file.\n\nA local Codex marketplace entry looks like:\n\n```json\n{\n  \"name\": \"bitmovin-player-web\",\n  \"source\": {\n    \"source\": \"local\",\n    \"path\": \"./plugins/bitmovin-player-web\"\n  },\n  \"policy\": {\n    \"installation\": \"AVAILABLE\",\n    \"authentication\": \"ON_INSTALL\"\n  },\n  \"category\": \"Coding\"\n}\n```\n\n## Hosting (`bitmovin.com/skill`)\n\nA Cloudflare Worker under [`worker/`](worker/) serves the hub skill at `bitmovin.com/skill` with content negotiation:\n- Browsers (`Accept: text/html`) get a landing page with the `npx @bitmovin/skills` install command.\n- AI agents and `curl`/`wget` get raw markdown.\n- `bitmovin.com/skill.md` always returns markdown.\n\nSee [`worker/README.md`](worker/README.md) for deploy steps. The Worker bundles `skills/bitmovin/SKILL.md` at deploy time, so updating the hosted skill requires `wrangler deploy`.\n\n## Repo Layout\n\n- `skills/<skill-name>/`: the portable skill content (one directory per skill, with `SKILL.md` plus any scripts / templates / examples it ships)\n- `.claude-plugin/marketplace.json`: Claude marketplace metadata (lists every skill exposed as a Claude plugin)\n- `.claude-plugin/plugin.json`: Claude Code plugin metadata for the legacy root-as-plugin layout (`bitmovin-player-web`)\n- `plugins/<skill-name>/.claude-plugin/plugin.json`: Claude Code plugin metadata (per-plugin layout used by newer skills)\n- `plugins/<skill-name>/.codex-plugin/plugin.json`: Codex plugin metadata (one per skill)\n- `plugins/<skill-name>/skills/<skill-name>/`: symlink back to `skills/<skill-name>/` (for skills that ship only `SKILL.md` it can be a per-file symlink instead — `bitmovin-player-web` uses that variant)\n- `.agents/plugins/marketplace.json`: Codex marketplace metadata\n- `worker/`: Cloudflare Worker that serves the hub skill at `bitmovin.com/skill`\n- `bin/`, `src/`: `@bitmovin/skills` npx wizard sources\n\n## Skill: bitmovin-player-web\n\nWhen you ask an agent to add video playback with Bitmovin, the skill:\n\n1. **Defaults to Player v8** and only asks about PWX when the choice materially changes implementation\n2. **Uses current UI guidance** — default UI v4 for modern v8 setups, explicit/custom UI paths when needed\n3. **Writes correct code** — right npm package, right import paths, right API calls\n4. **Covers DRM, ads, analytics, subtitles, network customization**\n5. **Uses framework patterns** for React, Next.js (SSR-safe), and Vue\n6. **Warns about common mistakes** and links to authoritative docs\n\n### Why this skill exists\n\nLLMs have stale or confused Bitmovin Player Web knowledge. Common failures without this skill:\n\n- Wrong npm package (`@bitmovin/player` — doesn't exist, it's `bitmovin-player`)\n- Assuming manual `UIFactory` wiring is required on every modern v8 integration\n- Using stale UI v3/v4 wiring or the wrong asset-loading path\n- No SSR guard on Next.js imports → crash\n- Outdated doc URLs (`/playback/docs/*` instead of `/playback/reference/*`)\n- Mixing v8 and PWX APIs in the same code\n\n### What's covered\n\n**Player v8 (stable):** Installation, license keys, current default UI v4 guidance for modern releases, explicit/custom UI patterns, source config (HLS/DASH/Smooth/progressive), subtitles, thumbnails, poster, DRM (Widevine/PlayReady/FairPlay), ads (VAST/VMAP), analytics, network customization (`preprocessHttpRequest` + `sendHttpRequest`), React/Next.js/Vue patterns, modular builds, test streams, and full API references.\n\n**Player Web X / PWX (next-gen):** Native PWX API (`Player({key, defaultContainer})` + `player.sources.add()`), CDN bundles (`hls`, `dash`, `core`, `bitmovin-v8` compat), v8 compatibility layer for drop-in migration, custom packages system, and dated notes about current feature gaps from the official support matrix.\n\n## Skill: bitmovin-encoding-live\n\nWhen you ask an agent to start a Bitmovin live encoding, the skill:\n\n1. **Drives the Encoding Templates API** — a single `POST /encoding/templates/start` creates inputs, codec configs, encoding, streams, muxings, manifests, and starts the live encoding from one YAML document\n2. **Ships three Jinja templates** — single RTMP, redundant RTMP (HA ingest), and SRT (LISTENER / CALLER, optional AES passphrase)\n3. **Walks the user one question at a time** — encoding name, cloud region, output (reuse or create), output base path, manifests, ladder, audio bitrate, segment length, encoder version, auto-shutdown timeouts\n4. **Validates the rendered template** against Bitmovin's published Encoding Template JSON schema before submitting (the API otherwise accepts mistyped fields silently and the encoding gets stuck in `CREATED`)\n5. **Polls until `RUNNING`** and prints the ingest URL, manifest URLs, and dashboard URL\n6. **Keeps secrets out of params, state, and logs** — credentials are read from environment variables only\n\n### What's covered\n\nCMAF output (fmp4 muxings serving DASH and HLS, `manifestGenerator: V2`); RTMP / RTMPS / SRT ingest; AWS / GCP / Azure cloud regions; S3 / GCS outputs (reuse or create); per-encoding stream key (RTMP) or host:port (SRT); ACL choices (PUBLIC_READ / PRIVATE / NONE); auto-shutdown on stream loss / no bytes read; STABLE vs BETA encoder.\n\n## Skill: bitmovin-encoding-vod\n\nWhen you ask an agent to run a Bitmovin VOD encoding, the skill:\n\n1. **Drives the Encoding Templates API** — a single `POST /encoding/templates/start` creates inputs, codec configs, encoding, streams, muxings, manifests, and starts the encoding from one YAML document\n2. **Ships four Jinja templates** — H.264 per-title (algorithm-picked ladder, THREE_PASS), H.264 fixed ladder (you specify renditions), AV1 per-title for UGC (progressive MP4 per rendition, no manifest), and an H.264 sports-clips template using NVIDIA hardware acceleration (`VOD_HARDWARE_SHORTFORM` preset, hardcoded 9-rendition sports ladder, HLS-only, pinned to `AWS_EU_WEST_1`)\n3. **Walks the user one question at a time** — encoding name, input (reuse or create HTTPS), output (reuse or create), output base path, manifests, ladder, audio bitrate, segment length, encoder version, encoding mode\n4. **Validates the rendered template** against Bitmovin's published Encoding Template JSON schema before submitting\n5. **Polls until `FINISHED`** and prints manifest URLs and the dashboard URL\n6. **Refuses to materialize credentialed inputs** — only HTTP/HTTPS inputs are created from the skill; S3 / GCS / Azure inputs MUST be reused via an existing input id, so credentials never enter the params or template\n\n### What's covered\n\nH.264 (per-title and fixed-ladder, SINGLE_PASS / TWO_PASS / THREE_PASS) and AV1 per-title; CMAF fmp4 (DASH + HLS) for the H.264 templates; progressive MP4 for AV1 UGC; HLS-only with explicit per-rendition manifest config for the sports-clips hardware template; HTTP / HTTPS / S3 / GCS / Azure inputs (creation only for HTTP/HTTPS); S3 / GCS outputs (reuse or create); ACL choices (PUBLIC_READ / PRIVATE / NONE) with scenario-aware defaults.\n\n## Other Hosts\n\nSkill files are plain markdown and can be reused in any agent environment that supports local skills, such as Cursor, Copilot, Codex, Goose, Gemini CLI, and Cline. The host-specific wrappers in this repo are `.claude-plugin/` for Claude Code and `plugins/<skill-name>/.codex-plugin/` for Codex.\n\n## Contributing\n\nThe source of truth for each skill is `skills/<skill-name>/` (with `SKILL.md` at the top plus any scripts, templates, and examples the skill ships). Keep it portable across hosts. If you change packaged plugin behavior or published metadata, keep the wrappers in sync:\n- `.claude-plugin/plugin.json` (legacy root-as-plugin layout, used by `bitmovin-player-web`)\n- `.claude-plugin/marketplace.json`\n- `plugins/<skill-name>/.claude-plugin/plugin.json` (per-plugin layout, used by newer skills)\n- `plugins/<skill-name>/.codex-plugin/plugin.json`\n- `plugins/<skill-name>/skills/<skill-name>/` (symlink back to `skills/<skill-name>/` — directory symlink for skills that ship scripts/templates/examples; per-file symlink works for `SKILL.md`-only skills)\n- `.agents/plugins/marketplace.json`\n\nThe plugin skill path is intentionally a symlink back into `skills/<skill-name>/` so the repo only has one canonical skill payload per skill.\n\nKeep instructions concrete: code examples for every claim, primary-source links, and explicit \"common mistakes\" sections.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}