skills/qa-flow-report/SKILL.md
Drive a UI flow with chrome-devtools, capture a screenshot per step, then render a self-contained HTML report (report.html) showing each step with status pills, full console log, and full network log per step. Use when: (1) User asks to "QA this flow", "walk through X with screenshots", "verify [feature] end-to-end with a report" (2) User wants screenshot-backed evidence that a multi-step UI flow worked (3) User wants a single artifact they can attach to a PR or share as proof of a manual walkthrough Do NOT use for one-off "open this page and check console", for automated regression testing (a Playwright/Cypress suite is the right tool), or for single-screenshot bug repros. Triggers: "QA this flow", "qa flow report", "walk through X with screenshots", "verify end-to-end with a report", "screenshot-backed evidence", "manual QA report"
npx skillsauth add silvabyte/skills qa-flow-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a screenshot-backed HTML report from a manual UI walkthrough driven through chrome-devtools MCP tools. The output is a single report.html next to its screenshots/ and manifest.json, openable in a browser, and suitable to attach to a PR as evidence.
This skill is intentionally ad-hoc visual evidence. It complements — does not replace — an automated test suite (Playwright, Cypress, Storybook interactions, etc.). Use the automated suite to assert behavior in CI; use this skill to produce a one-off human-readable artifact that a flow works end-to-end.
Before driving the flow:
CLAUDE.md, check it for known dev-server ports, fixture URLs, and any query-param shortcuts before guessing.mcp__chrome-devtools__* tools are deferred — call ToolSearch with query: "select:mcp__chrome-devtools__navigate_page,mcp__chrome-devtools__take_screenshot,mcp__chrome-devtools__take_snapshot,mcp__chrome-devtools__click,mcp__chrome-devtools__fill,mcp__chrome-devtools__wait_for,mcp__chrome-devtools__list_console_messages,mcp__chrome-devtools__list_network_requests,mcp__chrome-devtools__resize_page,mcp__chrome-devtools__new_page" to load schemas. Add others (hover, press_key, evaluate_script, handle_dialog, fill_form, select_page) as the flow requires.tmp/qa-reports/<slug>-<timestamp>/ at the repo root. Verify tmp/ is gitignored before writing there. If it isn't, surface that as a separate fix and ask the user where to put the artifact instead of silently editing .gitignore.Before driving, write down the steps as a numbered list (e.g. "1. land on /signin, 2. enter email, 3. submit code, 4. expect dashboard, 5. open settings"). Mirror them in TaskCreate so progress shows in the UI.
signin-email-code, cart-checkout-stripe, search-filter-radius).YYYY-MM-DD-HHmm in local time.tmp/qa-reports/<slug>-<timestamp>/ at the repo root.screenshots/. The manifest.json and report.html will land at the dir root.Decide based on what's being QA'd:
resize_page to 390x844 (iPhone 14 baseline) before the first action.820x1180 (iPad baseline) is a reasonable default.1440x900 if you want a consistent shape across runs.Record the chosen viewport in the manifest.
For each planned step:
mcp__chrome-devtools__* tool (navigate_page, click, fill, hover, etc.).mcp__chrome-devtools__wait_for against an expected selector or text, or evaluate_script to poll for a condition. Don't screenshot during a load spinner.take_screenshot and save the PNG to tmp/qa-reports/<slug>-<ts>/screenshots/NN-kebab-step-name.png. NN is zero-padded (01, 02, ...).list_console_messages and list_network_requests to grab the full state since the previous step. Record everything (see Noise capture)."pass" — observed matched expected."fail" — observed did not match expected. Take the screenshot anyway; describe the discrepancy in notes. Continue subsequent steps unless the failure makes them impossible."note" — neither pass nor fail — informational checkpoint (e.g. "captured intermediate animation state", "second device shape").Run from the repo root (or wherever you placed the output dir — the path can be absolute or relative):
bun <path-to-skill>/scripts/render-qa-flow-report.ts tmp/qa-reports/<slug>-<ts>
When installed via npx skills add silvabyte/skills, the script will be at .claude/skills/qa-flow-report/scripts/render-qa-flow-report.ts.
The script prints the absolute path to the generated report.html on success, or a clear error message and non-zero exit on failure (missing manifest, malformed JSON, missing template).
Print the absolute report.html path in your final response so the user can open it. Briefly summarize pass/fail counts and any notable console errors / network failures.
Write <output-dir>/manifest.json exactly in this shape. The render script tolerates missing summary (it computes counts from the steps), missing console/network (treats as empty), and missing screenshot (renders a placeholder).
{
"title": "Signin email-code flow QA",
"url": "http://localhost:3000/signin",
"startedAt": "2026-05-14T14:30:00Z",
"viewport": { "width": 390, "height": 844 },
"steps": [
{
"n": 1,
"name": "Landing on /signin",
"screenshot": "screenshots/01-landing.png",
"status": "pass",
"notes": "Email input focused, submit disabled until valid",
"console": [
{ "level": "log", "text": "[auth] session resolved: null" }
],
"network": [
{ "method": "GET", "url": "/api/csrf", "status": 200 }
]
}
]
}
Field notes:
console[].level: log | info | warn | error | debug — match what list_console_messages returns.network[].status: HTTP status code; 0 or missing renders as a failure.screenshot: relative path from the manifest, always screenshots/NN-kebab.png.Capture all console messages and all network requests per step — not just errors. Chatty-app noise is acceptable; missing a deprecation warning or a 304 that should've been a 200 isn't. The report tucks full lists behind collapsibles per step (and a global appendix) so the default view stays scannable while raw data is one click away.
Before driving an unfamiliar UI, check the project's CLAUDE.md (and any nested **/CLAUDE.md) for:
localhost:3000 if the project uses 5173, 8080, etc.?devLoc=…, ?flag=…, ?lang=… for reproducibility.If the project lacks a CLAUDE.md, ask the user for these details before starting rather than blundering through reset states or auth dead-ends.
skills/qa-flow-report/
├── SKILL.md
├── assets/
│ └── qa-flow-report-template.html
└── scripts/
└── render-qa-flow-report.ts
Output for one run:
tmp/qa-reports/<slug>-<YYYY-MM-DD-HHmm>/
├── manifest.json
├── screenshots/
│ ├── 01-landing.png
│ ├── 02-open-filters.png
│ └── ...
└── report.html ← generated by render-qa-flow-report.ts
tools
Weekend Business Shared Drive: Browse, search, upload, and manage files. Triggers: 'weekend business drive', 'wb drive', 'upload to brand', 'shared drive', 'WB shared drive', 'list WB files', 'find in drive'
documentation
--- name: unglaze description: Rewrite glazy, eye-glazing generated content into a tight, scannable, bullet-tight engineering voice. Use when the user says "unglaze", "ungloss this", "punch this up", "tighten this", "less glazy", "eyes glaze", "make my eyes not glaze", "cut the fluff", "rewrite punchier", "make it sharper", "less corporate", "de-fluff", "less LLM-flavored". Also auto-triggers on dissatisfaction signals like "ugh too long", "tldr this", "this is boring", "too much". Applies to PR
content-media
Transcribe audio and video files using Audetic whisper service. Use when: (1) User wants to transcribe an audio or video file (2) User has a recording and needs a text transcript (3) User wants transcript analysis (gaps, speech rate, silence detection) (4) User wants to transcribe all media files in a directory Triggers: "transcribe", "transcription", "transcript", "speech to text", "audio to text", "transcribe audio", "transcribe video", "transcribe recording"
development
Testing Trophy philosophy for JS/TS. Use when: writing tests, deciding what/how to test, reviewing tests, choosing unit/integration/E2E, mocking decisions. Triggers: "write tests", "what should I test", "test this component", "review my tests", "testing strategy", "mock this", "test setup".