Skip to main content
skill CX Codex GP ChatGPT official · OpenAI

agent-browser-verify — Codex skill: browser checks

Checks a dev server page in the browser for loading issues, console errors, and missing UI elements. Use it to verify a running project before moving on.

Install into Codex · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openai/plugins --skill agent-browser-verify -a codex
Open on GitHub

What agent-browser-verify does

The skill runs when a dev server starts or when you ask the agent to check a page. It uses agent-browser to open the site, take a screenshot, inspect page content and interactive elements, and look for console errors or a framework error overlay. It then reports whether the check passed.

For a stuck page, it gathers browser evidence and suggests comparing it with server logs. When a check fails, it instructs the agent to capture the error state, fix the issue, and try again, with at most two retry cycles. The workflow requires agent-browser; Vercel and Workflow DevKit commands are also included for projects that use them.

Install it if you want browser checks after starting a dev server. Skip it if those checks are not part of your workflow.

What it helps with

  • check whether a dev server page loads
  • find browser console errors
  • verify that key UI elements render
  • gather evidence when a page gets stuck

Example prompts for the agent

  • Check the page after starting the dev server and report the result.
  • Take a screenshot and check for console errors.
  • The page is stuck loading. Compare browser state with the server logs.

How to install agent-browser-verify

1Skills CLI (Vercel)

npx skills add openai/plugins --skill agent-browser-verify -a codex

2Manually: put the files in place

.agents/skills/agent-browser-verify/SKILL.md

For all projects use ~/.agents/skills/

From the same set201

The whole set →
supabase official supabase Guides the agent through database configuration and strict RLS policies in Supabase. CX Codex GP ChatGPT 8installs remotion-render official Remotion Exports videos and static stills from Remotion projects using CLI commands. CX Codex GP ChatGPT 3installs figma-create-new-file official Figma Creates blank Figma, FigJam, or Slides files inside draft folders. It resolves planKey and editor types before invoking Figma MCP tools. CX Codex GP ChatGPT 6installs swiftui-performance-audit official OpenAI Pinpoints SwiftUI runtime issues like frame drops, unresponsive taps, and excessive view body computations. Works code-first and guides Instruments profiling. CX Codex GP ChatGPT 109installs swiftui-liquid-glass official OpenAI This skill helps build and review SwiftUI Liquid Glass interfaces for iOS 26+. Use it when adopting the API or checking fallbacks, interaction, and design fit. CX Codex GP ChatGPT 121installs swiftui-ui-patterns official OpenAI This skill helps build and refactor SwiftUI interfaces, from navigation and state to layouts and controls. Use it for new screens or changes to an existing project. CX Codex GP ChatGPT 114installs swiftui-view-refactor official OpenAI Refactors SwiftUI view files into clean, testable structures with dedicated subview types and proper Observation ownership. CX Codex GP ChatGPT 113installs ios-memgraph-leaks official OpenAI Captures and inspects iOS leaks from a simulator process or .memgraph. Useful for tracing retained objects and checking a fix with before-and-after evidence. CX Codex GP ChatGPT 1,054installs

Similar

pw-review Alireza Rezvani pw-review audits Playwright tests for anti-patterns, coverage gaps, and weak practices. Use it for one test file, a directory, or the project testDir. Claude Code 19installs pw-init Alireza Rezvani Initializes Playwright e2e testing in web projects. It inspects your framework, generates a tailored config, creates e2e folder structures, and wires CI workflows. Claude Code 15installs microsoft-store-publisher official github Prepares Windows desktop apps for Microsoft Store publication, including MSIX checks, WACK validation, and Partner Center submission work. GitHub Copilot 3installs github-issue-creator microsoft Converts voice notes, raw logs, and screenshots into structured GitHub-flavored markdown issue reports. Saves them directly to /issues/ in your repository. Claude Code GitHub Copilot 63installs improve-codebase-architecture Matt Pocock This skill scans a codebase for architectural friction, then builds a visual HTML report with refactoring candidates. Use it before a deeper architecture review. Claude Code 1,163,035installs design-taste-frontend Leonxlnx This skill directs the design of public pages and work screens, then checks the result in a browser through screenshots. Use it when an interface feels generic or unfinished. Claude Code CX Codex Cursor +1 673,100installs tdd Matt Pocock Guides the red-green TDD loop: ensures tests are written first, keep them at public interfaces, and avoid coupling to implementation details. Claude Code 1,141,062installs skill-creator official anthropics Creates and refines skills, then tests them with prompts, evaluations, and performance checks. Claude Code Claude.ai 414,180installs

Questions about agent-browser-verify

How do I install agent-browser-verify in Codex?

Run npx skills add openai/plugins --skill agent-browser-verify -a codex. The skill is installed at .agents/skills/agent-browser-verify/SKILL.md.

What does agent-browser-verify do?

It checks a page with agent-browser, including loading, browser errors, and key interactive elements. For a stuck page, it gathers browser evidence to help diagnose the issue.

What happens if the browser check fails?

The skill captures the error state and suggests inspecting the error text or console, then fixing the issue and checking again. It allows at most two retry cycles.

Source text

