Use the ${ENABLE_TASKS_FEATURE()?TASKCREATE_TOOL_NAME:TODOWRITE_TOOL_NAME} tool to track your progress through this multi-step task.
Goal
Create one or more verifier skills that can be used by the Verify agent to automatically verify code changes in this project or folder. You may create multiple verifiers if the project has different verification needs (e.g., both web UI and API endpoints).
Do NOT create verifiers for unit tests or typechecking. Those are already handled by the standard build/test workflow and don't need dedicated verifier skills. Focus on functional verification: web UI (Playwright), CLI (Tmux), and API (HTTP) verifiers.
Phase 1: Auto-Detection
Analyze the project to detect what's in different subdirectories. The project may contain multiple sub-projects or areas that need different verification approaches (e.g., a web frontend, an API backend, and shared libraries all in one repo).
Scan top-level directories to identify distinct project areas:
- Look for separate package.json, Cargo.toml, pyproject.toml, go.mod in subdirectories
- Identify distinct application types in different folders
For each area, detect:
a. Project type and stack
- Primary language(s) and frameworks
- Package managers (npm, yarn, pnpm, pip, cargo, etc.)
b. Application type
- Web app (React, Next.js, Vue, etc.) → suggest Playwright-based verifier
- CLI tool → suggest Tmux-based verifier
- API service (Express, FastAPI, etc.) → suggest HTTP-based verifier
c. Existing verification tools
- Test frameworks (Jest, Vitest, pytest, etc.)
- E2E tools (Playwright, Cypress, etc.)
- Dev server scripts in package.json
d. Dev server configuration
- How to start the dev server
- What URL it runs on
- What text indicates it's ready
Installed verification packages (for web apps)
- Check if Playwright is installed (look in package.json dependencies/devDependencies)
- Check MCP configuration (.mcp.json) for browser automation tools:
- Playwright MCP server
- Chrome DevTools MCP server
- Claude Chrome Extension MCP (browser-use via Claude's Chrome extension)
- For Python projects, check for playwright, pytest-playwright
Phase 2: Verification Tool Setup
Based on what was detected in Phase 1, help the user set up appropriate verification tools.
For Web Applications
If browser automation tools are already installed/configured, ask the user which one they want to use:
- Use AskUserQuestion to present the detected options
- Example: "I found Playwright and Chrome DevTools MCP configured. Which would you like to use for verification?"
If NO browser automation tools are detected, ask if they want to install/configure one:
- Use AskUserQuestion: "No browser automation tools detected. Would you like to set one up for UI verification?"
- Options to offer:
- Playwright (Recommended) - Full browser automation library, works headless, great for CI
- Chrome DevTools MCP - Uses Chrome DevTools Protocol via MCP
- Claude Chrome Extension - Uses the Claude Chrome extension for browser interaction (requires the extension installed in Chrome)
- None - Skip browser automation (will use basic HTTP checks only)
If user chooses to install Playwright, run the appropriate command based on package manager:
- For npm:
npm install -D @playwright/test && npx playwright install
- For yarn:
yarn add -D @playwright/test && yarn playwright install
- For pnpm:
pnpm add -D @playwright/test && pnpm exec playwright install
- For bun:
bun add -D @playwright/test && bun playwright install
If user chooses Chrome DevTools MCP or Claude Chrome Extension:
- These require MCP server configuration rather than package installation
- Ask if they want you to add the MCP server configuration to .mcp.json
- For Claude Chrome Extension, inform them they need the extension installed from the Chrome Web Store
MCP Server Setup (if applicable):
- If user selected an MCP-based option, configure the appropriate entry in .mcp.json
- Update the verifier skill's allowed-tools to use the appropriate mcp__* tools
For CLI Tools
- Check if asciinema is available (run
which asciinema)
- If not available, inform the user that asciinema can help record verification sessions but is optional
- Tmux is typically system-installed, just verify it's available
For API Services
- Check if HTTP testing tools are available:
- curl (usually system-installed)
- httpie (
http command)
- No installation typically needed
Phase 3: Interactive Q&A
Based on the areas detected in Phase 1, you may need to create multiple verifiers. For each distinct area, use the AskUserQuestion tool to confirm:
Verifier name - Based on detection, suggest a name but let user choose:
If there is only ONE project area, use the simple format:
- "verifier-playwright" for web UI testing
- "verifier-cli" for CLI/terminal testing
- "verifier-api" for HTTP API testing
If there are MULTIPLE project areas, use the format verifier-<project>-<type>:
- "verifier-frontend-playwright" for the frontend web UI
- "verifier-backend-api" for the backend API
- "verifier-admin-playwright" for an admin dashboard
The <project> portion should be a short identifier for the subdirectory or project area (e.g., the folder name or package name).
Custom names are allowed but MUST include "verifier" in the name — the Verify agent discovers skills by looking for "verifier" in the folder name.
Project-specific questions based on type:
For web apps (playwright):
- Dev server command (e.g., "npm run dev")
- Dev server URL (e.g., "http://localhost:3000")
- Ready signal (text that appears when server is ready)
For CLI tools:
- Entry point command (e.g., "node ./cli.js" or "./target/debug/myapp")
- Whether to record with asciinema
For APIs:
- API server command
- Base URL
Authentication & Login (for web apps and APIs):
Use AskUserQuestion to ask: "Does your app require authentication/login to access the pages or endpoints being verified?"
- No authentication needed - App is publicly accessible, no login required
- Yes, login required - App requires authentication before verification can proceed
- Some pages require auth - Mix of public and authenticated routes
If the user selects login required (or partial), ask follow-up questions:
- Login method: How does a user log in?
- Form-based login (username/password on a login page)
- API token/key (passed as header or query param)
- OAuth/SSO (redirect-based flow)
- Other (let user describe)
- Test credentials: What credentials should the verifier use?
- Ask for the login URL (e.g., "/login", "http://localhost:3000/auth")
- Ask for test username/email and password, or API key
- Note: Suggest the user use environment variables for secrets (e.g.,
TEST_USER, TEST_PASSWORD) rather than hardcoding
- Post-login indicator: How to confirm login succeeded?
- URL redirect (e.g., redirects to "/dashboard")
- Element appears (e.g., "Welcome" text, user avatar)
- Cookie/token is set
Phase 4: Generate Verifier Skill
All verifier skills are created in the project root's .claude/skills/ directory. This ensures they are automatically loaded when Claude runs in the project.
Write the skill file to .claude/skills/<verifier-name>/SKILL.md.
Skill Template Structure
---
name: <verifier-name>
description: <description based on type>
allowed-tools:
# Tools appropriate for the verifier type
---
# <Verifier Title>
You are a verification executor. You receive a verification plan and execute it EXACTLY as written.
## Project Context
<Project-specific details from detection>
## Setup Instructions
<How to start any required services>
## Authentication
<If auth is required, include step-by-step login instructions here>
<Include login URL, credential env vars, and post-login verification>
<If no auth needed, omit this section>
## Reporting
Report PASS or FAIL for each step using the format specified in the verification plan.
## Cleanup
After verification:
1. Stop any dev servers started
2. Close any browser sessions
3. Report final summary
## Self-Update
If verification fails because this skill's instructions are outdated (dev server command/port/ready-signal changed, etc.) — not because the feature under test is broken — or if the user corrects you mid-run, use AskUserQuestion to confirm and then Edit this SKILL.md with a minimal targeted fix.
Allowed Tools by Type
verifier-playwright:
allowed-tools:
- Bash(npm *)
- Bash(yarn *)
- Bash(pnpm *)
- Bash(bun *)
- mcp__playwright__*
- Read
- Glob
- Grep
verifier-cli:
allowed-tools:
- Tmux
- Bash(asciinema *)
- Read
- Glob
- Grep
verifier-api:
allowed-tools:
- Bash(curl *)
- Bash(http *)
- Bash(npm *)
- Bash(yarn *)
- Read
- Glob
- Grep
Phase 5: Confirm Creation
After writing the skill file(s), inform the user:
- Where each skill was created (always in
.claude/skills/)
- How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery
- That they can edit the skills to customize them
- That they can run /init-verifiers again to add more verifiers for other areas
- That the verifier will offer to self-update if it detects its own instructions are outdated (wrong dev server command, changed ready signal, etc.)
1---2name: skill-create-verifier-skills3description: Prompt for creating verifier skills for the Verify agent to automatically verify code changes4license: BSD-3-Clause license5---67Use the ${ENABLE_TASKS_FEATURE()?TASKCREATE_TOOL_NAME:TODOWRITE_TOOL_NAME} tool to track your progress through this multi-step task.89## Goal1011Create one or more verifier skills that can be used by the Verify agent to automatically verify code changes in this project or folder. You may create multiple verifiers if the project has different verification needs (e.g., both web UI and API endpoints).1213**Do NOT create verifiers for unit tests or typechecking.** Those are already handled by the standard build/test workflow and don't need dedicated verifier skills. Focus on functional verification: web UI (Playwright), CLI (Tmux), and API (HTTP) verifiers.1415## Phase 1: Auto-Detection1617Analyze the project to detect what's in different subdirectories. The project may contain multiple sub-projects or areas that need different verification approaches (e.g., a web frontend, an API backend, and shared libraries all in one repo).18191. **Scan top-level directories** to identify distinct project areas:20 - Look for separate package.json, Cargo.toml, pyproject.toml, go.mod in subdirectories21 - Identify distinct application types in different folders22232. **For each area, detect:**2425 a. **Project type and stack**26 - Primary language(s) and frameworks27 - Package managers (npm, yarn, pnpm, pip, cargo, etc.)2829 b. **Application type**30 - Web app (React, Next.js, Vue, etc.) → suggest Playwright-based verifier31 - CLI tool → suggest Tmux-based verifier32 - API service (Express, FastAPI, etc.) → suggest HTTP-based verifier3334 c. **Existing verification tools**35 - Test frameworks (Jest, Vitest, pytest, etc.)36 - E2E tools (Playwright, Cypress, etc.)37 - Dev server scripts in package.json3839 d. **Dev server configuration**40 - How to start the dev server41 - What URL it runs on42 - What text indicates it's ready43443. **Installed verification packages** (for web apps)45 - Check if Playwright is installed (look in package.json dependencies/devDependencies)46 - Check MCP configuration (.mcp.json) for browser automation tools:47 - Playwright MCP server48 - Chrome DevTools MCP server49 - Claude Chrome Extension MCP (browser-use via Claude's Chrome extension)50 - For Python projects, check for playwright, pytest-playwright5152## Phase 2: Verification Tool Setup5354Based on what was detected in Phase 1, help the user set up appropriate verification tools.5556### For Web Applications57581. **If browser automation tools are already installed/configured**, ask the user which one they want to use:59 - Use AskUserQuestion to present the detected options60 - Example: "I found Playwright and Chrome DevTools MCP configured. Which would you like to use for verification?"61622. **If NO browser automation tools are detected**, ask if they want to install/configure one:63 - Use AskUserQuestion: "No browser automation tools detected. Would you like to set one up for UI verification?"64 - Options to offer:65 - **Playwright** (Recommended) - Full browser automation library, works headless, great for CI66 - **Chrome DevTools MCP** - Uses Chrome DevTools Protocol via MCP67 - **Claude Chrome Extension** - Uses the Claude Chrome extension for browser interaction (requires the extension installed in Chrome)68 - **None** - Skip browser automation (will use basic HTTP checks only)69703. **If user chooses to install Playwright**, run the appropriate command based on package manager:71 - For npm: `npm install -D @playwright/test && npx playwright install`72 - For yarn: `yarn add -D @playwright/test && yarn playwright install`73 - For pnpm: `pnpm add -D @playwright/test && pnpm exec playwright install`74 - For bun: `bun add -D @playwright/test && bun playwright install`75764. **If user chooses Chrome DevTools MCP or Claude Chrome Extension**:77 - These require MCP server configuration rather than package installation78 - Ask if they want you to add the MCP server configuration to .mcp.json79 - For Claude Chrome Extension, inform them they need the extension installed from the Chrome Web Store80815. **MCP Server Setup** (if applicable):82 - If user selected an MCP-based option, configure the appropriate entry in .mcp.json83 - Update the verifier skill's allowed-tools to use the appropriate mcp__* tools8485### For CLI Tools86871. Check if asciinema is available (run `which asciinema`)882. If not available, inform the user that asciinema can help record verification sessions but is optional893. Tmux is typically system-installed, just verify it's available9091### For API Services92931. Check if HTTP testing tools are available:94 - curl (usually system-installed)95 - httpie (`http` command)962. No installation typically needed9798## Phase 3: Interactive Q&A99100Based on the areas detected in Phase 1, you may need to create multiple verifiers. For each distinct area, use the AskUserQuestion tool to confirm:1011021. **Verifier name** - Based on detection, suggest a name but let user choose:103104 If there is only ONE project area, use the simple format:105 - "verifier-playwright" for web UI testing106 - "verifier-cli" for CLI/terminal testing107 - "verifier-api" for HTTP API testing108109 If there are MULTIPLE project areas, use the format `verifier-<project>-<type>`:110 - "verifier-frontend-playwright" for the frontend web UI111 - "verifier-backend-api" for the backend API112 - "verifier-admin-playwright" for an admin dashboard113114 The `<project>` portion should be a short identifier for the subdirectory or project area (e.g., the folder name or package name).115116 Custom names are allowed but MUST include "verifier" in the name — the Verify agent discovers skills by looking for "verifier" in the folder name.1171182. **Project-specific questions** based on type:119120 For web apps (playwright):121 - Dev server command (e.g., "npm run dev")122 - Dev server URL (e.g., "http://localhost:3000")123 - Ready signal (text that appears when server is ready)124125 For CLI tools:126 - Entry point command (e.g., "node ./cli.js" or "./target/debug/myapp")127 - Whether to record with asciinema128129 For APIs:130 - API server command131 - Base URL1321333. **Authentication & Login** (for web apps and APIs):134135 Use AskUserQuestion to ask: "Does your app require authentication/login to access the pages or endpoints being verified?"136 - **No authentication needed** - App is publicly accessible, no login required137 - **Yes, login required** - App requires authentication before verification can proceed138 - **Some pages require auth** - Mix of public and authenticated routes139140 If the user selects login required (or partial), ask follow-up questions:141 - **Login method**: How does a user log in?142 - Form-based login (username/password on a login page)143 - API token/key (passed as header or query param)144 - OAuth/SSO (redirect-based flow)145 - Other (let user describe)146 - **Test credentials**: What credentials should the verifier use?147 - Ask for the login URL (e.g., "/login", "http://localhost:3000/auth")148 - Ask for test username/email and password, or API key149 - Note: Suggest the user use environment variables for secrets (e.g., `TEST_USER`, `TEST_PASSWORD`) rather than hardcoding150 - **Post-login indicator**: How to confirm login succeeded?151 - URL redirect (e.g., redirects to "/dashboard")152 - Element appears (e.g., "Welcome" text, user avatar)153 - Cookie/token is set154155## Phase 4: Generate Verifier Skill156157**All verifier skills are created in the project root's `.claude/skills/` directory.** This ensures they are automatically loaded when Claude runs in the project.158159Write the skill file to `.claude/skills/<verifier-name>/SKILL.md`.160161### Skill Template Structure162163```markdown164---165name: <verifier-name>166description: <description based on type>167allowed-tools:168 # Tools appropriate for the verifier type169---170171# <Verifier Title>172173You are a verification executor. You receive a verification plan and execute it EXACTLY as written.174175## Project Context176<Project-specific details from detection>177178## Setup Instructions179<How to start any required services>180181## Authentication182<If auth is required, include step-by-step login instructions here>183<Include login URL, credential env vars, and post-login verification>184<If no auth needed, omit this section>185186## Reporting187188Report PASS or FAIL for each step using the format specified in the verification plan.189190## Cleanup191192After verification:1931. Stop any dev servers started1942. Close any browser sessions1953. Report final summary196197## Self-Update198199If verification fails because this skill's instructions are outdated (dev server command/port/ready-signal changed, etc.) — not because the feature under test is broken — or if the user corrects you mid-run, use AskUserQuestion to confirm and then Edit this SKILL.md with a minimal targeted fix.200```201202### Allowed Tools by Type203204**verifier-playwright**:205```yaml206allowed-tools:207 - Bash(npm *)208 - Bash(yarn *)209 - Bash(pnpm *)210 - Bash(bun *)211 - mcp__playwright__*212 - Read213 - Glob214 - Grep215```216217**verifier-cli**:218```yaml219allowed-tools:220 - Tmux221 - Bash(asciinema *)222 - Read223 - Glob224 - Grep225```226227**verifier-api**:228```yaml229allowed-tools:230 - Bash(curl *)231 - Bash(http *)232 - Bash(npm *)233 - Bash(yarn *)234 - Read235 - Glob236 - Grep237```238239240## Phase 5: Confirm Creation241242After writing the skill file(s), inform the user:2431. Where each skill was created (always in `.claude/skills/`)2442. How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery2453. That they can edit the skills to customize them2464. That they can run /init-verifiers again to add more verifiers for other areas2475. That the verifier will offer to self-update if it detects its own instructions are outdated (wrong dev server command, changed ready signal, etc.)