Help us improve
Share bugs, ideas, or general feedback.
From build-web-apps
Use when testing, debugging, or making targeted improvements to rendered frontend apps through the Build Web Apps or web dev plugin: local dev servers, UI regressions, interaction bugs, console errors, responsive layout, and visual QA. Check whether the Browser plugin is available and use it first when it is; otherwise use regular Playwright with the recorded reason.
npx claudepluginhub robinebers/converted-plugins --plugin build-web-appsHow this skill is triggered — by the user, by Claude, or both
Slash command
/build-web-apps:frontend-testing-debuggingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill should work from normal user prompts. Do not require the user to spell out Browser routing, screenshots, report shape, or fallback policy.
Translates PRD intent, roadmap items, or product discussions into implementation-ready capability plans exposing constraints, invariants, interfaces, and unresolved decisions before multi-service work.
Share bugs, ideas, or general feedback.
This skill should work from normal user prompts. Do not require the user to spell out Browser routing, screenshots, report shape, or fallback policy.
Use this skill when the user asks to use the Build Web Apps plugin, web dev plugin, frontend dev plugin, or frontend testing/debugging skill for a rendered frontend change, test, or bug investigation.
Examples that should trigger this full workflow:
please make an improvement to the web dashboard transaction search area and use the web dev pluginuse the frontend dev plugin to polish this dashboarddebug this UI with the Build Web Apps plugintest this localhost app and fix the broken interactionFrom a brief prompt, infer the target surface from the repo, currently open app/browser URL, nearby files, or running dev server. If the target URL is unclear, inspect the repo scripts and running local ports before asking the user.
For any code change to a rendered frontend surface, do the validation loop by default:
First classify Browser availability:
browser skill are listed in the session. Read and follow that skill before any browser action.browser skill is not listed. Use regular Playwright and record Browser plugin not available.Do not use regular Playwright, external Chrome, or shell open first when Browser is available.
Only switch from a failed Browser invocation to regular Playwright if the user already allowed fallback or the task explicitly permits non-Browser validation. In that case, report the exact Browser failure and the fallback decision.
Before browser validation, define the target flow in one sentence:
The flow under test is: [entry route] -> [user action or state] -> [expected rendered result].
If the user asked for general smoke testing, use:
The flow under test is: app loads -> first meaningful screen renders -> primary visible controls respond without runtime errors.
Run Browser commands through the Node REPL JavaScript tool described by the Browser skill. Do not invent a separate browser setup path. Keep using the same tab binding unless the Browser skill says otherwise.
Required sequence:
agent.browser.nameSession("...").agent.browser.tabs.selected() or agent.browser.tabs.new().tab.goto(url).tab.playwright locators or Browser skill interaction APIs.await tab.reload(), then repeat the checks and the failing interaction.For each UI-changing action, collect the cheapest proof that the next state is correct: fresh DOM snapshot, visible text/state, URL change, focused control, toast, modal, screenshot, or console log.
Run these checks before claiming the rendered app works:
await tab.url() and await tab.title() match the intended page.await tab.playwright.domSnapshot() contains meaningful app content, not an empty shell.await tab.dev.logs({ levels: ["error", "warn"], limit: 50 }) has no relevant app errors, or each relevant error is explained.await display(await tab.playwright.screenshot({ fullPage: false })) supports visual claims.For visual work, add desktop plus one mobile-sized viewport when practical. For reference-driven work, keep a short mismatch ledger: reference evidence, rendered evidence, fix or intentional deviation.
Use this branch when Browser is not available, or when the user has allowed fallback after a Browser invocation failure.
Use this order:
package.json.pnpm exec playwright test or the package-manager equivalent when Playwright is configured.pnpm exec playwright --version, then capture a screenshot with pnpm exec playwright screenshot <url> /tmp/frontend-check.png.Do not install new browser dependencies unless the task requires it and the user has allowed dependency changes.
For any non-trivial rendered UI validation run, write the final response like a QA engineer verifying a code change. The response should make it easy for the user or PR reviewer to understand what changed, what was tested, what evidence proves it, and what remains untested.
Use this shape:
If issues were found, lead with Findings before the summary. Each finding should include what the user sees, reproduction steps, screenshot/DOM/console evidence, likely owner or file when known, and the fix made or remaining blocker.
When using Browser screenshots that should be shown to the user, emit or display the screenshot through the Browser runtime so it can be referenced in chat. When using Playwright screenshots, save them outside the repo and reference them in chat. Include multiple screenshots when they help verify distinct states or flows.
Do not interleave screenshots throughout the written report. Put a short Screenshots section at the very end, and make it a consecutive image gallery with one image per line. Add short labels only when they clarify the state, for example Before, After, Filtered results, Empty state, or Mobile.
Do not create separate HTML reports by default. Only create a standalone report file when the user explicitly asks for one, and write it outside the repo unless the user explicitly asks for committed artifacts.
Do not write reports, screenshots, traces, or temporary scripts into the repo unless the user explicitly asks for committed artifacts.
frontend-app-builder when the task is design creation, redesign, or fidelity to an accepted concept.react-best-practices after meaningful React/Next.js component edits.frontend-app-builder is already driving a concept-to-implementation fidelity loop.Use the QA final response report format above. Keep it concise, but include enough concrete evidence that a PR reviewer can trust the validation without rerunning it immediately.
If Browser was absent and Playwright was used, end by suggesting that the user install the Browser plugin for a better frontend development experience with in-app navigation, screenshots, DOM snapshots, console logs, and interaction validation.