A verification layer for Claude Code. Reads your spec, runs a browser agent against your local dev server for each acceptance criterion, and returns pass/fail with screenshots — before you push. No CI. No infrastructure.
- Claude Code with OAuth login (
claude login) - Playwright MCP configured (see below)
# One-time setup — auto-detects dev server, indexes app
/verify-setup
# Run verification against a spec
/verify/verify-setup auto-detects your dev server port, indexes routes and selectors from your codebase, and writes .verify/config.json + .verify/app.json. No npm install needed.
/verify asks for your spec, reviews it for ambiguities, then verifies each acceptance criterion using Playwright MCP. Results appear inline with screenshots.
claude mcp add playwright -- npx @playwright/mcp@latest --storage-state .verify/auth.json --isolatedRestart Claude Code after adding the MCP server.
After a run, evidence lives in .verify/runs/<run_id>/:
# Browse raw evidence for a specific AC
ls .verify/runs/*/evidence/<ac_id>/Each AC's evidence directory contains:
result.json— verdict, confidence, reasoning, steps taken*.png— screenshots captured during execution
/verify runs as a Claude Code skill using Playwright MCP for browser interaction:
- Spec Interpreter — reviews acceptance criteria for ambiguities, asks clarifying questions
- AC Extractor — parses the spec into concrete, testable acceptance criteria using seed data and known routes
- Browser Verification — navigates the app via Playwright MCP, checks each AC, collects screenshots
- Report — writes per-AC
result.jsonand a combinedverdicts.json
See CLAUDE.md for full dev commands, conventions, and test instructions.