.claude/skills/samsung-frame-tv-ws-popup/SKILL.md
Fix Samsung Frame TV showing a connection notification on the panel every time a samsungtvws WebSocket is opened, even with a saved token. Use when: (1) polling a Samsung Frame TV for status from a dashboard/cron and the panel briefly wakes or shows "[App] is connecting" each poll, (2) using samsungtvws / SamsungTVWS.open() against a Frame TV, (3) art-mode or app_list calls cause a visible popup. Solution: do REST-only polling (rest_device_info, rest_app_status) and reserve WebSocket calls for user-initiated commands.
npx skillsauth add Dbochman/dotfiles samsung-frame-tv-ws-popupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Samsung Frame TVs show a connection notification on the panel every time the samsungtvws WebSocket (port 8002) is opened, even when a valid token is saved on disk. On a Frame in art mode this also wakes the panel briefly, which is disruptive when polling on a schedule (e.g. a home dashboard refreshing every few minutes).
samsungtvws.SamsungTVWS (NickWaterton fork or upstream) against a
Samsung Frame TVtv.open() or any method that internally opens the WS:
tv.art(), tv.send_key(), tv.app_list(), etc.token_file=...) and reused — but popup still appearsThe popup is not a token/auth problem — it's the WS handshake itself. It does not happen with the REST endpoints on port 8001.
Split TV operations into two tiers:
tv.rest_device_info() — power state, model, nametv.rest_app_status(app_id) — running appstv.rest_app_run(app_id) / tv.rest_app_close(app_id) — app launch/closetv.send_key(...) — volume, power off, navigationtv.art() — art mode read/writetv.open()For dashboard-style polling, only call the REST methods. Move art-mode info
behind an explicit user action (e.g. a separate samsung-tv art frame
command), not the periodic status collector.
def cmd_status(_args):
# REST-only: opening the WS connection wakes the Frame's panel and shows
# a connection notification, even with a saved token.
tv = SamsungTVWS(host=ip, port=8002, token_file=tp, timeout=5, name="OpenClaw")
info = tv.rest_device_info()
dev = info.get("device", info)
print(f"Power: {dev.get('PowerState', 'Unknown')}")
# NO tv.open(), NO tv.art() here
samsung-tv power frame off) and
confirm the WS path still works.tools
Use exact configured Reolink cameras through the local Home Hub for availability and power status, fresh stills, visual commentary, protected Dylan/Julia/household sharing, and reversible spotlight control. Supports trusted owner tasks and explicitly scoped proactive automations; not for Nest or Ring cameras, arbitrary recipients, recordings, account changes, or raw camera APIs.
data-ai
Privately manage Dylan and Julia's household plant inventory and care history by physical location, bed, and exact Flower Cam view. Use for confirmed plant onboarding from camera conversations, camera- or bed-filtered inventory, record corrections, individual or whole-bed care, and private filtered exports. Pair with reolink-camera when an owner asks about plants visible in Flower Cam images.
testing
Inspect and control the physically secured Reachy Mini at Crosstown through ClawBody. Use for requests to check Reachy, look around, express an emotion, play any official emotion or dance preset, speak proactively, mute or unmute its microphone, stop movement, or describe what its camera sees.
tools
Handle Reachy/iMessage handoffs, selective durable memory, forgetting, and diagnostics; automatic context comes from the gateway plugin.