.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.development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".