Hot Monitor
liyupi/yupi-hot-monitor
AI hotspot monitoring and trending topic discovery across multiple sources (Bing, Google, DuckDuckGo, HackerNews, Sogou, Bilibili, Weibo, Twitter).
biliwebos 的测试与验证方法论 — 发版前验证管线、真机 CDP 测试、旧设备(webOS 5/Node 8)兼容、修 bug 的验证纪律。改动 service/ 或 app/、修 bug、发版前都应使用。
$ npx skills add asdf17128/bili-webos --skill tv-test -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install asdf17128/bili-webos tv-test --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/tv-test .claude/skills/tv-test && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .claude/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-testType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add asdf17128/bili-webos --skill tv-test -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install asdf17128/bili-webos tv-test --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/tv-test .agents/skills/tv-test && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .agents/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add asdf17128/bili-webos --skill tv-test -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install asdf17128/bili-webos tv-test --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/tv-test .cursor/skills/tv-test && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .cursor/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/asdf17128/bili-webos.git --path .claude/skills/tv-test--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add asdf17128/bili-webos --skill tv-test -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install asdf17128/bili-webos tv-test --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/tv-test .gemini/skills/tv-test && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .gemini/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install asdf17128/bili-webos tv-testInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add asdf17128/bili-webos --skill tv-test -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/tv-test .github/skills/tv-test && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .github/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add asdf17128/bili-webos --skill tv-test -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install asdf17128/bili-webos tv-test --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/asdf17128/bili-webos.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/tv-test .opencode/skills/tv-test && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tv-test" agent skill from https://github.com/asdf17128/bili-webos/tree/main/.claude/skills/tv-test into .opencode/skills/tv-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tv-test", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tv-testbiliwebos 的测试与验证方法论 — 发版前验证管线、真机 CDP 测试、旧设备(webOS 5/Node 8)兼容、修 bug 的验证纪律。改动 service/ 或 app/、修 bug、发版前都应使用。
Tv Test is an agent skill from asdf17128/bili-webos. biliwebos 的测试与验证方法论 — 发版前验证管线、真机 CDP 测试、旧设备(webOS 5/Node 8)兼容、修 bug 的验证纪律。改动 service/ 或 app/、修 bug、发版前都应使用。
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Bilibili, Homebrew and React. The repository describes itself as: 📺 Open-source Bilibili (哔哩哔哩) client for LG webOS TVs — DASH up to 4K/HDR, danmaku, bangumi & live, all driven by the remote. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 64ba3cb. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashgitnpmnpxnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tv Test loads about 2.2k tokens when it runs. Until then it costs about 29 tokens; SKILL.md has 668 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from asdf17128/bili-webos at commit 64ba3cb, republished under its MIT licence (© asdf17128). 668 words, ~2,170 tokens.
.claude/skills/tv-test/SKILL.md (or your agent's skills folder).bash tools/verify.sh # 全链路:语法 → 真Node0.12/8 → 构建 → 部署 → 真机DOM检查
bash tools/verify.sh --no-tv # 只跑本地层(电视不在时)
bash tools/verify.sh --full # 额外跑真机 UI smoke(test-ui.mjs,~3分钟)五层,逐层 fail-fast:
tools/test-node8/tools/launch.mjs 重启 appgit checkout <旧commit> -- <文件> → 部署坏版 → 同一操作复现 bug → 恢复新版 → 同一操作确认消失。边缘滚动 bug 连续两个版本"修好了"都是假的,就是因为没做正对照。route.abort() 掐断 API,确认错误文本上屏、进报告。document.addEventListener('mousemove',...,true))再注入 CDP 事件 —— 曾经 CDP 鼠标注入静默失效,把"工具坏了"误判成"产品坏了"浪费了一整轮。npm run dev + Playwright(page.mouse/page.keyboard 走真实 Chromium 输入管线),addInitScript 干掉 window.webOS 强制走 proxy,page.route mock 数据流(mock 端点注意 wbi 路径:**/top/feed/rcmd**)。TV 的 CDP Input.dispatchMouseEvent 不可靠,不要依赖它测 hover。URL/URLSearchParams/globalThis 全局、没有 ?./??/optional catch binding。new URL 要写 require('url').URL(曾导致 webOS 5 全部请求失败,#10/#13)。ws 必须 v7(v8 要 Node 14)。npx acorn --ecma5 --silent <file> 快速把关,再跑实际运行时。| 工具 | 用途 | 坑 |
|---|---|---|
launch.mjs <appId> | 启动/切换 app | 必须 luna-send-pub(公共总线);私有 luna-send 对 prisoner 永远 Permission denied |
wake.mjs | WoL 唤醒电视 (MAC 14:7f:67:a1:6b:56) | |
drive.mjs "keys" | 遥控按键 + STATE | 从未知焦点开始导航不可靠,先 left,left 回侧栏 |
point.mjs "move:x:y,wheel:d,click" | 指针模拟 + focus/underPointer/match | 注入可能静默失效(见纪律3);端口已改 ephemeral |
eval.mjs "<expr>" | 页内执行 JS | 验证 UI 状态首选(截图对 GPU 层是白的) |
screenshot.mjs | 真机截图 | 视频/GPU合成层截不到 |
test-ui.mjs | 真机 UI smoke 全家桶 | app 须在前台 |
test-e2e.mjs | API 集成测试 | 需先 node proxy/server.js |
"没法测试 = 不允许上线"。为可测试性可以给 app 加专门的测试钩子。
window.__openVideo({bvid, cid, title})(App.jsx 注册)——CDP 里直接播放指定视频,
跳过整个 UI 导航;入口与卡片按键完全同路(normalizePlay 起全是生产代码)。
找"具备某特征"的测试素材(有字幕轨/有章节/多P):先用页内 luna fetch 查
history/cursor 或 player/v2,拿到 bvid+cid 再深链。setInterval(()=>dispatchEvent(new KeyboardEvent('keydown',{key:'ArrowRight'})),700)
合成键反复续命,另一个连接从容截图,完事 clearInterval。合成键走 JS 层
keydown handler,足够(不需要 trusted input 时)。getBoundingClientRect 只给布局位置,测不出 overflow 裁剪 —— 必须截图看像素。.player-controls 是 overflow-y:auto,往上探出的元素会被静默裁掉(v1.2.4 预览气泡被裁就是这么漏掉的);悬浮层挂到根节点。ended 决策逻辑(收藏连播 vs 分P)可用真实数据在本地 node 里跑决策函数做确定性验证,比 flaky 的真机播放可靠。开发完成 → 验证过的场景必须追加到 docs/TESTCASES.md(带事实佐证:抓过的真 bug 或正对照记录);
发布前按 docs/DEVELOPMENT.md 的门禁清单回归。能自动化的 case 升级进 tools/verify.sh。
每次踩到新坑/建立新方法,追加到对应小节。宁可啰嗦,不可失传。
通用方法论的正式版在独立仓库 ~/code1/webos-tv-skill(github.com/asdf17128/webos-tv-app-skill,reference/testing.md)—— 本文件放 bili_webos 项目专属细节(IP/密钥/工具名),提炼出的通用经验要同步一份过去。
service/compat.js 提供,必须最先加载;语法门禁降为 ES5,真实运行时门禁同时测 0.12.2 和 8。Docker 历史镜像可能拉不下来,使用官方 SHA256 校验二进制;Apple Silicon 旧 CLI 参数异常可经 ELF loader 启动,记录实际 process.version。readyState=1 是缓冲耗尽,不能把它排除出卡顿检测。暂停/seek/退出必须不会继续重试。tools/test-cdn-tv.mjs 从真实电视截图用 jsQR 解码,核对选路和最近播放节点;测试结束恢复所有偏好与坏 CDN 注入标记。/x/web-interface/nav 为准,残留 SESSDATA 不证明已登录。账号增删测试默认跳过;SIM_ACCOUNT_WRITES=1 仅限独立测试账号。TV_ACCOUNT_WRITES=1 已改为固定测试视频、完整原列表快照、请求层精确 aid 保护与 finally 清理,用户已授权账号测试时可启用。跳过不计为通过。-352,即使 Mac 同接口成功也不能冲抵;记录环境并保留待验收状态。采集响应码/条数即可,不把签名 URL 或认证信息写入证据。card-menu 事件的 aid;请求层只允许该 aid 的单条 add/del,结束比对原列表顺序与成员。账号截图只留本地。testLiveRelay 动态选当前在播房间,分开记录 token 响应码、Luna 订阅、实时帧数与 DOM 数量,并截实际弹幕;历史聊天不算实时帧。requestVideoFrameCallback 却未回调;分别记录 API、playing、元数据后 currentTime 实际推进、解码尺寸,不能把时间推进写成逐帧画面测量。tools/probe-live-startup.js 的 default 模式测生产选源,其他模式仅筛选真实响应的格式;不要保存带签名的流 URL。TV_LIVE_ROOM 选当前有多档的房间,切换及切回都等实际播放事件;仅有一档时明确跳过切换,不能判产品失败,也不能假称已验证。.bilivideo.cn 不能缓存时会反复占据队列,旧逻辑 10 次 tick 发 20 个请求,修复后仅 2 个且其他节点继续得到机会。重试请求可能在 React 提交 loading=true 前完成,true/false 被批处理合并。先在输入事件中提交加载态,再开始副作用请求;测试必须包含立即完成的 Promise,只有网络延迟用例会漏掉。
白框不等于焦点系统可用:真机复现了旧按钮的 passive cleanup 在新卡片已高亮后清掉全局焦点,下一次方向键跑回侧栏。注册/注销改为 useLayoutEffect,与 DOM 同次提交;__focusState() 核对真实目标,再按方向键、断言只有一个高亮。保留“只修加载态仍失败”的中间证据。
-352 不能一律归咎账号或网络。排行榜本轮只改 Referer,就从两次 -352 变为两次 code=0/100 条;修生产服务和独立代理共享策略,并通过真实 Node 0.12/8、C4 六分区验证。不要把游戏失败改成跳过来让测试全绿。
海外探针必须匹配生产错误语义:本轮初版 worker 把 API HTTP 412 抛成异常,提前中止,漏测 app 已有的 pagelist 回退。纠正工具后 HK/JP 均能取流并实收分片。服务器线路、模拟媒体事件与电视实际解码分开陈述,匿名探针不上传用户 Cookie 或保存签名 URL。
注册生命周期必须覆盖手动注册者:SearchPage 原生输入框绕过 useFocusable,仍用 passive effect 清理,导致切到设置页时删掉刚注册的第一行。新增搜索 → 设置 → 下 → 上正对照(改前 0/1、改后 1/1),手动注册也改为 layout effect;不要通过把测试起点改到第二行来掩盖真正回归。
PlayerPage 的 ended handler:只测辅助决策函数会漏掉收藏、稍后再看、分 P、合集和分页入口绕过全局偏好。正对照 v2.2.0 在这五种入口均加载下一条,普通推荐视频停止;电视另用真实媒体自然触发 ended,不能把人工 dispatch 当成解码验证。addInitScript 会在每次 reload 重跑;验证持久化时只在没有存储值时初始化设置。无条件重种默认值会把测试工具清空设置误判为产品丢失偏好。load() 返回不等于媒体已到 loadeddata;真机旧版在出画面之前就解析弹幕/加载推荐。采样从打开入口监听原生事件,辅助请求用真实媒体就绪门控,并测退出后的迟到事件。性能监听也应在加载前注册,否则漏掉早到事件。© asdf17128, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/tv-test of asdf17128/bili-webos.
Open the folder on GitHubat commit 64ba3cb
Tv Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tv Test this skillasdf17128/bili-webos | 148 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Hot Monitorliyupi/yupi-hot-monitor | 718 | 1 repos | ~1.2k | Automated safety check: Pass | None | |
| Browserwingbrowserwing/browserwing | 1.4k | — | ~1.8k | Automated safety check: Pass | MIT | |
| App Store Deployromankurnovskii/BrewMate | 301 | — | ~813 | Automated safety check: Notes | MIT | |
| Release VersionGOODBOY008/r-shell | 151 | — | ~4k | Automated safety check: Pass | MIT | |
| Release Flowromankurnovskii/BrewMate | 301 | — | ~976 | Automated safety check: Pass | MIT |
liyupi/yupi-hot-monitor
AI hotspot monitoring and trending topic discovery across multiple sources (Bing, Google, DuckDuckGo, HackerNews, Sogou, Bilibili, Weibo, Twitter).
browserwing/browserwing
Browser automation platform with 78 built-in scripts and full CLI.
romankurnovskii/BrewMate
Automates the build and deployment of the Electron app to the Mac App Store and TestFlight.
GOODBOY008/r-shell
Release a new r-shell version and create a published GitHub release with contributor credits.
romankurnovskii/BrewMate
Automate the full application release flow for BrewMate, including committing local changes, bumping version, waiting for GitHub Actions release build, and pushing the in-repo cask update…
shirenchuang/agentbro
A skill your agent uses when releasing AgentBro from this repository: merging dev/main, bumping versions, updating release notes, tagging, pushing, monitoring GitHub Actions, Homebrew cask…
biliwebos 的测试与验证方法论 — 发版前验证管线、真机 CDP 测试、旧设备(webOS 5/Node 8)兼容、修 bug 的验证纪律。改动 service/ 或 app/、修 bug、发版前都应使用。. Tv Test is an agent skill from asdf17128/bili-webos.
Run `npx skills add asdf17128/bili-webos --skill tv-test -a claude-code`. Or copy the skill folder (.claude/skills/tv-test in asdf17128/bili-webos) into .claude/skills/tv-test in your project. Claude Code loads it when a task matches its description.
Run `npx skills add asdf17128/bili-webos --skill tv-test -a codex`. Or copy the skill folder (.claude/skills/tv-test in asdf17128/bili-webos) into .agents/skills/tv-test in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add asdf17128/bili-webos --skill tv-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tv-test, .gemini/skills/tv-test, .github/skills/tv-test and .opencode/skills/tv-test in your project.
Going by SKILL.md and its folder, Tv Test needs the command-line tools its instructions call (bash, git, npm, npx and node). Our summary lists: Node.js; Docker.
SKILL.md contains no URLs. Its commands use git, npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tv Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tv Test: Hot Monitor (liyupi/yupi-hot-monitor, 718 stars), Browserwing (browserwing/browserwing, 1.4k stars), App Store Deploy (romankurnovskii/BrewMate, 301 stars) and Release Version (GOODBOY008/r-shell, 151 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
asdf17128 (a GitHub user) maintains it in asdf17128/bili-webos, which has 148 GitHub stars. The repository was last updated on October 6, 2026.
Source: asdf17128/bili-webos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.