一键导入
trust-but-verify
Use when a feature branch has been implemented and you need to verify the UI/UX and functionality match the original plan before merging
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when a feature branch has been implemented and you need to verify the UI/UX and functionality match the original plan before merging
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Retrieve defensible customer-voice evidence from BuildBetter MCP. Use when researching customer complaints, objections, praise, feature requests, needs, themes, exact quotes, account feedback, or changes over time, especially when direct external statements must be separated from internal commentary and supported with traceable signal or call evidence.
Use when you need to map the application's routes, pages, and components, build reusable Playwright playbooks, or perform a UI/UX audit across the application
Research BuildBetter data accurately through BuildBetter MCP. Use for open-ended questions about customer evidence, signals, calls, transcripts, people, companies, documents, knowledge pages, Projects Hub, or triage, and whenever an agent must choose reliable BuildBetter MCP read tools and return traceable evidence.
Use when working with BuildBetter's MCP server, bb CLI, Claude Code hooks, product-signal context, or preparing the BuildBetter Claude plugin for marketplace submission.
Use when working with BuildBetter's MCP server, bb CLI, Codex hooks, product-signal context, or preparing the BuildBetter Codex plugin for local sharing or submission.
Use when you need to map the application's routes, pages, and components, build reusable Playwright playbooks, or perform a UI/UX audit across the application
| name | trust-but-verify |
| description | Use when a feature branch has been implemented and you need to verify the UI/UX and functionality match the original plan before merging |
| allowed-tools | Bash, Read, Write, Glob, Grep, Agent, mcp__playwright__* |
Verify that a feature implementation actually matches its plan by testing it in a real browser.
Core principle: Plans describe intent. Code describes implementation. Only the browser shows reality. This skill bridges all three — reading the plan, analyzing the diff, and verifying the result in a live browser.
docs/plans/ for the current worksuperpowers:finishing-a-development-branchNot for: Backend-only changes, API-only work, or branches without a plan.
digraph trust_but_verify {
"Phase 1:\nGather Context\n(subagent)" [shape=box];
"Phase 2:\nPreflight Check\n(main)" [shape=box];
"Phase 3:\nBrowser Verification\n(main + MCP)" [shape=box];
"Phase 4:\nReport\n(subagent)" [shape=box];
"Print summary\n+ link to report" [shape=doublecircle];
"Phase 1:\nGather Context\n(subagent)" -> "Phase 2:\nPreflight Check\n(main)";
"Phase 2:\nPreflight Check\n(main)" -> "Phase 3:\nBrowser Verification\n(main + MCP)";
"Phase 3:\nBrowser Verification\n(main + MCP)" -> "Phase 4:\nReport\n(subagent)";
"Phase 4:\nReport\n(subagent)" -> "Print summary\n+ link to report";
}
Before starting, check if ~/.claude/skills/app-navigator/app-map.md exists.
If it does NOT exist:
"I notice the app hasn't been mapped yet. Running
/app-navigator setupfirst will map all your routes, build login playbooks, and document UI patterns — which makes verification much faster and more accurate.Would you like to run
/app-navigator setupfirst, or proceed without it?"
If the user says yes, invoke the app-navigator skill. When it completes, continue to Phase 1. If the user says no, proceed without it — Phase 1 will derive pages from the plan and diff only.
If it exists: proceed to Phase 1.
Dispatch a subagent (type: general-purpose) with the prompt template from ./analysis-prompt.md.
The subagent reads:
docs/plans/ (find the most recent plan matching the branch name or topic)git diff main...HEAD to see what files changedgh pr view to get PR description (if a PR exists)~/.claude/skills/app-navigator/app-map.md (if it exists)~/.claude/skills/app-navigator/playbooks/ (if they exist)The subagent returns a verification checklist — a structured markdown document listing:
App URL: Read ~/.claude/projects/<project>/memory/reference_local_auth.md.
http://localhost:5173), save itDev server: Check if the app is reachable:
curl -s -o /dev/null -w "%{http_code}" <App URL> 2>/dev/null || echo "unreachable"
If unreachable:
"The dev server at isn't reachable. You'll need to start it. Want me to start it, or will you handle it?"
Setup: Create the verification output directory:
mkdir -p docs/verification
Gate: Do not proceed to Phase 3 until the server is confirmed reachable.
Initial Load & Authentication:
mcp__playwright__browser_navigatemcp__playwright__browser_snapshot to see what's on screenreference_local_auth.md for future runs with owner-only permissions (chmod 600).reference_local_auth.md has saved credentials and the saved App URL matches the current local/test target, use them automatically. Only ask the user again if they fail.For each checklist item:
Navigate to the target page
mcp__playwright__browser_navigate with the full URLmcp__playwright__browser_wait_for with text set to a known element on the target pageVerify elements
mcp__playwright__browser_snapshot to get the page structureHappy path interactions
mcp__playwright__browser_click, browser_fill_form, browser_type, browser_select_option as neededbrowser_snapshot to verify the expected outcomeEdge cases and error states
Responsive checks (only for pages that changed in the diff)
mcp__playwright__browser_resize to 1440x900 (desktop) -- screenshotmcp__playwright__browser_resize to 768x1024 (tablet) -- screenshotmcp__playwright__browser_resize to 375x812 (mobile) -- screenshotmcp__playwright__browser_resize to 1440x900 (reset to desktop before next item)Screenshots
mcp__playwright__browser_take_screenshot at key statesdocs/verification/screenshots/<branch>/ with naming: <page-slug>-<state>-<viewport>.pngmkdir -p docs/verification/screenshots/<branch>
Session handling
Collect all results as structured markdown to pass to Phase 4.
Dispatch a subagent (type: general-purpose) with the prompt template from ./report-prompt.md.
Pass the subagent:
The subagent writes the full report to docs/verification/YYYY-MM-DD-<branch-slug>.md (where <branch-slug> is the branch name with / replaced by -) and returns a concise summary.
Print the summary in conversation. Include:
Cleanup: Close the browser session with mcp__playwright__browser_close.
The full report follows this structure:
# Verification Report: <branch-name>
**Date:** YYYY-MM-DD
**Plan:** <link to ExecPlan>
**PR:** <link if exists>
**Branch:** <branch> (N commits ahead of main)
## Summary
- X items verified and working
- X concerns noted
- X mismatches or failures
- X out-of-scope observations
## Detailed Findings
### Working as Expected
| Feature | Page | What was verified | Screenshot |
|---------|------|-------------------|------------|
### Mismatches / Broken
| Feature | Expected (from plan) | Actual | Severity | Screenshot |
|---------|---------------------|--------|----------|------------|
### Concerns
| Feature | Issue | Suggestion | Screenshot |
|---------|-------|------------|------------|
### Out of Scope
| Observation | Where | Notes |
|-------------|-------|-------|
## Edge Cases & Error States Tested
| Scenario | Result | Notes |
|----------|--------|-------|
## Responsive Checks
| Page | Desktop | Tablet | Mobile | Notes |
|------|---------|--------|--------|-------|
reference_local_auth.md in project memory after first successful login.