tv-lock

Coordinates exclusive access to a shared webOS dev television across concurrent agent lanes.

39|7|Updated Jul 3, 2026
One-click install
npx skills add https://github.com/GLinnik21/plx-native --skill tv-lock-glinnik21
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tv-lock
Source: https://github.com/GLinnik21/plx-native/tree/main/.agents/skills/tv-lock
Command: npx skills add https://github.com/GLinnik21/plx-native --skill tv-lock-glinnik21

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? A single dev television has no OS-level mutex, so two jobs driving it at once — a test run plus a deploy, or a capture plus a test suite — kill each other's app and produce plausible-looking wrong data that reads exactly like a real regression. This Skill enforces exclusive, lease-based access so only one lane drives the set at a time. ## Core Features & Use Cases - Lease lifecycle management: acquire, renew, release, queue with --wait, and run one-shot jobs via with that release even on Ctrl-C or a crash, with a 45-minute default lease auto-renewed on tool use. - Four-layer enforcement: the session tool, Makefile prerequisites, the test runner, and a PreToolUse hook all refuse device-driving commands that lack a lease, so there is no forgotten-lock path. - Multi-agent fleet coordination: lanes are per-checkout leases, subagents take their own lane via a per-command PLX_TV_LOCK_LANE prefix, and status pre-flights for humans or ssh sessions already on the set. - Use Case: Before running ./tests/run.py --fps on the TV, acquire the lock with a reason, do the device work, then release — or wrap the whole thing in tools/tv-lock.sh with --why "fps suite" -- ./tests/run.py --fps. ## Quick Start Run tools/tv-lock.sh with --why "my task" before any command that deploys to, tests on, or captures from the dev television, and release it when finished.

Frequently Asked Questions about tv-lock

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I lock a shared dev device before running tests?

Run tools/tv-lock.sh acquire --why "your reason" to take a lease, or use tools/tv-lock.sh with --why "..." -- ./tests/run.py to acquire, run, and release in one command that survives Ctrl-C and crashes.

How do I run multiple agents against one television in parallel?

Give exactly one lane device access at a time and run the rest host-only or on the simulator. Each subagent takes its own lane by prefixing PLX_TV_LOCK_LANE=<its worktree path> on every device command rather than exporting it once.

What should I do when the television lock is held by another job?

Check tools/tv-lock.sh status to see the holder and remaining time, then queue with acquire --wait 540. Meanwhile do host-side work like make check or the simulator, and only break a lease that is expired or dead.

Why did my on-device test results look like a real regression?

Two jobs driving the set at once kill each other's app, producing failed cases, wrong fps numbers, or captures of another job's screen that are indistinguishable from real regressions. The lock exists to prevent exactly this silent corruption.

Can I bypass the television lock when I know the set is free?

Yes, PLX_TV_LOCK_BYPASS=1 <command> is honored by both the tools and the hook, but it is intended only for a human who knows the set is theirs. Using it to get around a refusal corrupts both jobs' results.