Skip to main content

peter-zhou-tv-display

Display a validated Peter Zhou Dashboard, wrong-question ExplanationPage, or KnowledgeModule through Home Hub, with the old Peter APK/browser path retained only for explicit rollback. Use for 投到电视, 电视打开首页, 电视显示讲解, 电视显示课程, 投屏状态, or 停止投屏.

Jump to install

Source facts

Repository
szsip239/peter-zhou
Last source activity
August 24, 2026 at 06:36
Detected SKILL.md language
English
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
peter-zhou-tv-display
description
Display a validated Peter Zhou Dashboard, wrong-question ExplanationPage, or KnowledgeModule through Home Hub, with the old Peter APK/browser path retained only for explicit rollback. Use for 投到电视, 电视打开首页, 电视显示讲解, 电视显示课程, 投屏状态, or 停止投屏.
# Peter Zhou TV Display Use this subskill for on-demand learning-page display. It is independent from the transition-only DLNA notice owned by `home-control/`. ## Default Home Hub Flow 1. Resolve the private runtime config with `scripts/runtime_config.py show --json`. 2. For the Dashboard, regenerate it from canonical data before display. 3. Call `show-home-hub` with exactly one validated `asset_kind` and contained `asset_ref`: ```bash python3 scripts/chat_dashboard.py \ --data-dir <data-dir> \ --top-n 5 \ --minecraft-html <data-dir>/dashboard/minecraft/index.html python3 scripts/tv_display.py show-home-hub \ --config <config> \ --asset-kind dashboard \ --asset-ref dashboard/minecraft/index.html \ --hub-url http://<private-hub-ip>:<port> \ --json ``` 4. For a cached wrong-question explanation, use only its script-owned `html_ref`: ```bash python3 scripts/tv_display.py show-home-hub \ --config <config> \ --asset-kind explanation \ --asset-ref <explanation-html-ref> \ --hub-url http://<private-hub-ip>:<port> \ --json ``` 5. For a deep KnowledgeModule, use only a `courseware.html` whose adjacent metadata has `status=rendered_and_validated` and a matching `html_ref`: ```bash python3 scripts/tv_display.py show-home-hub \ --config <config> \ --asset-kind knowledge_courseware \ --asset-ref <validated-courseware-html-ref> \ --hub-url http://<private-hub-ip>:<port> \ --json ``` 6. Omit `--device-id` when exactly one Home Display is online. If more than one is online, select only an identity returned by the Home Hub `devices` command; never accept shell text. 7. Report success only for `status=display_verified` and a rendered Receipt. Do not expose bundle paths, Hub internals, device identity, session identity, or private endpoint details. Use `scripts/tv_display.py status --config <config> --json` for a read-only session check and `scripts/tv_display.py stop --config <config> --json` when the user asks to stop television display. These commands reuse the archived Home Hub Session metadata and never read Peter learning data. `build-home-hub-page` is the deterministic adapter seam. It strips answer submission controls, localizes selected Peter assets, uses bundle-relative URLs, removes server-only MathJax dependencies, and emits a portable page directory without a legacy manifest. The generic Home Hub CLI remains responsible for canonical Bundle compilation and delivery. ## Home Hub Setup An administrator installs Home Hub and the generic `com.openkanban.homedisplay` TV client, then records the private Hub URL outside Git. `home-hub` is resolved from `PETER_ZHOU_HOME_HUB`, `PATH`, or the standard macOS Home Hub installation. The Agent must not install/upgrade the daemon or APK during a student display request. ## Explicit Legacy Rollback Use the old `tv_display.py probe/show` native or browser route only when the administrator explicitly asks to roll back from Home Hub. Do not silently fall back after a Home Hub error. The legacy administrator setup remains: An administrator configures the target once: ```bash python3 scripts/runtime_config.py configure-tv-display \ --host <private-tv-ip> \ --adb-port 5555 \ --adapter native \ --session-seconds 1800 \ --json ``` The administrator installs the old fixed APK from the repository root before switching to `native`. The installer rebuilds the current package, verifies the exact installed version, replaces only the outdated fixed package on affected TCL firmware, and grants that package's full-screen display app-op: ```bash clients/android-tv/install.sh --serial <private-tv-ip:5555> --json ``` The tested TCL firmware may require the administrator-only `--tcl-vendor` option. The Agent must never infer or add that option, install an arbitrary APK, or accept a package, activity, installer service, remote path, or ADB argument from conversation. `native_client_outdated` or `native_display_permission_missing` means the administrator must rerun the fixed installer. `missing_adb` means Android SDK Platform-Tools must be installed or `PETER_ZHOU_ADB` must point to an executable. `authorization_required` means the administrator must approve network debugging on the television. The skill does not auto-install tools or bypass television authorization. ## Safety - Accept only `dashboard/minecraft/index.html`, a generated `explanation-pages/<subject>/explanation-*/index.html`, or validated `knowledge-modules/<subject>/topic-*/courseware.html` inside the configured data directory. - Never accept a raw URL, arbitrary path, browser package, activity, ADB argument, or shell text from the Agent or student. - Home Hub mode records only its own Session routing metadata under `data/tv-display/`. The Hub receives a portable read-only copy, never Peter's mistake bank, mastery data, profile, source path, Prompt, or Agent context. - Native mode publishes one deterministic `tv_content_bundle.v1` ZIP to the fixed app-specific inbox. The APK verifies every file hash before display, serves content from its controlled local HTTPS-style origin, keeps at most eight disposable bundles, and blocks arbitrary external navigation. Browser mode retains the bounded tokenized HTTP session as a compatibility path. - Television projections are read-only. They remove answer inputs, submission JSON, and grading scripts. Native mode replaces external MathJax with the APK's pinned local TeX-to-SVG runtime. Answering remains on the MacBook or phone through the normal grading workflow. - A new display replaces the previous temporary session. Native mode uses a fixed read-only full-screen service so vendor TV-input activities cannot cover the lesson; Back, `stop`, and configured expiry remove it. Browser mode closes its temporary server. Display failure must never alter learning data. - Use DLNA only for the existing short network-state notice or an explicitly labelled static fallback. Never claim a DLNA image is interactive HTML.
View on GitHub