Automates Chrome browser interactions like navigating, clicking, and form filling directly via CLI commands.

Install

mkdir -p .claude/skills/vibe-check && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5292" && unzip -o skill.zip -d .claude/skills/vibe-check && rm skill.zip

Installs to .claude/skills/vibe-check

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Browser automation for AI agents. Use when the user needs to navigate websites, read page content, fill forms, click elements, take screenshots, or manage browser pages.
169 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Navigate to web pages
  • Map interactive elements with references
  • Interact with web elements like clicking and typing
  • Extract text and HTML content from pages
  • Manage browser tabs and history

How it works

The skill automates Chrome via a command-line interface, allowing navigation, element mapping, interaction, and content extraction using commands that can be chained sequentially.

Inputs & outputs

You give it
A sequence of browser automation commands
You get back
Browser actions performed, page content, element references, or screenshots

When to use vibe-check

  • Automate end-to-end testing of web flows
  • Extract data from web pages via automation
  • Fill and submit web forms automatically

About this skill

Vibium Browser Automation — CLI Reference

The vibium CLI automates Chrome via the command line. The browser auto-launches on first use (daemon mode keeps it running between commands).

vibium go <url> && vibium map && vibium click @e1 && vibium map

Core Workflow

Every browser automation follows this pattern:

  1. Navigate: vibium go <url>
  2. Map: vibium map (get element refs like @e1, @e2)
  3. Interact: Use refs to click, fill, select — e.g. vibium click @e1
  4. Re-map: After navigation or DOM changes, get fresh refs with vibium map

Binary Resolution

Before running any commands, resolve the vibium binary path once:

  1. Try vibium directly (works if globally installed via npm install -g vibium)
  2. Fall back to ./clicker/bin/vibium (dev environment, in project root)
  3. Fall back to ./node_modules/.bin/vibium (local npm install)

Run vibium --help (or the resolved path) to confirm. Use the resolved path for all subsequent commands.

Windows note: Use forward slashes in paths (e.g. ./clicker/bin/vibium.exe) and quote paths containing spaces.

Command Chaining

Chain commands with && to run them sequentially. The chain stops on first error:

vibium go https://example.com && vibium map && vibium click @e3 && vibium diff map

When to chain: Use && for sequences that should happen back-to-back (navigate → interact → verify). Run commands separately when you need to inspect output between steps.

When NOT to chain: Don't chain commands that depend on parsing the previous output (e.g. reading map output to decide what to click). Run those separately so you can analyze the result first.

Commands

Discovery

  • vibium map — map interactive elements with @refs (recommended before interacting)
  • vibium map --selector "nav" — scope map to elements within a CSS subtree
  • vibium diff map — compare current vs last map (see what changed)

Navigation

  • vibium go <url> — go to a page
  • vibium back — go back in history
  • vibium forward — go forward in history
  • vibium reload — reload the current page
  • vibium url — print current URL
  • vibium title — print page title

Reading Content

  • vibium text — get all page text
  • vibium text "<selector>" — get text of a specific element
  • vibium html — get page HTML (use --outer for outerHTML)
  • vibium find "<selector>" — find element, return @e1 ref (clickable with vibium click @e1)
  • vibium find "<selector>" --all — find all matching elements → @e1, @e2, ... (--limit N)
  • vibium find text "Sign In" — find element by text content → @e1
  • vibium find label "Email" — find input by label → @e1
  • vibium find placeholder "Search" — find by placeholder → @e1
  • vibium find testid "submit-btn" — find by data-testid → @e1
  • vibium find xpath "//div[@class]" — find by XPath → @e1
  • vibium find alt "Logo" — find by alt attribute → @e1
  • vibium find title "Settings" — find by title attribute → @e1
  • vibium find role <role> — find element by ARIA role → @e1 (--name for accessible name filter)
  • vibium eval "<js>" — run JavaScript and print result (--stdin to read from stdin)
  • vibium count "<selector>" — count matching elements
  • vibium screenshot -o file.png — capture screenshot (--full-page, --annotate)
  • vibium a11y-tree — accessibility tree (--everything for all nodes)

Interaction

  • vibium click "<selector>" — click an element (also accepts @ref from map)
  • vibium dblclick "<selector>" — double-click an element
  • vibium type "<selector>" "<text>" — type into an input (appends to existing value)
  • vibium fill "<selector>" "<text>" — clear field and type new text (replaces value)
  • vibium press <key> [selector] — press a key on element or focused element
  • vibium focus "<selector>" — focus an element
  • vibium hover "<selector>" — hover over an element
  • vibium scroll [direction] — scroll page (--amount N, --selector)
  • vibium scroll into-view "<selector>" — scroll element into view (centered)
  • vibium keys "<combo>" — press keys (Enter, Control+a, Shift+Tab)
  • vibium select "<selector>" "<value>" — pick a dropdown option
  • vibium check "<selector>" — check a checkbox/radio (idempotent)
  • vibium uncheck "<selector>" — uncheck a checkbox (idempotent)

Mouse Primitives

  • vibium mouse click [x] [y] — click at coordinates or current position (--button 0|1|2)
  • vibium mouse move <x> <y> — move mouse to coordinates
  • vibium mouse down — press mouse button (--button 0|1|2)
  • vibium mouse up — release mouse button (--button 0|1|2)
  • vibium drag "<source>" "<target>" — drag from one element to another

