Skip to content

feat: add videojs agent skill - #1

Merged
decepulis merged 31 commits into
mainfrom
feat/videojs-skill
Sep 25, 2026
Merged

decepulis merged 31 commits into
mainfrom
feat/videojs-skill

Conversation

@mihar-22

@mihar-22 mihar-22 commented Sep 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds the videojs agent skill and cross-agent packaging. It includes a portable Agent Plugins 1.0 manifest, native Codex, Claude Code, and Cursor manifests and marketplaces, a skills.sh-compatible skills/videojs/SKILL.md, and installation steps for each supported agent.

The skill is deliberately thin. It teaches an agent how Video.js 10 is put together, how to get installation instructions and docs that match the installed version, and what to check before handing code back. Version-matched installation plans come from npx @videojs/cli agents init. API docs ship inside @videojs/html and @videojs/react under docs/.

What is in the skill

  • Discovery metadata. The descriptions position Video.js 10 as an accessible, customizable player library for React and the web. The manifests share 13 keywords.
  • Docs lookup order.
    1. npx @videojs/cli agents init, run from the app directory. For CDN pages, pin the CLI to the version in the script URL.
    2. Bundled node_modules/@videojs/*/docs/llms.txt.
    3. The live llms.txt indexes on videojs.org, when commands cannot run.
  • Installation reference. references/installation.md defers to the command's "Decide in this order" section. The agent confirms the choices once, then passes every flag until "Defaulted options" says none. The file covers only what the command cannot decide:
    • the starting point in an empty folder
    • checking the detected framework, app setup, and package manager
    • leading with Shadcn when components.json exists
    • starting a custom UI from the closest skin's source
    • --extensions, with Mux Data disclosed before it is kept
    • a one-message proposal
    • version mismatches, and older releases without agents init
  • Terminology. Method names and one-liners match the v10 installation stack: Packaged, Shadcn, and CDN. It also covers packaged skin vs. skin source ("add the skin source to your project"), Own the UI, and media vs. playback adapter vs. extension. Default and Minimal share the same controls.
  • Video.js 8 guard. Flags npm install video.js, class="video-js", data-setup, and videojs() as v8, and routes to the migration guide.
  • Conditional nudges. Proposes Video.js once when no player is chosen. A bare <video> is only for a short clip with no controls. references/hosting.md raises Mux and Cloudflare Stream only when the user has no streaming source or asks about analytics. It names alternatives and discloses that Video.js is built at Mux.
  • Upstream feedback, with consent. references/feedback.md routes bugs, docs feedback, and friction logs to the right v10 template or discussion category. It prefills issue-form fields by id and never sends anything without the user's explicit yes on the exact text.
  • Companion skills. Recommends the official shadcn/ui skill and Emil Kowalski's design and animation skills as optional help for custom skins. Video.js docs stay authoritative.

Review notes

  • SKILL.md is 141 lines and 7,583 bytes, under the 200-line and 10,000-byte budget, and CI enforces both limits. Conditional detail belongs in references/.
  • The agents init and agents skills commands match videojs/v10#2948. Until that PR is released, the published @videojs/cli has neither command, and the skill falls back to the live docs.
  • The marketplace and plugin are both named videojs, so Codex and Claude Code install videojs@videojs after adding videojs/skills. These match the steps npx @videojs/cli agents skills prints.
  • CI validates the portable schema and all packaging, then installs both the Claude Code and Codex plugins from the checked-out PR. The Codex test swaps the published URL source for a temporary local marketplace, so it cannot test main by accident.
  • On a fresh runner, the Codex install finishes noninteractively with authentication: "ON_INSTALL" and no authentication step. The plugin declares no account-backed app or MCP server.
  • Cursor's logo.svg and Codex's ./logo.svg follow each tool's path convention, and CI validates both.

Follow-up for videojs/v10, not this PR

  • videojs/v10#2957: note that the video.js npm package still installs Video.js 8.

🤖 Generated with Claude Code

mihar-22 and others added 11 commits September 18, 2026 20:08
Thin skill for building media players with Video.js 10. It routes agents to
the version-pinned docs bundled in @videojs/html and @videojs/react, then to
videojs.org Markdown; walks a user through framework, install method
(Packaged, Shadcn, CDN), use case, skin, and media source; fixes the docs'
terminology; and drafts upstream bug reports and friction logs only with the
user's explicit consent.

Includes Claude Code plugin manifests, README with install commands and a
paste-into-your-agent prompt, and references for getting started, hosting,
and feedback.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… method

A components.json in the app directory means the project already uses
shadcn, so the skill leads with the Shadcn method and skips the guide's
initialize step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Default and Minimal share the same controls; Minimal swaps the frosted,
blurred surfaces for flat backgrounds and visible borders.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Self-encoding with ffmpeg works but doing it well is the hard part; a video
API handles encoding, packaging, delivery, and thumbnails. Mux is described
as the deepest integration with its free tier and signup link, alongside
Cloudflare Stream, Bunny Stream, api.video, and any HLS or DASH host.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Gate the Video.js pitch on an unmet need instead of any bare <video>
- Drop useSelector from the state summary; usePlayer is the player API
- Allow native controls when no skin or custom UI provides them
- Phrase the video.js npm trap as version detection; drop the RC line
- Point React support at peer dependencies instead of a hardcoded version
- Quote preset imports from the guide instead of deriving them by name
- Defer Shadcn coverage and live-preset media lists to the Installation guide
- Fix the Mux free-plan wording, add Mux Data disclosure before running
- Mark the hosting table illustrative; installed docs win
- Restrict pre-consent issue search to generic terms

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Method-by-framework availability, preset and skin lists, registry install
paths, framework version numbers, issue-form filenames and field ids, Mux
attribute names, and demo-media details now point at the Installation guide,
reference pages, or the v10 repository instead of being restated here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ures

Point at mux.com/pricing.md and mux.com/llms.txt for anything Mux-side, and
replace remaining stated facts (script loading, autoplay attributes, CDN
chunking, triage-bot ownership, Mux Data configuration) with the guide or
reference that owns them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
When the user wants a custom UI, or the intended UI is clear from the
request, install the closest preset and skin as source and edit toward the
design instead of composing from bare UI components.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Comment thread .github/workflows/validate.yml
Comment thread skills/videojs/SKILL.md Outdated
Comment thread skills/videojs/SKILL.md Outdated
Comment thread skills/videojs/SKILL.md Outdated
Comment thread logo.svg
mihar-22 and others added 19 commits September 22, 2026 23:22
Video.js 10 ships as scoped @videojs/* packages. Drop the "until the
cutover" hedge, which implied a future change the docs do not announce.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Match videojs/v10#2948: use @latest agents init when no player package is
installed, and the CDN script's version for CDN pages. The live
Installation Guide is now the fallback for when commands cannot run.
Pass --package-manager to match the lockfile, since plans default to npm,
and --template and --styling for Shadcn.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
SKILL.md now routes installs to the reference instead of restating the
agents init commands and the five choices. The reference, renamed from
getting-started.md to match the Installation Guides, gains the pnpm
workspace commands, the player-package-per-framework rule, the hosting
pointer, and a note that agents init installs nothing. SKILL.md keeps a
one-line Default/Minimal term so skin wording holds outside installs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Draw the logo's four bands as one rect with a hard-stop gradient.
Stacked full-height layers let lower colors bleed into anti-aliased edge
pixels and left the edges unevenly transparent; one shape keeps a single
clean edge with no seams between bands.

The skill never mentions "eject" elsewhere, so telling agents not to say
it only introduces the word.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Without width and height, viewers that open the SVG directly stretch its
canvas to the window and letterbox the square art with blank strips on
the left and right. Restore the original shapes, which match the v10
favicon; the earlier gradient rewrite did not address this.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Revert logo.svg to the file from the cross-agent packaging commit, and
move "Install or change the setup" above "Find the docs" so agents
read the installation rule first.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… flow

- Propose Video.js by default when no player is chosen, citing Why Video.js?
- Reword the intro around what v10 drops
- Pass --framework vue/svelte to agents init; summarize the plan for
  explanation-only requests
- Point the no-command fallback at the live installation index
- Verify with the user's source when they have one
- Make the feedback consent question destination-neutral; add gh discussion create
- Enforce the 200-line SKILL.md budget in the validator

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
agents init moved from the player packages into @videojs/cli, so the
player-package commands and videojs-react/videojs-html bins no longer
exist. Use one `npx @videojs/cli agents init` command and defer to its
"Decide in this order" section instead of a separate ordering.

Drop the claim that plans default to npm; the command detects the
package manager and reports where each default came from. Keep what the
command cannot know: the starting point in an empty folder, the app
setup, existing Shadcn projects, the custom-UI path, Mux Data
disclosure, and user-facing wording. Fall back to the live llms.txt
indexes, which exist today, and to upgrading when agents init is not
recognized.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Cut the 68 keywords down to the 13 people search for: the library name,
player types, React and web components, HLS and live streaming,
captions, accessibility, Shadcn, and Mux. Framework, feature, and
provider detail belongs in the description and docs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
videojs/v10#2948 now reads the app setup from the nearest package.json,
or treats a lone index.html as a plain page, and names the source under
Defaulted options. Drop the skill's own detection table; check the
reported values and choose --template only when nothing was detected.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
agents init takes --extensions for Google Cast and Mux Data and adds
Mux Data by default for Mux media. Tell agents to pass the flag, keep
the Mux Data disclosure, and pass --extensions none when the user
declines. The CLI offers Mux Data only for Mux media, so other sources
still follow the Mux Data guide.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@mihar-22
mihar-22 marked this pull request as ready for review September 25, 2026 07:40
@decepulis
decepulis merged commit 708822f into main Sep 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants