{"owner":"shaka-project","repo":"shaka-player","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# Shaka Player — AI Agent Instructions\n\nShaka Player is an open-source JavaScript library for adaptive media playback\n(DASH, HLS, MSF), published on npm as `shaka-player`. See [README.md](README.md)\nfor full details. The public API is exposed under the global `shaka` namespace.\n\nGitHub: https://github.com/shaka-project/shaka-player\n\n## Attribution\n\nRead [AGENT-ATTRIBUTION.md](AGENT-ATTRIBUTION.md) for attribution details.\n\n## Common Failures\n\n**Read this section before making any change.**\n\n**New source file: two mandatory registrations.**\n\nAdding a new class or plugin requires two separate registrations or it may fail to load:\n1. Add a `goog.require('shaka.YourModule')` entry to\n   `shaka-player.uncompiled.js` only for self-registering modules (e.g. plugins)\n   that no other file `goog.require`s directly.  This keeps uncompiled/dev mode\n   working.\n2. Add the source file to the appropriate `build/types/` file(s)\n   (determines which compiled build variants include it).\n\n**Export annotations.**\n\nClosure Compiler renames symbols aggressively. Getting annotations wrong\nmay silently break the public API:\n\n- API symbol public to the library (callable by app code): must have `@export`\n- Internal symbol public to other classes (used within the library, not by\n  apps): no export annotation\n- Abstract interface for generated externs: `@exportInterface`\n- Event/typedef visible in docs only: `@exportDoc`\n- `@expose`: deprecated, do not use\n\nSee [docs/design/current/export.md](docs/design/current/export.md) for the full\nrules.\n\n**`@suppress` is a red flag.**\nAvoid `@suppress` entirely if possible. Any use must have a detailed comment\nexplaining why it is unavoidable. Maintainers will scrutinize every instance.\n\n**Linter, including spell-checker.**\nThis check must pass before committing:\n\n```bash\n# Compiler, linter, spell check, and other checks\npython3 build/check.py\n```\n\nUnknown words fail the spell-checker; add legitimate new terms to\n`project-words.txt`.\n\n**Zero runtime npm dependencies.**\nShaka Player currently ships with zero runtime npm dependencies. Do not\nintroduce any. New development/test dependencies are rare and require\njustification.\n\n**`lib/device/` is sensitive.**\nDevice-specific code in `lib/device/` may only break on CE (consumer\nelectronics) hardware, which is only tested in the nightly device lab CI.\nChanges here need extra care and justification.  Maintainers can choose to\ntrigger a run in the lab for any PR.\n\n## Directory Structure\n\nShallow overview of top-level directories. **If you add, remove, or rename a\ntop-level directory as part of a change, update this section.**\n\n```\nlib/              Core library source (JS, Closure-annotated)\nui/               UI layer (controls, buttons, LESS styles)\nexterns/          Closure Compiler extern definitions\n  shaka/          Shaka's own public interface types\nbuild/            Build and tooling scripts (Python + Node.js)\n  types/          Build variant definitions -- edit when adding source files\ntest/             Jasmine tests, mirroring lib/ structure\ndemo/             Demo application\ndocs/             JSDoc output and design documents\ndist/             Build output (do not edit)\nthird_party/      Third-party code\ndefault-receiver/ Default Cast receiver app\napp-engine/       App Engine deployment config\n```\n\n## Build System\n\nThe build system is **Python + Java (Closure Compiler)**.  Key commands:\n\n```bash\npython3 build/all.py                     # full build (lint, type-check, compile, docs)\npython3 build/build.py                   # compile only\npython3 build/check.py                   # lint + type checks, no output\npython3 build/test.py [--quick] [--filter=\"<regex>\"] [--uncompiled]\npython3 build/build.py +@complete -@ui   # example: compile without UI\n```\n\nBuild variant definitions (which source files go in which bundle) live in\n`build/types/`. Must be updated when adding new source files.\n\n## Closure Compiler & Module System\n\nAll source files use `goog.provide`/`goog.require` with JSDoc type annotations.\nThe compiler runs in `ADVANCED_OPTIMIZATIONS` mode. See\n[docs/design/current/export.md](docs/design/current/export.md) for export\nannotation rules (`@export`, `@exportInterface`, `@exportDoc`).\n\nThe compiled bundle is wrapped in an IIFE for CJS/AMD/script compatibility.\nSee `build/wrapper.template.js`. Preserve this in any new build system.\n\n## Test System\n\nJasmine tests run via Karma (`karma.conf.js`). Test files under `test/` mirror\n`lib/` directory structure.  Key flags: `--quick`, `--filter`, `--uncompiled`,\n`--random`, `--browsers`.\n\n## ESLint\n\nConfig: `eslint.config.mjs`. Custom rules: `build/eslint-plugin-shaka-rules/`.\nRun via `python3 build/check.py` (preferred) or `npx eslint`.\n\n## High-Stakes Warnings\n\n**Adding a new source file** requires two registrations (see Common Failures\nabove).  Forgetting one can result in new sources not being loaded or failing\nto compile.\n\n**Changing `externs/shaka/`** is a public API change. These files define the\ntypes that application code depends on. Any modification will receive close\nscrutiny from maintainers.\n\n**Adding npm dependencies** — zero runtime dependencies is a hard-won property\nof this project. Do not add runtime deps. New development/test deps are rare;\njustify thoroughly in the PR.\n\n**Touching `lib/device/`** — breakage may only appear on CE hardware in the\nnightly device lab. Flag any device-specific changes clearly in the PR.\nMaintainers can choose to trigger a run in the lab for any PR.\n"},"files":{"AGENTS.md":"# Shaka Player — AI Agent Instructions\n\nShaka Player is an open-source JavaScript library for adaptive media playback\n(DASH, HLS, MSF), published on npm as `shaka-player`. See [README.md](README.md)\nfor full details. The public API is exposed under the global `shaka` namespace.\n\nGitHub: https://github.com/shaka-project/shaka-player\n\n## Attribution\n\nRead [AGENT-ATTRIBUTION.md](AGENT-ATTRIBUTION.md) for attribution details.\n\n## Common Failures\n\n**Read this section before making any change.**\n\n**New source file: two mandatory registrations.**\n\nAdding a new class or plugin requires two separate registrations or it may fail to load:\n1. Add a `goog.require('shaka.YourModule')` entry to\n   `shaka-player.uncompiled.js` only for self-registering modules (e.g. plugins)\n   that no other file `goog.require`s directly.  This keeps uncompiled/dev mode\n   working.\n2. Add the source file to the appropriate `build/types/` file(s)\n   (determines which compiled build variants include it).\n\n**Export annotations.**\n\nClosure Compiler renames symbols aggressively. Getting annotations wrong\nmay silently break the public API:\n\n- API symbol public to the library (callable by app code): must have `@export`\n- Internal symbol public to other classes (used within the library, not by\n  apps): no export annotation\n- Abstract interface for generated externs: `@exportInterface`\n- Event/typedef visible in docs only: `@exportDoc`\n- `@expose`: deprecated, do not use\n\nSee [docs/design/current/export.md](docs/design/current/export.md) for the full\nrules.\n\n**`@suppress` is a red flag.**\nAvoid `@suppress` entirely if possible. Any use must have a detailed comment\nexplaining why it is unavoidable. Maintainers will scrutinize every instance.\n\n**Linter, including spell-checker.**\nThis check must pass before committing:\n\n```bash\n# Compiler, linter, spell check, and other checks\npython3 build/check.py\n```\n\nUnknown words fail the spell-checker; add legitimate new terms to\n`project-words.txt`.\n\n**Zero runtime npm dependencies.**\nShaka Player currently ships with zero runtime npm dependencies. Do not\nintroduce any. New development/test dependencies are rare and require\njustification.\n\n**`lib/device/` is sensitive.**\nDevice-specific code in `lib/device/` may only break on CE (consumer\nelectronics) hardware, which is only tested in the nightly device lab CI.\nChanges here need extra care and justification.  Maintainers can choose to\ntrigger a run in the lab for any PR.\n\n## Directory Structure\n\nShallow overview of top-level directories. **If you add, remove, or rename a\ntop-level directory as part of a change, update this section.**\n\n```\nlib/              Core library source (JS, Closure-annotated)\nui/               UI layer (controls, buttons, LESS styles)\nexterns/          Closure Compiler extern definitions\n  shaka/          Shaka's own public interface types\nbuild/            Build and tooling scripts (Python + Node.js)\n  types/          Build variant definitions -- edit when adding source files\ntest/             Jasmine tests, mirroring lib/ structure\ndemo/             Demo application\ndocs/             JSDoc output and design documents\ndist/             Build output (do not edit)\nthird_party/      Third-party code\ndefault-receiver/ Default Cast receiver app\napp-engine/       App Engine deployment config\n```\n\n## Build System\n\nThe build system is **Python + Java (Closure Compiler)**.  Key commands:\n\n```bash\npython3 build/all.py                     # full build (lint, type-check, compile, docs)\npython3 build/build.py                   # compile only\npython3 build/check.py                   # lint + type checks, no output\npython3 build/test.py [--quick] [--filter=\"<regex>\"] [--uncompiled]\npython3 build/build.py +@complete -@ui   # example: compile without UI\n```\n\nBuild variant definitions (which source files go in which bundle) live in\n`build/types/`. Must be updated when adding new source files.\n\n## Closure Compiler & Module System\n\nAll source files use `goog.provide`/`goog.require` with JSDoc type annotations.\nThe compiler runs in `ADVANCED_OPTIMIZATIONS` mode. See\n[docs/design/current/export.md](docs/design/current/export.md) for export\nannotation rules (`@export`, `@exportInterface`, `@exportDoc`).\n\nThe compiled bundle is wrapped in an IIFE for CJS/AMD/script compatibility.\nSee `build/wrapper.template.js`. Preserve this in any new build system.\n\n## Test System\n\nJasmine tests run via Karma (`karma.conf.js`). Test files under `test/` mirror\n`lib/` directory structure.  Key flags: `--quick`, `--filter`, `--uncompiled`,\n`--random`, `--browsers`.\n\n## ESLint\n\nConfig: `eslint.config.mjs`. Custom rules: `build/eslint-plugin-shaka-rules/`.\nRun via `python3 build/check.py` (preferred) or `npx eslint`.\n\n## High-Stakes Warnings\n\n**Adding a new source file** requires two registrations (see Common Failures\nabove).  Forgetting one can result in new sources not being loaded or failing\nto compile.\n\n**Changing `externs/shaka/`** is a public API change. These files define the\ntypes that application code depends on. Any modification will receive close\nscrutiny from maintainers.\n\n**Adding npm dependencies** — zero runtime dependencies is a hard-won property\nof this project. Do not add runtime deps. New development/test deps are rare;\njustify thoroughly in the PR.\n\n**Touching `lib/device/`** — breakage may only appear on CE hardware in the\nnightly device lab. Flag any device-specific changes clearly in the PR.\nMaintainers can choose to trigger a run in the lab for any PR.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# Shaka Player — AI Agent Instructions\n\nShaka Player is an open-source JavaScript library for adaptive media playback\n(DASH, HLS, MSF), published on npm as `shaka-player`. See [README.md](README.md)\nfor full details. The public API is exposed under the global `shaka` namespace.\n\nGitHub: https://github.com/shaka-project/shaka-player\n\n## Attribution\n\nRead [AGENT-ATTRIBUTION.md](AGENT-ATTRIBUTION.md) for attribution details.\n\n## Common Failures\n\n**Read this section before making any change.**\n\n**New source file: two mandatory registrations.**\n\nAdding a new class or plugin requires two separate registrations or it may fail to load:\n1. Add a `goog.require('shaka.YourModule')` entry to\n   `shaka-player.uncompiled.js` only for self-registering modules (e.g. plugins)\n   that no other file `goog.require`s directly.  This keeps uncompiled/dev mode\n   working.\n2. Add the source file to the appropriate `build/types/` file(s)\n   (determines which compiled build variants include it).\n\n**Export annotations.**\n\nClosure Compiler renames symbols aggressively. Getting annotations wrong\nmay silently break the public API:\n\n- API symbol public to the library (callable by app code): must have `@export`\n- Internal symbol public to other classes (used within the library, not by\n  apps): no export annotation\n- Abstract interface for generated externs: `@exportInterface`\n- Event/typedef visible in docs only: `@exportDoc`\n- `@expose`: deprecated, do not use\n\nSee [docs/design/current/export.md](docs/design/current/export.md) for the full\nrules.\n\n**`@suppress` is a red flag.**\nAvoid `@suppress` entirely if possible. Any use must have a detailed comment\nexplaining why it is unavoidable. Maintainers will scrutinize every instance.\n\n**Linter, including spell-checker.**\nThis check must pass before committing:\n\n```bash\n# Compiler, linter, spell check, and other checks\npython3 build/check.py\n```\n\nUnknown words fail the spell-checker; add legitimate new terms to\n`project-words.txt`.\n\n**Zero runtime npm dependencies.**\nShaka Player currently ships with zero runtime npm dependencies. Do not\nintroduce any. New development/test dependencies are rare and require\njustification.\n\n**`lib/device/` is sensitive.**\nDevice-specific code in `lib/device/` may only break on CE (consumer\nelectronics) hardware, which is only tested in the nightly device lab CI.\nChanges here need extra care and justification.  Maintainers can choose to\ntrigger a run in the lab for any PR.\n\n## Directory Structure\n\nShallow overview of top-level directories. **If you add, remove, or rename a\ntop-level directory as part of a change, update this section.**\n\n```\nlib/              Core library source (JS, Closure-annotated)\nui/               UI layer (controls, buttons, LESS styles)\nexterns/          Closure Compiler extern definitions\n  shaka/          Shaka's own public interface types\nbuild/            Build and tooling scripts (Python + Node.js)\n  types/          Build variant definitions -- edit when adding source files\ntest/             Jasmine tests, mirroring lib/ structure\ndemo/             Demo application\ndocs/             JSDoc output and design documents\ndist/             Build output (do not edit)\nthird_party/      Third-party code\ndefault-receiver/ Default Cast receiver app\napp-engine/       App Engine deployment config\n```\n\n## Build System\n\nThe build system is **Python + Java (Closure Compiler)**.  Key commands:\n\n```bash\npython3 build/all.py                     # full build (lint, type-check, compile, docs)\npython3 build/build.py                   # compile only\npython3 build/check.py                   # lint + type checks, no output\npython3 build/test.py [--quick] [--filter=\"<regex>\"] [--uncompiled]\npython3 build/build.py +@complete -@ui   # example: compile without UI\n```\n\nBuild variant definitions (which source files go in which bundle) live in\n`build/types/`. Must be updated when adding new source files.\n\n## Closure Compiler & Module System\n\nAll source files use `goog.provide`/`goog.require` with JSDoc type annotations.\nThe compiler runs in `ADVANCED_OPTIMIZATIONS` mode. See\n[docs/design/current/export.md](docs/design/current/export.md) for export\nannotation rules (`@export`, `@exportInterface`, `@exportDoc`).\n\nThe compiled bundle is wrapped in an IIFE for CJS/AMD/script compatibility.\nSee `build/wrapper.template.js`. Preserve this in any new build system.\n\n## Test System\n\nJasmine tests run via Karma (`karma.conf.js`). Test files under `test/` mirror\n`lib/` directory structure.  Key flags: `--quick`, `--filter`, `--uncompiled`,\n`--random`, `--browsers`.\n\n## ESLint\n\nConfig: `eslint.config.mjs`. Custom rules: `build/eslint-plugin-shaka-rules/`.\nRun via `python3 build/check.py` (preferred) or `npx eslint`.\n\n## High-Stakes Warnings\n\n**Adding a new source file** requires two registrations (see Common Failures\nabove).  Forgetting one can result in new sources not being loaded or failing\nto compile.\n\n**Changing `externs/shaka/`** is a public API change. These files define the\ntypes that application code depends on. Any modification will receive close\nscrutiny from maintainers.\n\n**Adding npm dependencies** — zero runtime dependencies is a hard-won property\nof this project. Do not add runtime deps. New development/test deps are rare;\njustify thoroughly in the PR.\n\n**Touching `lib/device/`** — breakage may only appear on CE hardware in the\nnightly device lab. Flag any device-specific changes clearly in the PR.\nMaintainers can choose to trigger a run in the lab for any PR.\n","category":"root","tokens":1377}]}