browser-record — Claude Code browser skill: traced sessions
Opens a named browser session, allocates an RVF container for it and records every action as a ruvector trajectory step. Useful when a browsing run has to be replayed or analysed later.
npx skills add ruvnet/ruflo --skill browser-record -a claude-codeWhat browser-record does
The skill creates a container with npx -y [email protected] rvf create at dimension 384 and starts a trajectory for the task at hand. From there each interaction — a click, a navigation, a snapshot or a screenshot — lands as its own step. At the end it writes a verdict, compacts the container with rvf compact and stores the run in AgentDB under browser-sessions.
Other browser skills in the plugin compose on top of this one: browser-extract, browser-form-fill, browser-test. Call browser_open on its own and you get no trace to replay. Session ids keep a fixed shape, <YYYYMMDD-HHMMSS>-<task-slug>, because /ruflo-browser ls parses them to find earlier runs.
You need npx and access to [email protected] and @claude-flow/cli; until a dedicated browser_session_record MCP tool ships, the skill drives the whole lifecycle from its own bash steps. --with-dom stays off unless a task demands it, since it dumps the full HTML on every navigation and makes the recording heavy. AIDefence PII checks fire when content is read rather than when you navigate, so redaction is down to the skills that parse pages.
What it helps with
- record a walkthrough of a site step by step for later analysis
- capture a baseline snapshot and screenshot around a single action
- stand up a session that extraction and test skills can reuse
- locate an earlier run by its name via
/ruflo-browser ls - file the finished run in AgentDB alongside its verdict
Example prompts for the agent
- Open a named session for the
login-flowtask, sign in and record every step - Take a baseline snapshot and screenshot, then click
#loginand log the step - Close the session with verdict
pass, compact the RVF and store it inbrowser-sessions
How to install browser-record
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-record -a claude-code2Manually: put the files in place
~/.claude/skills/browser-record/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/browser-record/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-record -a codex2Manually: put the files in place
.agents/skills/browser-record/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-record -a cursor2Manually: put the files in place
.cursor/skills/browser-record/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo browser-record2Manually: put the files in place
.github/skills/browser-record/SKILL.md1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-record -a gemini-cli2Platform CLI
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-browser/skills/browser-recordManually: put the files in place
.devin/skills/browser-record/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-record -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about browser-record
How do I install browser-record in Claude Code?
Run npx skills add ruvnet/ruflo --skill browser-record -a claude-code. The skill lands at ~/.claude/skills/browser-record/SKILL.md.
What does browser-record do?
It opens a browser session under a given name, allocates an RVF container for it and binds each action to a ruvector trajectory step. When the run ends it records a verdict, compacts the container and indexes the session in AgentDB.
Why is --with-dom off by default?
It dumps the full HTML on every navigation, which bloats the recording. Turn it on for a task that genuinely needs the DOM, not by habit.
Source text
SKILL.md · MIT
---
name: browser-record
description: Open a named, traced browser session into an RVF cognitive container with a ruvector trajectory recording every action
argument-hint: "<url-or-task> [--with-dom] [--viewport WxH]"
allowed-tools: mcp__plugin_ruflo-core_ruflo__browser_open mcp__plugin_ruflo-core_ruflo__browser_close mcp__plugin_ruflo-core_ruflo__browser_session-list mcp__plugin_ruflo-core_ruflo__browser_screenshot mcp__plugin_ruflo-core_ruflo__browser_snapshot mcp__plugin_ruflo-core_ruflo__browser_wait mcp__plugin_ruflo-core_ruflo__aidefence_has_pii mcp__plugin_ruflo-core_ruflo__aidefence_scan Bash Read Write
---
# Browser Record
Primitive on which every other browser skill composes. Opens a named browser session, allocates an RVF container for it, and binds every action to a ruvector trajectory step. **You do not run a browser session in this plugin without invoking this skill (or one that wraps it).**
## When to use
- Starting any browser interaction that is not a one-off throwaway probe.
- Exploring a site interactively while preserving the trace for later replay or analysis.
- Establishing a reusable session that downstream skills (`browser-extract`, `browser-form-fill`, `browser-test`) will compose.
## Steps
1. **Allocate session id and RVF container**:
```bash
SID="$(date +%Y%m%d-%H%M%S)-${TASK_SLUG:-record}"
npx -y [email protected] rvf create "$SID.rvf" --dimension 384
npx -y [email protected] hooks trajectory-begin --session-id "$SID" --task "$1"
```
2. **Open the browser** via `mcp__plugin_ruflo-core_ruflo__browser_open` with the URL.
3. **Snapshot the initial state**: `browser_snapshot` for the accessibility tree, `browser_screenshot` for a baseline image.
4. **For each interaction**, record a trajectory step before and after:
```bash
npx -y [email protected] hooks trajectory-step \
--session-id "$SID" --action click --args '{"selector":"#login"}' --result ok
```
5. **End cleanly**:
```bash
npx -y [email protected] hooks trajectory-end --session-id "$SID" --verdict pass
npx -y [email protected] rvf compact "$SID.rvf"
```
6. **Index in AgentDB** under `browser-sessions`:
```bash
npx -y @claude-flow/cli@latest memory store --namespace browser-sessions \
--key "$SID" --value "{rvf_id:$SID,host:...,task:...,verdict:pass}"
```
## Caveats
- Until the `browser_session_record` MCP tool ships (ADR-0001 §7), this skill drives the lifecycle from inside its own bash steps. Do not call `mcp__plugin_ruflo-core_ruflo__browser_open` directly without these wrappers.
- The session id format is fixed: `<YYYYMMDD-HHMMSS>-<task-slug>`. Downstream `/ruflo-browser ls` parses this.
- `--with-dom` is expensive (full HTML dump per nav). Off by default.
- AIDefence gates apply at extraction time, not at navigation time. `browser-record` is a primitive; redaction is the responsibility of skills that read content (`browser-extract`, `browser-test`).
© ruvnet · MIT · ruvnet/ruflo