Agent skill

Preship

by openplayerjs in openplayerjs/openplayerjs

Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release.

MITAuto-check passedTesting & QA

Install Preship

skills CLI
$ npx skills add openplayerjs/openplayerjs --skill preship -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openplayerjs/openplayerjs preship --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
preship
GitHub stars
649
Token cost
~1.2k tokens
SKILL.md length
606 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Run the full OpenPlayerJS verification gauntlet before committing, opening a PR, or preparing a release.

  • Works in 4 steps: Coverage — the pnpm run test summary… → No generated files in the diff — git… → No new escape hatches — on the changed… → …
  • The user says verify
  • SKILL.md covers Tier 1 — every change (always…, Tier 2 — core/player public…, Tier 3 — user-visible behavior… and Tier 4 — release preparation…, plus 1 more section
  • Calls pnpm, git and npm

What it does

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.

When your agent uses it

  • The user says verify
  • Prepare the release
  • Finishing any non-trivial change

Example prompts

  • “verify”
  • “is this ready”
  • “run the checks”
  • “/preship”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Coverage — the pnpm run test summary must show ≥85% for branches, functions, lines,
  2. No generated files in the diff — git status --porcelain must show no changes under
  3. No new escape hatches — on the changed files
  4. Core bundle isolation — if the change touched core's public surface or any rollup

What it can do on your machine

Read from SKILL.md and the folder at commit c26914a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from openplayerjs/openplayerjs at commit c26914a, republished under its MIT licence (© openplayerjs). 606 words, ~1,244 tokens.

Download SKILL.mdSave it as .claude/skills/preship/SKILL.md (or your agent's skills folder).
name
preship
description
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.

Preship — verification gauntlet

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.

Tier 1 — every change (always run)

Run these from the repo root, in this order (order matters: build regenerates the types the tests and dist checks depend on):

sh
pnpm run type-check
pnpm run lint
pnpm run build
pnpm run test

Then verify hygiene:

  1. Coverage — the 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.
  2. No generated files in the diff — 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).
  3. No new escape hatches — on the changed files:
    sh
    git diff -U0 master... -- packages/ | grep -nE '^\+.*(as any|@ts-ignore|@ts-expect-error|eslint-disable)'
    Every hit must match a sanctioned pattern (opaque alias for untyped external libs; experimental browser APIs) and carry an inline justification comment. Anything else: fix with a typed alternative from CLAUDE.md R4.
  4. Core bundle isolation — if the change touched core's public surface or any rollup config, confirm core is still external:
    sh
    grep -l "class EventBus" packages/{hls,ads,player,youtube}/dist/*.js
    Any hit means core got bundled into a consumer package — a build config regression.

Tier 2 — core/player public types changed

Trigger: the diff touches any exported type, class signature, or PlayerEventPayloadMap in packages/core or packages/player.

  • Public-surface changes are breaking for downstream consumers that pin exact versions. If .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).
  • Also confirm the API diff is intentional: after 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.
Show full SKILL.md (277 more words)Show less

Tier 3 — user-visible behavior changed

Trigger: the change affects what plays, renders, or responds to input in a browser (UI controls, engines, ads flow, autoplay, fullscreen).

sh
pnpm run test:e2e
  • E2E specs live in e2e/*.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.
  • Playwright flakes: retry a failing spec once in isolation (pnpm exec playwright test e2e/foo.spec.ts) before treating it as a real failure; if it fails twice, it is real — report it.

Tier 4 — release preparation (only when explicitly asked to prepare a release)

Pre-conditions: Tiers 1–3 green, working tree clean, on master (or the user named a branch).

sh
pnpm run preflight
pnpm run release:dry-run

Review the dry-run output against these expectations and report discrepancies:

  • Core changed since last tag → core releases first, then player/hls/ads/youtube ALL at the same version (lockstep). One version number across the family.
  • Core unchanged → only packages with their own commits since their last per-package tag appear.
  • Bump size matches the conventional commits since the last tag (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.

Reporting format

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

Files

Just SKILL.md in .claude/skills/preship of openplayerjs/openplayerjs.

Open the folder on GitHubat commit c26914a

Compare with similar skills

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.

Preship compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Preship this skillopenplayerjs/openplayerjs649—~1.2kAutomated safety check: PassMIT
Ha Frontend Testinghome-assistant/frontend5.7k—~1.7kAutomated safety check: PassApache-2.0
Java SDK E2E Test with Replay Snapshotgithub/copilot-sdk11k—~1.8kAutomated safety check: PassMIT
E2Egronxb/hot-updater1.8k—~1.6kAutomated safety check: PassCustom licence
RStudio Selenium to Playwright Migrationrstudio/rstudio5.1k—~3.6kAutomated safety check: PassCustom licence
Local CImodule-federation/core2.7k—~914Automated safety check: PassMIT

Similar skills

  • Ha Frontend Testing

    home-assistant/frontend

    Home Assistant frontend testing and validation workflow. An agent skill from home-assistant/frontend.

    5.7k GitHub stars~1.7k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    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.

    11k GitHub stars~1.8k tokensUpdated today
    Testing & QAAuto-check passed
  • E2E

    gronxb/hot-updater

    Run end-to-end OTA verification for examples/v0.85.0 with agent-device.

    1.8k GitHub stars~1.6k tokensUpdated today
    Testing & QAAuto-check passed
  • Converts RStudio Python Selenium electron tests into TypeScript Playwright tests, checking each against a live RStudio before counting it as migrated.

    5.1k GitHub stars~3.6k tokensUpdated today
    Testing & QAAuto-check passed
  • Local CI

    module-federation/core

    Run this repository's local CI parity commands and pnpm run ci:local jobs.

    2.7k GitHub stars~914 tokensUpdated today
    Testing & QAAuto-check passed
  • Tests interactive CLI and TUI programs with Microsoft's tui-test, driving prompts, arrow keys and screen output in a real pseudo-terminal.

    24k GitHub stars~603 tokensUpdated today
    Testing & QAAuto-check passed

More from openplayerjs/openplayerjs

  • Add Event

    openplayerjs/openplayerjs

    Add, rename, change the payload of, or remove a typed player event in OpenPlayerJS.

    649 GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed
  • Audit Fix

    openplayerjs/openplayerjs

    Resolve a pnpm audit (dependency-audit CI job) failure — high/critical CVEs in the dependency tree.

    649 GitHub stars~1k tokensUpdated 2 days ago
    Auto-check passed
  • Write Tests

    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…

    649 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check passed
  • Optimize

    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…

    649 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Preship

What does Preship do?

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.

When should I use Preship?

Preship fits situations like: the user says verify; prepare the release; finishing any non-trivial change.

How do I install Preship in Claude Code?

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.

How do I install Preship in Codex?

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.

Can I use Preship in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Preship need to run?

Going by SKILL.md and its folder, Preship needs the command-line tools its instructions call (pnpm, git and npm).

Does Preship access the network?

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.

Is Preship safe to install?

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.

What licence does Preship use?

Preship is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Preship use?

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.

What are the alternatives to Preship?

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.

Who maintains Preship?

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.