Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/cubenest/rrweb-stack/peeknpx skills add Cubenest/rrweb-stack --skill peekgit clone --depth 1 https://github.com/Cubenest/rrweb-stackWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00067 | $0.02876 |
| Opus 5 | $0.00034 | $0.01438 |
| Sonnet 5 | $0.00013 | $0.00575 |
| Haiku 4.5 | $0.00007 | $0.00288 |
Grade A, and why
peek scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 219 lines — stays where its author put it; the contents beside it link to each section on GitHub.
peek — local browser-session inspection
Peek is an OSS browser companion for AI coding agents. A Chrome MV3
extension records masked rrweb sessions to a local SQLite store
(~/.peek/sessions.db); a stdio MCP server exposes 18 tools that let you
inspect those sessions and (with consent) drive the live browser.
Peek itself uploads nothing — no telemetry, no cloud, no account; what
your MCP client does with the session data peek returns is up to you. If
~/.peek/sessions.db is absent, peek isn't installed yet — direct the
user to npx @peekdev/cli init and stop.
When to invoke
Reach for peek when the user mentions any of these:
- "what happened in my last session" / "show me my recent sessions"
- "investigate this error" alongside a manual repro they just performed
- "what was the user doing when X failed" / "what action triggered X"
- "what did the DOM look like when Y happened"
- "turn what I just did into a Playwright test"
- "click the foo button on this page" (write tools, with consent)
- "fill in this form on the page open in my browser" (write tools, with consent)
Don't reach for peek when:
- The user is asking about production / remote / non-local data
- A test-runner integration is already in scope — use
@tracelane/wdio(or the upcoming@tracelane/playwright-reporter) for test-failure capture instead - The user wants live page introspection at the current moment with no prior recording — peek is for replaying what was already captured, not a live debugger
- The question is about static code, not runtime behavior
The 18 tools
Session-forensics read tools (9) — usable at permission Level 1 (Read-only) and above:
| Tool | When |
|---|---|
list_recent_sessions |
Always the first call. Returns [{ sessionId, origin, startedAt, endedAt, eventCount, ... }] for the last N sessions. |
search_sessions |
Find sessions by text in title/URL/origin plus facets (origin, date range, status, console/network errors); read-only, returns the same rows as list_recent_sessions. Use when the user says "find the session where..." or wants to narrow down by origin or date. |
get_session_summary |
Narrative summary of one session — what the user did, top-level errors, key navigations. Start here after list_recent_sessions picks the target. |
get_session_console_errors |
All console.error / uncaught exceptions in the session, with timestamps. |
get_session_network_errors |
All ≥ 400 responses, with request URL, method, status, and (where deep-capture was enabled) redacted body. |
get_user_action_before_error |
Walks rrweb input events backward from a given timestamp; returns the last meaningful user action (click target, form input, navigation). Use right after spotting a console/network error. |
get_dom_snapshot |
Returns the DOM at a given timestamp as a serialized tree. Use to understand what was on screen when something happened. |
query_dom_history |
Given a CSS selector + sessionId, returns every snapshot where that element changed. Good for "when did this element appear/disappear/change text". |
generate_playwright_repro |
Turns a session (or a slice of one) into a runnable Playwright test stub. Selectors are best-effort from rrweb metadata; surface to the user for review before assuming they'll work. |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 219 lines · 67 tokens per session scan A 5e935ed320aa
peek is a skill published in the GitHub repository Cubenest/rrweb-stack (7 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 67 tokens to every session and 2,876 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
real-browser-control
Connect an AI coding agent to the user's REAL Chrome via Real Browser MCP (local MCP server + Chrome extension over localhost WebSocket). Use for live UI verification, already-open tabs, existing cookies/SSO/2FA, staging admin panels, and any task where headless Playwright or a cloud agentic browser would miss the…
browser-automation
Control the user's real logged-in Chrome via Real Browser MCP (extension + local MCP). Use for live UI checks, existing SSO/cookies, and tabs already open. Triggers: real browser, my Chrome, not headless, verify in browser. Prefer over Playwright when session state matters. Prefer Playwright for CI.
browseweave
Use when installing, repairing, verifying, diagnosing, or safely operating the BrowseWeave systemd-based Linux developer preview with Chrome, Zen, or Firefox and a local MCP client. Do not use for store publication or bypassing site protections.
annotation-feedback-wait
通过 Annotation Overlay(浏览器标注扩展 + MCP server)收集用户视觉反馈并等待其提交时使用。核心是挂后台 watcher 轮询标注数量 —— MCP 是拉取模型,server 不能推送给 agent,不主动轮询就感知不到用户提交。Use when the agent needs the user to annotate a page in the browser and wait for the feedback submission to arrive.
annotation-browser-launch
拉起 agent 拥有的标注浏览器(Playwright chromium-956323 + Annotation Overlay 扩展 + 专用持久 profile + 固定 CDP 端口),供用户在页面上标注反馈。Use when the agent needs to show the annotation toolbar on a page for the user to annotate, in the flow where the agent owns the browser (方案 D 主流程).
thinkbrowse-cli
Control browsers via the ThinkBrowse CLI (the thinkbrowse / thinkrun command) — navigate pages, interact with elements, extract content, take screenshots. Use ONLY when the user explicitly names the thinkbrowse or thinkrun CLI, or asks to drive the browser from shell scripts / terminal commands. For general browse…