← VercelCONTENT HISTORY

Update to Vercel

Snapshot Sep 30, 2026 · 23:18 UTC · version 0.21.4

Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED · RULE-BASED ANALYSIS

Supporting file metadata differs

Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Supporting files

Before

[]

After

[{"relative_path":"agents/openai.yaml","size_in_bytes":103}]

Compare saved observations

Download comparison JSON
Full technical diff · 1 changed fields

changed /included_files

BEFORE
[]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 103
  }
]
Full snapshot data
{
  "name": "agent-browser",
  "description": "Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 103
    }
  ],
  "skill_md_contents": "---\nname: agent-browser\ndescription: Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.\nmetadata:\n  priority: 3\n  docs:\n    - \"https://openai.com/index/introducing-codex/\"\n  pathPatterns:\n    - 'agent-browser.json'\n    - 'playwright.config.*'\n    - 'e2e/**'\n    - 'tests/e2e/**'\n    - 'test/e2e/**'\n    - 'cypress/**'\n    - 'cypress.config.*'\n  bashPatterns:\n    - '\\bagent-browser\\b'\n    - '\\bnext\\s+dev\\b'\n    - '\\bnpm\\s+run\\s+dev\\b'\n    - '\\bpnpm\\s+dev\\b'\n    - '\\bbun\\s+run\\s+dev\\b'\n    - '\\byarn\\s+dev\\b'\n    - '\\bvite\\b'\n    - '\\bnuxt\\s+dev\\b'\n    - '\\bvercel\\s+dev\\b'\n    - '\\blocalhost:\\d+'\n    - '\\b127\\.0\\.0\\.1:\\d+'\n    - '\\bcurl\\s+.*localhost'\n    - '\\bopen\\s+https?://'\n    - '\\bplaywright\\b'\n    - '\\bcypress\\b'\n---\n\n# Browser Automation with agent-browser\n\nWhen a dev server is running or the user asks to verify, test, or interact with a web page, use `agent-browser` to automate the browser.\n\n## Core Workflow\n\nEvery browser automation follows this pattern:\n\n1. **Navigate**: `agent-browser open <url>`\n2. **Snapshot**: `agent-browser snapshot -i` (get element refs like `@e1`, `@e2`)\n3. **Interact**: Use refs to click, fill, select\n4. **Re-snapshot**: After navigation or DOM changes, get fresh refs\n\n```bash\nagent-browser open http://localhost:3000\nagent-browser wait --load networkidle\nagent-browser snapshot -i\n```\n\n## Dev Server Verification\n\nWhen a dev server starts, use agent-browser to verify it's working:\n\n```bash\n# After starting a dev server (next dev, vite, etc.)\nagent-browser open http://localhost:3000\nagent-browser wait --load networkidle\nagent-browser screenshot dev-check.png\nagent-browser snapshot -i\n```\n\n## Command Chaining\n\nCommands can be chained with `&&`. The browser persists between commands via a background daemon.\n\n```bash\nagent-browser open http://localhost:3000 && agent-browser wait --load networkidle && agent-browser snapshot -i\n```\n\n## Essential Commands\n\n```bash\n# Navigation\nagent-browser open <url>              # Navigate (aliases: goto, navigate)\nagent-browser close                   # Close browser\n\n# Snapshot\nagent-browser snapshot -i             # Interactive elements with refs\nagent-browser snapshot -i -C          # Include cursor-interactive elements\nagent-browser snapshot -s \"#selector\" # Scope to CSS selector\n\n# Interaction (use @refs from snapshot)\nagent-browser click @e1               # Click element\nagent-browser fill @e2 \"text\"         # Clear and type text\nagent-browser type @e2 \"text\"         # Type without clearing\nagent-browser select @e1 \"option\"     # Select dropdown option\nagent-browser check @e1               # Check checkbox\nagent-browser press Enter             # Press key\nagent-browser scroll down 500         # Scroll page\n\n# Get information\nagent-browser get text @e1            # Get element text\nagent-browser get url                 # Get current URL\nagent-browser get title               # Get page title\n\n# Wait\nagent-browser wait @e1                # Wait for element\nagent-browser wait --load networkidle # Wait for network idle\nagent-browser wait --url \"**/page\"    # Wait for URL pattern\nagent-browser wait 2000               # Wait milliseconds\n\n# Capture\nagent-browser screenshot              # Screenshot to temp dir\nagent-browser screenshot --full       # Full page screenshot\nagent-browser screenshot --annotate   # Annotated screenshot with numbered labels\nagent-browser pdf output.pdf          # Save as PDF\n\n# Diff (compare page states)\nagent-browser diff snapshot           # Compare current vs last snapshot\nagent-browser diff screenshot --baseline before.png  # Visual pixel diff\n```\n\n## Common Patterns\n\n### Form Submission\n\n```bash\nagent-browser open http://localhost:3000/signup\nagent-browser snapshot -i\nagent-browser fill @e1 \"Jane Doe\"\nagent-browser fill @e2 \"jane@example.com\"\nagent-browser click @e5\nagent-browser wait --load networkidle\n```\n\n### Authentication with State Persistence\n\n```bash\n# Login once and save state\nagent-browser open http://localhost:3000/login\nagent-browser snapshot -i\nagent-browser fill @e1 \"$USERNAME\"\nagent-browser fill @e2 \"$PASSWORD\"\nagent-browser click @e3\nagent-browser wait --url \"**/dashboard\"\nagent-browser state save auth.json\n\n# Reuse in future sessions\nagent-browser state load auth.json\nagent-browser open http://localhost:3000/dashboard\n```\n\n### Data Extraction\n\n```bash\nagent-browser open http://localhost:3000/products\nagent-browser snapshot -i\nagent-browser get text @e5\nagent-browser get text body > page.txt\n```\n\n### Visual Debugging\n\n```bash\nagent-browser --headed open http://localhost:3000\nagent-browser highlight @e1\nagent-browser record start demo.webm\n```\n\n## Ref Lifecycle (Important)\n\nRefs (`@e1`, `@e2`, etc.) are invalidated when the page changes. Always re-snapshot after:\n\n- Clicking links or buttons that navigate\n- Form submissions\n- Dynamic content loading (dropdowns, modals)\n\n```bash\nagent-browser click @e5              # Navigates to new page\nagent-browser snapshot -i            # MUST re-snapshot\nagent-browser click @e1              # Use new refs\n```\n\n## Annotated Screenshots (Vision Mode)\n\nUse `--annotate` for screenshots with numbered labels on interactive elements:\n\n```bash\nagent-browser screenshot --annotate\n# Output: [1] @e1 button \"Submit\", [2] @e2 link \"Home\", ...\nagent-browser click @e2\n```\n\n## Semantic Locators (Alternative to Refs)\n\n```bash\nagent-browser find text \"Sign In\" click\nagent-browser find label \"Email\" fill \"user@test.com\"\nagent-browser find role button click --name \"Submit\"\n```\n\n## JavaScript Evaluation\n\n```bash\n# Simple expressions\nagent-browser eval 'document.title'\n\n# Complex JS: use --stdin with heredoc\nagent-browser eval --stdin <<'EVALEOF'\nJSON.stringify(\n  Array.from(document.querySelectorAll(\"img\"))\n    .filter(i => !i.alt)\n    .map(i => ({ src: i.src.split(\"/\").pop(), width: i.width }))\n)\nEVALEOF\n```\n\n## Session Management\n\n```bash\nagent-browser --session site1 open http://localhost:3000\nagent-browser --session site2 open http://localhost:3001\nagent-browser session list\nagent-browser close  # Always close when done\n```\n\n## Timeouts and Slow Pages\n\n```bash\nagent-browser wait --load networkidle  # Best for slow pages\nagent-browser wait \"#content\"          # Wait for specific element\nagent-browser wait --url \"**/dashboard\"  # Wait for URL pattern\nagent-browser wait 5000                # Fixed wait (last resort)\n```\n"
}

SHA-256: 44e40f0824eb519ce4a5baa20a2176526d426d1e30a15265df0bfba031a688ce