SKILL.md · Apache-2.0
---
name: agent-browser-verify
description: Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass/fail before continuing.
metadata:
  priority: 2
  docs:
    - "https://openai.com/index/introducing-codex/"
  pathPatterns: []
  bashPatterns:
    - '\bnext\s+dev\b'
    - '\bnpm\s+run\s+dev\b'
    - '\bpnpm\s+dev\b'
    - '\bbun\s+run\s+dev\b'
    - '\byarn\s+dev\b'
    - '\bvite\s*(dev)?\b'
    - '\bnuxt\s+dev\b'
    - '\bvercel\s+dev\b'
  promptSignals:
    phrases:
      - "check the page"
      - "check the browser"
      - "check the site"
      - "is the page working"
      - "is it loading"
      - "blank page"
      - "white screen"
      - "nothing showing"
      - "page is broken"
      - "screenshot the page"
      - "take a screenshot"
      - "check for errors"
      - "console errors"
      - "browser errors"
      - "page is stuck"
      - "page is hanging"
      - "page not loading"
      - "page frozen"
      - "spinner not stopping"
      - "page not responding"
      - "page won't load"
      - "page will not load"
      - "nothing renders"
      - "nothing rendered"
      - "ui is broken"
      - "screen is blank"
      - "screen is white"
      - "app won't load"
    allOf:
      - [check, page]
      - [check, browser]
      - [check, site]
      - [blank, page]
      - [white, screen]
      - [console, errors]
      - [page, broken]
      - [page, loading]
      - [not, rendering]
      - [page, stuck]
      - [page, hanging]
      - [page, frozen]
      - [page, timeout]
    anyOf:
      - "page"
      - "browser"
      - "screen"
      - "rendering"
      - "visual"
      - "spinner"
      - "loading"
    minScore: 6
---

# Dev Server Verification with agent-browser

**You MUST verify the dev server with agent-browser after starting it.** Do not assume the page works just because the dev server process started. Many issues (blank pages, hydration errors, missing env vars, broken imports) are only visible in the browser. Run this verification before continuing with any other work:

## Quick Verification Flow

```bash
# 1. Open the dev server
agent-browser open http://localhost:3000
agent-browser wait --load networkidle

# 2. Screenshot for visual check
agent-browser screenshot --annotate

# 3. Check for errors
agent-browser eval 'JSON.stringify(window.__consoleErrors || [])'

# 4. Snapshot interactive elements
agent-browser snapshot -i
```

## Verification Checklist

Run each check and report results:

1. **Page loads** — `agent-browser open` succeeds without timeout
2. **No blank page** — snapshot shows meaningful content (not empty body)
3. **No error overlay** — no Next.js/Vite error overlay detected
4. **Console errors** — evaluate `document.querySelectorAll('[data-nextjs-dialog]')` for error modals
5. **Key elements render** — snapshot `-i` shows expected interactive elements
6. **Navigation works** — if multiple routes exist, verify at least the home route

## Error Detection

```bash
# Check for framework error overlays
agent-browser eval 'document.querySelector("[data-nextjs-dialog], .vite-error-overlay, #webpack-dev-server-client-overlay") ? "ERROR_OVERLAY" : "OK"'

# Check page isn't blank
agent-browser eval 'document.body.innerText.trim().length > 0 ? "HAS_CONTENT" : "BLANK"'
```

## On Failure

If verification fails:

1. Screenshot the error state: `agent-browser screenshot error-state.png`
2. Capture the error overlay text or console output
3. Close the browser: `agent-browser close`
4. Fix the issue in code
5. Re-run verification (max 2 retry cycles to avoid infinite loops)

## Diagnosing a Hanging or Stuck Page

When the page appears stuck (spinner, blank content after load, frozen UI), the browser is only half the story. Correlate what you see in the browser with server-side evidence:

### 1. Capture Browser Evidence

```bash
# Screenshot the stuck state
agent-browser screenshot stuck-state.png

# Check for pending network requests (XHR/fetch that never resolved)
agent-browser eval 'JSON.stringify(performance.getEntriesByType("resource").filter(r => r.duration === 0).map(r => r.name))'

# Check console for errors or warnings
agent-browser eval 'JSON.stringify(window.__consoleErrors || [])'

# Look for fetch calls to workflow/API routes that are pending
agent-browser eval 'document.querySelector("[data-nextjs-dialog]") ? "ERROR_OVERLAY" : "OK"'
```

### 2. Check Server Logs

After capturing browser state, immediately check the backend:

```bash
# Stream Vercel runtime logs for the deployment
vercel logs --follow

# If using Workflow DevKit, check run status
npx workflow inspect runs
npx workflow inspect run <run_id>

# Check workflow health
npx workflow health
```

### 3. Correlate Browser + Server

| Browser Shows | Server Shows | Likely Issue |
|--------------|-------------|-------------|
| Spinner / loading forever | No recent function invocations | API route not being called — check fetch URL in client code |
| Spinner / loading forever | Function started but no step logs | Workflow step is stuck — add `console.log` at step entry/exit |
| Blank page, no errors | Build succeeded, no runtime errors | Hydration issue or missing data — check SSR vs client rendering |
| Network request pending | 504 Gateway Timeout in logs | Function timeout — increase `maxDuration` or optimize step |
| Console: "Failed to fetch" | OIDC/credential error in logs | Missing `vercel env pull` — run `vercel link && vercel env pull` |
| Error overlay visible | Stack trace in runtime logs | Read the server error — it usually has more detail than the client |

### 4. Fix and Re-verify

After fixing the issue:

```bash
# Re-open and verify the fix
agent-browser open http://localhost:3000
agent-browser wait --load networkidle
agent-browser screenshot after-fix.png
agent-browser eval 'document.body.innerText.trim().length > 0 ? "HAS_CONTENT" : "BLANK"'
agent-browser close
```

## On Success

```bash
agent-browser close
```

Report: "Dev server verified — page loads, no errors detected, key UI elements render correctly."

## Suggest Verification After Implementation

When you finish building or implementing a feature (wrote code, created routes, set up a project), briefly let the user know they can ask you to verify everything works with a browser check. One sentence is enough. Don't force it if only a small fix or question was involved.

© Vercel Labs · Apache-2.0 · openai/plugins

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor