# verify-app — E2E Test Subagent for Claude Code > Open-source Claude Code subagent that runs end-to-end tests on recent changes and triages failures. Inspired by Boris Cherny's verify-app setup. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: # verify-app — E2E Test Subagent for Claude Code ## Quick Use 1. Save the file in "How verify-app Works" below to `.claude/agents/verify-app.md` in your project. 2. Restart Claude Code (or run `/agents reload`). 3. After Claude finishes a coding session, say: > "Run verify-app on the changes." The subagent identifies changed files, finds matching E2E tests, runs them, and reports failures with reproduction hints. > Inspired by Boris Cherny's verify-app subagent (howborisusesclaudecode.com). This is a community-written equivalent — not Anthropic's private setup — that captures the same pattern from Boris's public description. --- ## Intro verify-app is a Claude Code subagent that runs end-to-end tests on whatever Claude just changed and reports failures with reproduction hints. It is the open-source equivalent of one of Boris Cherny's named subagents — he calls it out specifically on his setup page as the agent he uses to test Claude Code's work end-to-end. The pattern is high-leverage: at the end of a feature-build session, instead of eyeballing diffs and hoping CI catches things, the subagent maps changed files to relevant E2E tests, runs only those, and tells you which ones broke and likely why. Works with: Claude Code 1.x and above. Setup time: under 1 minute. --- ## How verify-app Works Save to `.claude/agents/verify-app.md`: ```markdown --- name: verify-app description: Run end-to-end tests on recently changed files and report failures with reproduction steps. Use after a feature implementation session, before opening a PR. tools: Bash, Read, Grep, Glob --- You are the verify-app subagent. Your single responsibility is to run E2E tests against the code Claude just modified and report what works vs. what is broken. ## Workflow 1. Identify changed files via `git status --short` and `git diff --name-only`. 2. For each changed file, locate E2E tests that exercise it: - Look in `tests/e2e/`, `cypress/`, `playwright/`, or `e2e/` - Match by import paths and feature names 3. Run only the matched tests (`npm run test:e2e -- ` or framework equivalent). 4. For each failure, capture the failing assertion + file:line, identify the most likely changed file responsible, and suggest a one-line root-cause hypothesis. 5. Output the structured summary below. ## Output format verify-app summary ================== Changed files: N E2E tests run: N Passed: N Failed: N Failures (if any): 1. Likely cause: Hypothesis: ## Boundaries - Do not run unit tests (that is the test-runner agent's job). - Do not fix anything yourself — only report. - If no E2E tests match the changed files, escalate: "No E2E coverage for X. Add a smoke test?" ``` ### When to use - End of a feature-implementation session, before opening a PR. - After running `/loop` or `/ralph-loop` — long sessions accumulate untested code. - Before merging a long-lived branch. ### When not to use - Mid-feature — let Claude finish first. - For pure refactors with no behavior change (use code-simplifier instead). --- ## Example session ``` You: "Implement audit logging for the admin panel." Claude: ... (writes 5 files, ~400 lines) You: "Run verify-app on what you just changed." Claude: -> invokes verify-app subagent -> finds 4 E2E tests in tests/e2e/admin/ -> runs them -> 3 pass, 1 fails -> reports: tests/e2e/admin/audit.spec.ts:24 Likely cause: src/lib/auditLogger.ts Hypothesis: timestamp format changed from ISO to epoch ``` --- ## FAQ **Q: Is verify-app the same as Boris Cherny's verify-app?** A: No — it is a community-written equivalent. Boris's subagent lives in his private `.claude/agents/` and Anthropic has not open-sourced it. This entry captures the same pattern from his public description on howborisusesclaudecode.com. **Q: Do I need a specific E2E framework?** A: The Workflow section auto-detects Playwright, Cypress, and generic `tests/e2e/` directories. For other frameworks, edit the Bash invocation. **Q: Does it fix failures?** A: No. The contract is "test, don't touch." Pair it with a code-fixer subagent if you want auto-repair. **Q: Will it run my entire E2E suite?** A: No — it runs only tests matched to the changed files. That keeps the feedback loop fast. **Q: How is this different from CI?** A: It runs locally during your Claude session, before push. Catches regressions ~10 minutes earlier than CI. --- ## Source & Thanks > Inspired by Boris Cherny's verify-app subagent — referenced on howborisusesclaudecode.com and his Threads post. > Original concept: the Anthropic Claude Code team's daily workflow. Citations: - howborisusesclaudecode.com (verify-app section) - Boris Cherny on Threads: https://www.threads.com/@boris_cherny/post/DTBVroqEg_K/ - Pragmatic Engineer: https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny ## 快速使用 1. 把下文 "How verify-app Works" 段落里的文件保存到项目内 `.claude/agents/verify-app.md`。 2. 重启 Claude Code(或 `/agents reload`)。 3. Claude 写完一段代码后,对它说:"Run verify-app on the changes." subagent 会找出本次会话改过的文件 → 匹配相关 E2E 测试 → 跑 → 报告失败和最可能的元凶。 ## 简介 verify-app 是 Boris Cherny(Claude Code 作者)公开点名的 5 个 subagent 之一。他用它在 PR 之前对 Claude 写的代码做端到端验证。Anthropic 没把私有 prompt 开源,本条是社区基于 Boris 公开描述写的等价版本,可直接落地。 ## 边界 - 只测不改:找出问题、报告,不自己动手修 - 只跑相关:根据改过的文件挑 E2E,不全量跑 - 没覆盖就上报:让你决定加冒烟测试还是接着写 --- Source: https://tokrepo.com/en/workflows/verify-app-e2e-test-subagent-for-claude-code-203ea157 Author: Skill Factory