69aa3facba
📁 Files changed: 1 📝 Lines changed: 7 • CLAUDE.md
2.9 KiB
2.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Build & Development
npm install # Install dependencies
npx playwright install webkit # Install WebKit browser
npm run build # Compile TypeScript to dist/
npm run dev # Watch mode compilation
npm start # Run the CLI (after build)
Lint, Format & Typecheck
npm run check # Run all checks (lint + format)
npm run fix # Fix all auto-fixable issues
npm run lint # Lint only
npm run lint:fix # Lint with autofix
npm run format # Check formatting
npm run format:fix # Fix formatting
npm run typecheck # TypeScript type checking
Code Style
- Short methods: Keep methods under 20 lines. Extract logic into focused helper methods.
- Single responsibility: Each class handles one concern. Split large classes by domain.
- Class structure:
ClaudeBrowser- browser lifecycle and page interactionsBrowserServer- HTTP server and request handlingLogger(planned) - colored console output
- Naming: Commands use
verbNounpattern (e.g.,getCookies,setStorage). - Types: All commands in discriminated union. Add new commands to
BrowserCommandtype.
Architecture
This is a TypeScript library providing headless browser automation via Playwright WebKit. It has three modes of operation:
- CLI (
src/cli.ts) - Direct command-line usage for screenshots, clicking, typing, and querying - Server (
src/server.ts) - HTTP server accepting JSON commands via POST requests - Library (
src/index.ts) - Programmatic API viaClaudeBrowserclass
Core Components
- ClaudeBrowser (
src/browser.ts) - Main class wrapping Playwright WebKit. Handles browser lifecycle, navigation, and all DOM interactions. UsesexecuteCommand()to process typed command objects. - BrowserServer (
src/server.ts) - HTTP server that wraps ClaudeBrowser. Accepts JSON POST requests and returns JSON responses. CORS-enabled. - Types (
src/types.ts) - Discriminated union of command types (BrowserCommand) and response types (CommandResponse).
Command Flow
Commands are typed objects with a cmd discriminator:
{ cmd: 'goto', url: string }
{ cmd: 'click', selector: string }
{ cmd: 'type', selector: string, text: string }
{ cmd: 'query', selector: string }
// etc.
All commands return { ok: true, ...data } or { ok: false, error: string }.
CLI Options
Key flags: -s <port> (server mode), -q <selector> (query), -c <selector> (click), -t <sel>=<text> (type), -i (interactive), --headed (visible browser).
Screenshots
Save screenshots to screenshots/ directory:
curl localhost:13373 -d '{"cmd":"screenshot","path":"screenshots/page.png"}'