Ha Frontend Testing
home-assistant/frontend
Home Assistant frontend testing and validation workflow. An agent skill from home-assistant/frontend.
Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release.
$ npx skills add openplayerjs/openplayerjs --skill preship -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openplayerjs/openplayerjs preship --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/openplayerjs/openplayerjs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/preship .claude/skills/preship && 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 "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .claude/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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/openplayerjs/openplayerjs/tree/master/.claude/skills/preshipType 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 openplayerjs/openplayerjs --skill preship -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openplayerjs/openplayerjs preship --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openplayerjs/openplayerjs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/preship .agents/skills/preship && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .agents/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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 openplayerjs/openplayerjs --skill preship -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openplayerjs/openplayerjs preship --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openplayerjs/openplayerjs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/preship .cursor/skills/preship && 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 "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .cursor/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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/openplayerjs/openplayerjs.git --path .claude/skills/preship--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 openplayerjs/openplayerjs --skill preship -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openplayerjs/openplayerjs preship --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openplayerjs/openplayerjs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/preship .gemini/skills/preship && 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 "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .gemini/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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 openplayerjs/openplayerjs preshipInstalls 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 openplayerjs/openplayerjs --skill preship -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/openplayerjs/openplayerjs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/preship .github/skills/preship && 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 "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .github/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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 openplayerjs/openplayerjs --skill preship -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openplayerjs/openplayerjs preship --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openplayerjs/openplayerjs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/preship .opencode/skills/preship && 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 "preship" agent skill from https://github.com/openplayerjs/openplayerjs/tree/master/.claude/skills/preship into .opencode/skills/preship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "preship", 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.
preshipRun the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release.
Preship is an agent skill from openplayerjs/openplayerjs. Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release. Use when the user says "verify", "is this ready", "run the checks", "prepare the release", or when finishing any non-trivial change. Covers build, type-check, lint, tests+coverage, generated-file hygiene, downstream-consumer checks, e2e, and release dry-run.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering End-to-end testing. It works with pnpm and TypeScript. The repository describes itself as: Lightweight HTML5 video/audio player with smooth controls and ability to play VAST/VMAP/SIMID/OMID/non-linear ads. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c26914a. 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.
Shell commands in SKILL.md call:
pnpmgitnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, git and npm, which can reach the network depending on how they are called.
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.
Preship loads about 1.2k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 606 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 openplayerjs/openplayerjs at commit c26914a, republished under its MIT licence (© openplayerjs). 606 words, ~1,244 tokens.
.claude/skills/preship/SKILL.md (or your agent's skills folder).Run the applicable tier completely. Report every failure verbatim; never summarize a red gate as "mostly passing." A tier is green only when every command in it exited 0.
Run these from the repo root, in this order (order matters: build regenerates the types the tests and dist checks depend on):
pnpm run type-check
pnpm run lint
pnpm run build
pnpm run testThen verify hygiene:
pnpm run test summary must show ≥85% for branches, functions, lines,
and statements globally. If a metric dropped below, add tests (see the write-tests
skill); never lower a threshold or add a coverage exclusion — that is an ask-first change.git status --porcelain must show no changes under
dist/, coverage/, playwright-report/, test-results/, or to CHANGELOG.md.
pnpm-lock.yaml may change only if the task added/updated a dependency (which itself
requires user approval).git diff -U0 master... -- packages/ | grep -nE '^\+.*(as any|@ts-ignore|@ts-expect-error|eslint-disable)'grep -l "class EventBus" packages/{hls,ads,player,youtube}/dist/*.jsTrigger: the diff touches any exported type, class signature, or PlayerEventPayloadMap in
packages/core or packages/player.
.claude/CLAUDE.local.md lists local consumer repos with verification steps, run them now.
If a downstream check fails: do not edit that repo unless the task included it. Report
the exact errors to the user and ask how to proceed (fix downstream vs revise the API here).pnpm run build, run
git diff --stat -- '*/dist/types/*' 2>/dev/null || true mentally against the task — every
changed declaration file should map to something the task asked for.Trigger: the change affects what plays, renders, or responds to input in a browser (UI controls, engines, ads flow, autoplay, fullscreen).
pnpm run test:e2ee2e/*.spec.ts and load pages from examples/*.html. If the change adds
user-visible behavior with no covering spec, write one (pattern-match the closest existing
spec, e.g. e2e/src-switch.spec.ts) and add/extend an example page.pnpm exec playwright test e2e/foo.spec.ts) before treating it as a real failure; if it
fails twice, it is real — report it.Pre-conditions: Tiers 1–3 green, working tree clean, on master (or the user named a branch).
pnpm run preflight
pnpm run release:dry-runReview the dry-run output against these expectations and report discrepancies:
feat→minor, fix→patch,
breaking→major). If the user wants a different bump, the command is
release:minor/release:major — never a hand-edited version field.Hard stop: never run pnpm run release (or any non-:dry-run variant), npm publish,
or git push without the user explicitly instructing it in this session. Publishing is
irreversible. Present the dry-run summary and wait.
End with a table: one row per gate actually run, columns = gate, command, result (pass / fail + one-line reason). Below it, verbatim output for every failure, then the single next action you recommend. If everything passed, say what tier was run and that the change is ready for commit/PR/release respectively.
© openplayerjs, MIT. 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 .claude/skills/preship of openplayerjs/openplayerjs.
Open the folder on GitHubat commit c26914a
Preship 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 |
|---|---|---|---|---|---|---|
| Preship this skillopenplayerjs/openplayerjs | 649 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Ha Frontend Testinghome-assistant/frontend | 5.7k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk | 11k | — | ~1.8k | Automated safety check: Pass | MIT | |
| E2Egronxb/hot-updater | 1.8k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| RStudio Selenium to Playwright Migrationrstudio/rstudio | 5.1k | — | ~3.6k | Automated safety check: Pass | Custom licence | |
| Local CImodule-federation/core | 2.7k | — | ~914 | Automated safety check: Pass | MIT |
home-assistant/frontend
Home Assistant frontend testing and validation workflow. An agent skill from home-assistant/frontend.
github/copilot-sdk
Creates a Java SDK end-to-end test for the Copilot SDK that runs against a recorded YAML snapshot through a replay proxy, so CI needs no real authentication.
gronxb/hot-updater
Run end-to-end OTA verification for examples/v0.85.0 with agent-device.
rstudio/rstudio
Converts RStudio Python Selenium electron tests into TypeScript Playwright tests, checking each against a live RStudio before counting it as migrated.
module-federation/core
Run this repository's local CI parity commands and pnpm run ci:local jobs.
slopus/happy
Tests interactive CLI and TUI programs with Microsoft's tui-test, driving prompts, arrow keys and screen output in a real pseudo-terminal.
openplayerjs/openplayerjs
Add, rename, change the payload of, or remove a typed player event in OpenPlayerJS.
openplayerjs/openplayerjs
Resolve a pnpm audit (dependency-audit CI job) failure — high/critical CVEs in the dependency tree.
openplayerjs/openplayerjs
Write or extend Jest tests for OpenPlayerJS to this repo's exact conventions — makeCore factories, typed internals handles instead of as any, media property mocking, fake timers, ads/vast mocks, and…
openplayerjs/openplayerjs
Find and safely apply ONE worthwhile code optimization (reuse, simplification, efficiency, or a dead-weight cleanup) somewhere in packages//src, with new regression tests proving behavior is…
Works with
Categories
Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release. Preship is an agent skill from openplayerjs/openplayerjs. Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release.
Preship fits situations like: the user says verify; prepare the release; finishing any non-trivial change.
Run `npx skills add openplayerjs/openplayerjs --skill preship -a claude-code`. Or copy the skill folder (.claude/skills/preship in openplayerjs/openplayerjs) into .claude/skills/preship in your project. Claude Code loads it when a task matches its description.
Run `npx skills add openplayerjs/openplayerjs --skill preship -a codex`. Or copy the skill folder (.claude/skills/preship in openplayerjs/openplayerjs) into .agents/skills/preship 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 openplayerjs/openplayerjs --skill preship -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/preship, .gemini/skills/preship, .github/skills/preship and .opencode/skills/preship in your project.
Going by SKILL.md and its folder, Preship needs the command-line tools its instructions call (pnpm, git and npm).
SKILL.md contains no URLs. Its commands use git and npm, which can reach the network depending on how they are called. 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.
Preship is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 5k 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 Preship: Ha Frontend Testing (home-assistant/frontend, 5.7k stars), Java SDK E2E Test with Replay Snapshot (github/copilot-sdk, 11k stars), E2E (gronxb/hot-updater, 1.8k stars) and RStudio Selenium to Playwright Migration (rstudio/rstudio, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
openplayerjs (a GitHub organization) maintains it in openplayerjs/openplayerjs, which has 649 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 5, 2026.
Source: openplayerjs/openplayerjs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.