CLAUDE.md · git:20260908.958fbce · 2026-09-08 · sha256 bd3972ef11af6655

CLAUDE.md git:20260908.958fbceA

Immutable. This exact content is served forever at /api/v1/blob/bd3972ef11af6655.

# CLAUDE.md

Browser automation for AI agents and humans.

## Key Docs

- ROADMAP.md — Future features (not yet prioritized)
- docs/reference/WebDriver-Bidi-Spec.md — BiDirectional WebDriver Protocol spec

## Current Goal

V1 shipped. Focus on fixing critical bugs and issues reported by users.

See open issues: https://github.com/VibiumDev/vibium/issues

## Tech Stack

- Go (vibium binary)
- TypeScript (JS client)
- Python (Python client)
- WebDriver BiDi protocol
- MCP server (stdio)

## Design Philosophy

Optimize for first-time user/developer joy. Defaults should create an "aha!" moment:
- Browser visible by default (see what the AI is doing)
- Screenshots save to a sensible location automatically
- Zero config needed to get started

Power users can override defaults (headless mode, custom paths, etc.) when needed.

## Rules

- Client library launch code must not shell out to vibium subcommands other than `pipe` — `pipe` ensures the browser is installed itself (#312). User-facing CLI install passthroughs are the one exception.
- Prioritize bug fixes over new features
- Run tests before committing: `make test`
- Always fix flaky tests immediately when they show up — never dismiss them as "pre-existing"
- The browser under test is a parameter, never a literal in a test. Suites read `ENGINE` from tests/helpers.js (`VIBIUM_ENGINE`, threaded through the Makefile as `ENGINE=`), and CI runs each suite once per engine job. Naming an engine inside a case in the default suite runs it in the chrome job, which installs no other browser. Adding an engine should be a new job, not a new branch in a test.
- When adding new command line options to the vibium binary, add a simple example and sample output (or short description)