Element State

  • vibium value "<selector>" — get input/textarea/select value
  • vibium attr "<selector>" "<attribute>" — get HTML attribute value
  • vibium is visible "<selector>" — check if element is visible (true/false)
  • vibium is enabled "<selector>" — check if element is enabled (true/false)
  • vibium is checked "<selector>" — check if checkbox/radio is checked (true/false)
  • vibium is actionable "<selector>" — check if element is actionable (true/false)

Waiting

  • vibium wait "<selector>" — wait for element (--state visible|hidden|attached, --timeout ms)
  • vibium wait url "<pattern>" — wait until URL contains substring (--timeout ms)
  • vibium wait load — wait until page is fully loaded (--timeout ms)
  • vibium wait text "<text>" — wait until text appears on page (--timeout ms)
  • vibium wait fn "<expression>" — wait until JS expression returns truthy (--timeout ms)
  • vibium sleep <ms> — pause execution (max 30000ms)

Capture

  • vibium screenshot -o file.png — capture screenshot (--full-page, --annotate)
  • vibium pdf -o file.pdf — save page as PDF

Dialogs

  • vibium dialog accept [text] — accept dialog (optionally with prompt text)
  • vibium dialog dismiss — dismiss dialog

Emulation

  • vibium viewport — get current viewport dimensions
  • vibium viewport <width> <height> — set viewport size (--dpr for device pixel ratio)
  • vibium window — get OS browser window dimensions and state
  • vibium window <width> <height> [x] [y] — set window size and position (--state)
  • vibium media — override CSS media features (--color-scheme, --reduced-motion, --forced-colors, --contrast, --media)
  • vibium geolocation <lat> <lng> — override geolocation (--accuracy)
  • vibium content "<html>" — replace page HTML (--stdin to read from stdin)

Frames

  • vibium frames — list all iframes on the page
  • vibium frame "<nameOrUrl>" — find a frame by name or URL substring

File Upload

  • vibium upload "<selector>" <files...> — set files on input[type=file]

Recording

  • vibium record start — start recording (--screenshots, --snapshots, --name, -o path — defaults to a timestamped record-<date>.zip, so reruns never overwrite)
  • vibium record stop — stop recording and save ZIP (-o path overrides the start path; the output names the saved file)

Recordings can include a video track of the session (Firefox 154+, local browsers). By default video is recorded when the engine supports it and skipped otherwise — the stop result says which. Pass --video to require it (fails with an explanatory error on Chrome), --video=false to disable, and --video-size 1280x720 / --video-fps 30 to override the viewport defaults. The video lands inside the recording ZIP next to the trace (video/<context>.webm); it films the page that was active at start and does not follow tab switches. Remote browser connections record every track except video; --video-remote keep records anyway and leaves the file on the remote host (the stop output names its path there).

vibium record start --video -o run.zip
# ... actions ...
vibium record stop
# Saved run.zip (23 steps, 14s video)

Cookies

  • vibium cookies — list all cookies
  • vibium cookies <name> <value> — set a cookie
  • vibium cookies clear — clear all cookies

Storage State

  • vibium storage — export cookies + localStorage + sessionStorage (-o state.json)
  • vibium storage restore <path> — restore state from JSON file

Downloads

  • vibium download dir <path> — set download directory

Pages

  • vibium pages — list open pages
  • vibium page new [url] — open new page
  • vibium page switch <index|url> — switch page
  • vibium page close [index] — close page

Debug

  • vibium highlight "<selector>" — highlight element visually (3 seconds)

Session

  • vibium start — start a local browser session
  • vibium start <url> — start connected to a remote browser
  • vibium stop — stop the browser session
  • vibium daemon start — start background browser
  • vibium daemon status — check if running
  • vibium daemon stop — stop daemon

Common Patterns

Ref-based workflow (recommended for AI)

vibium go https://example.com
vibium map
vibium click @e1
vibium map  # re-map after interaction

Verify action worked

vibium map
vibium click @e3
vibium diff map  # see what changed

Read a page

vibium go https://example.com && vibium text

Fill a form (end-to-end)

vibium go https://example.com/login
vibium map
# Look at map output to identify form fields
vibium fill @e1 "[email protected]"
vibium fill @e2 "secret"
vibium click @e3
vibium wait url "/dashboard"
vibium screenshot -o after-login.png

Scoped map (large pages)

vibium map --selector "nav"        # Only map elements in <nav>
vibium map --selector "#sidebar"   # Only map elements in #sidebar
vibium map --selector "form"       # Only map form controls

Semantic find (no CSS selectors needed)

vibium find text "Sign In"             # → @e1 [button] "Sign In"
vibium find label "Email"              # → @e1 [input] placeholder="Email"
vibium click @e1                       # Click the found el

---

*Content truncated.*

When not to use it

  • When commands depend on parsing previous output to decide the next step
  • When a fixed delay is the only signal for waiting

Limitations

  • Fixed delays are a last resort for waiting

How it compares

This skill provides a CLI-driven, programmatic way to interact with web pages, offering precise control over browser actions compared to manual browsing or GUI-based automation tools.

Compared to similar skills

vibe-check side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
vibe-check (this skill)15moReviewIntermediate
e2e04moReviewIntermediate
browser-tools69moReviewIntermediate
frontend-testing113moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry