browser-trace
Capture a full DevTools-protocol trace of a locally driven browser automation - CDP firehose, screenshots, and DOM dumps - then bisect the stream into…
Skill by vanducng
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vanducng-browser-trace
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/browser-trace
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash,Read,Grep
What's inside
- Skill name
browser-trace- Description
- Capture a full DevTools-protocol trace of a locally driven browser automation - CDP firehose, screenshots, and DOM dumps - then bisect the stream into per-page searchable buckets. Use when the user wants to debug a failed run, audit network/console/DOM activity, attach a trace to an in-progress local session, or feed structured per-page summaries back into an agent loop so its next iteration learns from the last one.
- License
- MIT
- Compatibility
- Requires Node 18+ only - capture, bisect, and query are raw CDP over the built-in WebSocket, Node standard library, no `npm install` step. Optionally `jq` for ad-hoc querying of the bisected JSONL files. Local CDP targets only (a debug port or a page-level ws:// URL); Browserbase capture was removed because browse-cli 0.6.x dropped the `browse cloud` command group the helpers depended on.
- Allowed tools
- Bash,, Read,, Grep
- Instructions
- 187 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
- Instructions call the network
Files (12)
- EXAMPLES.md
- LICENSE.txt
- REFERENCE.md
- SKILL.md
- package.json
- bisect-cdp.mjs · scripts/
- cdp-firehose.mjs · scripts/
- lib.mjs · scripts/
- query.mjs · scripts/
- snapshot-loop.mjs · scripts/
- start-capture.mjs · scripts/
- stop-capture.mjs · scripts/
SKILL.md (first lines)
# Browser Trace
Attach a **second, read-only CDP client** to a browser session that is already being driven by your main automation. The trace records the full DevTools firehose to NDJSON, polls for screenshots and DOM dumps in parallel, and slices everything into a directory tree that bash tools can search.
This skill does **not** drive pages - it only listens. Pair it with `agent-browser` (the primary local driver, attached via `agent-browser connect <port>`), Playwright, Stagehand, or anything else that speaks CDP.
## When to use
- The user wants to debug a browser-automation run (failing form, missing element, hung navigation, JS exception).
- The user has a running automation and wants to attach a trace mid-flight without restarting it.
- The user wants to split a CDP firehose into network / console / DOM / page buckets.
- The user wants screenshots + DOM snapshots over time, joined to CDP events by timestamp.
If the user just wants to **drive** the browser, use the `agent-browser` skill instead.
## Setup check
```bash
node --version # require Node 18+ (built-in WebSocket)
which jq || true # optional - used only for ad-hoc querying
```
No `npm install` is needed: the firehose and sampler are raw CDP over Node's built-in `WebSocket`.
## How it works
Every Chrome DevTools target accepts **multiple concurrent CDP clients**. Your main automation is one client; this skill adds a second one that only enables observation domains (Network, Console, Runtime, Log, Page) and never sends action commands.
The tracer has three pieces:
1. **Firehose**: `cdp-firehose.mjs <target>` opens a native `WebSocket` to the target, enables the observation domains (and `Page.setLifecycleEventsEnabled` when `Page` is included), and streams every CDP event as one `{method, params, ts}` JSON object per line to `cdp/raw.ndjson`. Zero dependencies. If the socket closes it exits so the stream stays gap-free and `cdp/stderr.log` records the cause.
2. **Sampler**: `snapshot-loop.mjs` holds one persistent CDP connection for the whole run and, on an interval (default 2s), calls `Page.captureScreenshot` for a PNG and `Runtime.evaluate` for `document.body.outerHTML` and `location.href`. If the socket drops, the next tick reconnects instead of crashing the loop.
3. **Bisector**: after the run, `bisect-cdp.mjs` walks `raw.ndjson` once, slices it into per-bucket JSONL files keyed by CDP method, and additionally bisects per page using top-level `Page.frameNavigated` events as boundaries.
## Quickstart
```bash
# 1. Launch Chrome with a debugger port (any user-data-dir keeps it isolated).
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-o11y \
about:blank &
# 2. Start the tracer.
node scripts/start-capture.mjs 9222 my-run
# 3. Run your main automation against port 9222. agent-browser attaches
# over CDP (env -u guards against a stray AGENT_BROWSER_PROFILE that would
# silently drive a different browser).
env -u AGENT_BROWSER_PROFILE agent-browser connect 9222
agent-browser open https://example.com
# ...whatever the run does...
# 4. Stop and bisect.
node scripts/stop-capture.mjs my-run
node scripts/bisect-cdp.mjs my-run
```
### Remote (Browserbase) sessions - not supported
This skill traces local CDP targets: a debug port or a page-level `ws://` URL. The former Browserbase helpers (`bb-capture.mjs` / `bb-finalize.mjs`) were removed because browse-cli 0.6.x dropped the entire `browse cloud` command group they shelled out to, and its replacement surface (`browse status --json` → browser-level `wsUrl`) does not expose a page-level target, which the firehose and sampler both need.
For ad-hoc inspection of a remote session driven by the `browser` skill, `browse cdp "$(browse status --json | jq -r .wsUrl)" --pretty` streams the session's DevTools events live (verified against browse-cli 0.6.0) - but it is a live view only, not this skill's capture/bisect pipeline.
## Filesystem layout
```
.o11y/<run-id>/
manifest.json run metadata: target, domains, started_at, stopped_at
index.jsonl one line per sample: {ts, screenshot, dom, url}
cdp/
raw.ndjson full CDP firehose (one JSON object per line)
summary.json {sessionId, duration, totalEvents, pages[]} - see shape below
network/{requests,responses,finished,failed,websocket}.jsonl session-wide buckets (always written)
console/{logs,exceptions}.jsonl
runtime/all.jsonl
log/entries.jsonl
page/{navigations,lifecycle,frames,dialogs,all}.jsonl
dom/all.jsonl (only if O11Y_DOMAINS includes DOM)
target/{attached,detached}.jsonl
pages/ per-page slices, indexed by top-level frameNavigated boundaries
000/ first concrete page
url.txt the URL for this page
summary.json this page's domains/network/timing block (same shape as a pages[] entry)
raw.jsonl firehose scoped to this page
network/, console/, page/, runtime/, log/, target/, dom/ same buckets, only non-empty files
screenshots/<iso-ts>.png one PNG per sample interval
dom/<iso-ts>.html one HTML dump per sample interval
```
When handing off trace artifacts, include the run directory and key files as openable locations:
`[manifest.json](/absolute/path/to/run/manifest.json)`,
`[screenshots](/absolute/path/to/run/screenshots)`, or matching `file://` URIs.
Do not report only the run id or a basename.
### Summary shape
`cdp/summary.json` is the entry point for any analysis: it has session-level totals and a `pages[]` array indexed by top-level `Page.frameNavigated`. Per-page entries are emitted in navigation order (page 0 = first concrete URL).
```json
{
"sessionId": "45f28023-…",
"duration": { "startMs": 1777312533000, "endMs": 1777312609000, "totalMs": 76000 },
"totalEvents": 420,
"pages": [
{
"pageId": 0,
"url": "https://example.com/",
"startMs": 1777312533000, "endMs": 1777312538886, "durationMs": 5886,
"eventCount": 60,
"domains": {
"Network": { "count": 18, "errors": 1 },
"Console": { "count": 2 },
"Page": { "count": 24 },
"Runtime": { "count": 13 }
},
"network": { "requests": 4, "failed": 1, "byType": { "Document": 2, "Script": 1, "Other": 1 } }
}
]From vanducng/skills, MIT.
More from vanducng/skills
- 0.631score
code-review
vanducng
Review code with a sharp, encouraging voice - inline GitHub PR comments + a tight summary.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
astro-airflow
vanducng
Inspect and debug Airflow on Astronomer (Astro) deployments - DAG runs, task logs, container logs, env vars, and deployment state.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
auto-loop
vanducng
Drive a Claude Code session toward a verifiable goal until done or a hard cap fires - autonomous loop, no user intervention.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
codex-workflow
vanducng
Run deterministic multi-step agent workflows in Codex - fan-out, parallel, schema-validated structured output - via the codex-workflow MCP orchestrator…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
aws
vanducng
Operate AWS accounts and services with the AWS CLI using identity-first, read-before-write, evidence-backed workflows.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
better-ui
vanducng
Applies exact UI polish values: concentric border radius, optical alignment, layered surface shadows, neutral image outlines, a 0.96 press scale, icon…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
brainstorm
vanducng
Explore the solution space when the path isn't obvious - invent options, stress-test them, pick one.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
apidesign
vanducng
Design stable, hard-to-misuse interfaces - REST/GraphQL endpoints, module boundaries, type contracts, component props, anything where one piece of code talks…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
browser-profile
vanducng
Manage named persistent browser profiles (cookies, localStorage, IndexedDB, cache) that both you and Claude can use against the SAME Chrome window without…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
agent-readiness
vanducng
Scores how ready a repository is for AI coding agents to work in it effectively, then remediates the gaps - grades agent instruction files, verifiable…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
cli-ts
vanducng
Build and maintain production TypeScript CLIs as stable public APIs - command contracts, packed-artifact correctness, npm publishing, CI/CD, docs, providers…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
cnpg
vanducng
Create and operate CloudNativePG (CNPG) Postgres databases on Kubernetes the GitOps/Flux way - on managed cloud (GKE + GCS via Workload Identity) OR…
SkillAFreshness: A★ 8Claude Code +9
Signals
- Stars
- 8
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 11, 2026 (1 month ago)
- Last release
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/vanducng/skills
- Website
- skills.vanducng.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from vanducng
- 0.631score
apidesign
vanducng
Design stable, hard-to-misuse interfaces - REST/GraphQL endpoints, module boundaries, type contracts, component props, anything where one piece of code talks…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
astro-airflow
vanducng
Inspect and debug Airflow on Astronomer (Astro) deployments - DAG runs, task logs, container logs, env vars, and deployment state.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
auto-loop
vanducng
Drive a Claude Code session toward a verifiable goal until done or a hard cap fires - autonomous loop, no user intervention.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
aws
vanducng
Operate AWS accounts and services with the AWS CLI using identity-first, read-before-write, evidence-backed workflows.
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
better-ui
vanducng
Applies exact UI polish values: concentric border radius, optical alignment, layered surface shadows, neutral image outlines, a 0.96 press scale, icon…
SkillAFreshness: A★ 8Claude Code +9 - 0.631score
agent-readiness
vanducng
Scores how ready a repository is for AI coding agents to work in it effectively, then remediates the gaps - grades agent instruction files, verifiable…
SkillAFreshness: A★ 8Claude Code +9
Cite this page
browser-trace skill. Agent Mart. https://agentmart.dev/skills/vanducng-browser-trace (last updated 2026-10-24)