Agent skill

Browser QA

by VKirill in VKirill/claude-lane-stack

Live browser QA + Playwright-compatible replay. An agent skill from VKirill/claude-lane-stack.

MITAuto-check passedTesting & QA

Install Browser QA

skills CLI
$ npx skills add VKirill/claude-lane-stack --skill browser-qa -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install VKirill/claude-lane-stack browser-qa --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/lane-stack/skills/browser-qa .claude/skills/browser-qa && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
browser-qa
GitHub stars
122
Token cost
~2.1k tokens
SKILL.md length
997 words
Files
5 (incl. references)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Live browser QA + Playwright-compatible replay. An agent skill from VKirill/claude-lane-stack.

  • Works in 10 steps: Write the script before the first click.… → If mechanics were clarified after the… → Record script_digest as proven only… → …
  • (terminal Lane Stack): проверь в браузере
  • SKILL.md covers Info, Layout, Cases and Bindings, plus 5 more sections
  • Runs JavaScript scripts from its folder; calls git and npx

What it does

Browser QA is an agent skill from VKirill/claude-lane-stack. Live browser QA + Playwright-compatible replay. Disk .agents/qa/. Use when (terminal Lane Stack): проверь в браузере, кликни сценарий, вёрстка 375, screenshot QA. SKIP: Lane Pilot chats (PM calls lanepilotbrowserqa); DESIGN.md taste (design-lead); product Vue/CSS (writer lane); L0/L1 unit/API (lane-contract).

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/REPORT.md`, `references/TC.js` and `references/cases.md`).

It sits in Testing & QA, covering Design tokens and Browser testing. It works with Playwright and Vue.js. The repository describes itself as: Multi-agent AI coding factory for one person — Claude Code PM + Codex/Qwen/Grok/Kimi/AGY writers, durable conveyor, auto-merge to main. The licence is MIT.

When your agent uses it

  • (terminal Lane Stack): проверь в браузере
  • Кликни сценарий

Example prompts

  • “/browser-qa”

Requirements

  • Node.js

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. Write the script before the first click. That first execution is the proof. Do not auto-run a new/updated script a second time.
  2. If mechanics were clarified after the observed run and the file changed, mark unproven. Repeat only after preconditions restored. Stateful…
  3. Record script_digest as proven only after that exact file executed. Until then: n/a, proof unproven.
  4. Before repair/rebind: cp to replay/history/TC-00N-.js. Keep the first error in REPORT. Never run history.
  5. Missing selector = product fail until the same control and behavior are proven in-browser and only the locator changed. Do not pick a…
  6. Target mismatch → stop. Rebind changes script_digest and needs a new proof. Never treat a staging script as matching localhost.
  7. After HEAD/tree change: replay every matching script (old pass and fail). Capability and side-effect rules still apply.
  8. proven means the script ran, not that the product passed.
  9. Discrete chrome-devtools actions: treat the file as the program; do not rewrite steps because the surface is MCP not npx playwright.
  10. After replay, at most one bounded exploratory pass when the change is cross-cutting (nav, auth, layout, shared state) or a replay needed…

What it can do on your machine

Read from SKILL.md and the folder at commit 45fa19e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Browser QA loads about 2.1k tokens when it runs, and up to ~2.8k if it reads all its reference files. Until then it costs about 82 tokens; SKILL.md has 997 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from VKirill/claude-lane-stack at commit 45fa19e, republished under its MIT licence (© VKirill). 997 words, ~2,108 tokens.

Download SKILL.mdSave it as .claude/skills/browser-qa/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
browser-qa
description
Live browser QA + Playwright-compatible replay. Disk .agents/qa/. Use when (terminal Lane Stack): проверь в браузере, кликни сценарий, вёрстка 375, screenshot QA. SKIP: Lane Pilot chats (PM calls `lane_pilot_browser_qa`); DESIGN.md taste (design-lead); product Vue/CSS (writer lane); L0/L1 unit/API (lane-contract).
argument-hint
[info]

Browser QA

Adapted from lee-to/ai-factory#154 replay rules. Paths and gates are lane-stack. No .ai-factory, no human «работает или нет».

Inside a Lane Pilot chat (LANE_PILOT_AGENT_TYPE set / tools lane_pilot_* present) do not run this file's replay and digest procedure. The PM checks an accepted task with lane_pilot_browser_qa; the check runs in a child thread through bb browser-automation (no MCP browser) and ends with the one fenced JSON verdict its prompt asks for, changing no files. .agents/qa/ replay, qa-digest, chrome-qa, browser-qa-jev and chrome-devtools below are the terminal harness. The PM does not click in its own chat.

Info

If $ARGUMENTS is exactly info, print references/info.md verbatim (Russian), then stop.

Layout

text
.agents/qa/context.md          # cross-run, non-secret
.agents/qa/<slug>/
  cases.md                     # source of truth for TC-*
  REPORT.md                    # execution only; never overwrite cases
  shots/
  replay/TC-00N.js
  replay/history/

Copy structure from references/ next to this skill. English on disk. Chat may be Russian. Redact tokens, cookies, OTP, password, jwt → [REDACTED].

Cases

PM / SPEC acceptance → cases.md. One ## TC-00N heading per case (see references/cases.md). Fields: Surface, Priority, Viewport, Preconditions, Steps, Expected.

SurfaceThis agent
browser-uiRequired. Live browser. Replay first.
cli / backend-test / apiDo not click. Note blocked: use L0/L1. No human array-checking.
humanLeave pending. The PM asks the operator.

Default viewports if omitted: 375 768 1280.

Bindings

bash
qa-digest cases .agents/qa/<slug>/cases.md
qa-digest script .agents/qa/<slug>/replay/TC-001.js
qa-digest target local 'http://127.0.0.1:5173/'
git -C . rev-parse HEAD

tree is clean if git status --porcelain has nothing except .agents/qa/; else dirty.

target_fingerprint input is QA TARGET\n<class>\n<normalized_base_url>\n. Normalize: drop userinfo, query, fragment; keep scheme/host/port/base path; strip trailing slash except origin /. Class: local | staging | preview | production | unknown.

Matching replay = embedded case_digest + embedded target_fingerprint + file script_digest all equal REPORT's last proven values.

Stale (uncheck, keep old evidence, do not count as current):

  • HEAD or tree changed → all results stale; scripts stay reusable if matching
  • cases.md source_digest changed → stale only cases whose case_digest changed
  • new TC → pending; removed TC → Stale / removed
  • script bytes ≠ recorded script digest → that case stale, needs proof run
  • missing digest metadata → unproven, not matching

Replay (PR #154)

One case → replay/TC-00N.js. Smallest async (page) => { … }. No imports, no new npm deps. Navigation uses the literal "BASE_URL" placeholder. At run time substitute normalized_base_url in memory; do not rewrite the file just to inject the host.

js
// case_digest: <from qa-digest cases>
// target_fingerprint: <from qa-digest target>
async (page) => { /* goto("BASE_URL"+"/…"); asserts throw */ };
  1. Write the script before the first click. That first execution is the proof. Do not auto-run a new/updated script a second time.
  2. If mechanics were clarified after the observed run and the file changed, mark unproven. Repeat only after preconditions restored. Stateful (submit, pay, delete, email, permissions) needs a fresh go-ahead that says this is a repeat.
  3. Record script_digest as proven only after that exact file executed. Until then: n/a, proof unproven.
  4. Before repair/rebind: cp to replay/history/TC-00N-<old_script_digest>.js. Keep the first error in REPORT. Never run history.
  5. Missing selector = product fail until the same control and behavior are proven in-browser and only the locator changed. Do not pick a similar element. Syntax/runner errors may be repaired (new proof). Assertion mismatch = fail, not a reason to regenerate the script.
  6. Target mismatch → stop. Rebind changes script_digest and needs a new proof. Never treat a staging script as matching localhost.
  7. After HEAD/tree change: replay every matching script (old pass and fail). Capability and side-effect rules still apply.
  8. proven means the script ran, not that the product passed.
  9. Discrete chrome-devtools actions: treat the file as the program; do not rewrite steps because the surface is MCP not npx playwright.
  10. After replay, at most one bounded exploratory pass when the change is cross-cutting (nav, auth, layout, shared state) or a replay needed repair. Skip when the fix is narrow and matching replay already covers it. New bug → REPORT only; add ## TC-00N first, then a script.
Show full SKILL.md (417 more words)Show less

Delegation (stages.browser_qa)

providerWho clicksCommand
jev (default)CDP snapshot → Jev Choice (click/type/done). backend = chrome-qa | live-chrome | headlessbrowser-qa-jev --project-cwd . --url … --slug … --case "…"
codexCodex gpt-6-astra / low + browser pluginsbrowser-qa-codex --project-cwd . --url … --slug … --case "…"
claudethis agent via chrome-devtools MCPsteps below

browser-qa-jev writes cases.md, REPORT.md, shots/, jev-run.json. browser-qa-codex writes codex-run.json / codex-result.json. Replay scripts are not produced in jev/codex mode; receipt + shots are the proof.

Preflight

  1. Read .agents/qa/context.md if present (routes, how to start the app, test-user role). No secrets.
  2. Live browser: host-level chrome-devtools MCP (mcp__chrome-devtools__*: list_pages, new_page, navigate_page, take_snapshot, take_screenshot), else MetaMCP chrome-devtools, else existing project Playwright. If the MCP reports no browser, run chrome-qa start (dedicated profile, fixed port, no consent dialog) and retry once. No new dependency. None → every browser-ui case blocked. Do not write pass. WebFetch is not a browser. Attached to the user's real Chrome (macOS --autoConnect, or --browserUrl): the server exposes every open tab. Create your own page with new_page, act only in pages you created, never snapshot, navigate or close other tabs, close yours when done, and prefer a dedicated QA profile for sensitive sites.
  3. production or unknown, or any side-effect case: do not run until the PM wrote authorized in the spawn prompt. Deny → blocked.
  4. Auth: reuse a safe local fixture from context/docs. Never store prod/personal passwords, cookies, OTP. Disposable local users only if the repo already has a seed command.

Run

  1. cd project root. Slug from PM or qa-<YYYYMMDD-HHMM>.
  2. Write or refresh cases.md from SPEC/acceptance. Do not invent URLs.
  3. qa-digest cases + qa-digest target. If REPORT exists, apply stale rules before changing statuses.
  4. Create REPORT from references/REPORT.md when missing. All new cases start pending.
  5. Each browser-ui case: matching replay first; else write script, run once, shots shots/TC-00N-<w>.png.
  6. Supporting L0/L1 commands may be listed; they do not count as extra TC results.
  7. Last line to PM: DONE .agents/qa/<slug>/REPORT.md plus fail list and 3–5 shots.

NEVER (each with its alternative)

  • Product Vue/TS/CSS and docs/DESIGN.md are not yours: report the defect in REPORT and leave the file.
  • A browser-ui case is pass only after a live browser run of that case; without a live browser it is blocked.
  • Work only in cases from cases.md; for anything else add a ## TC-00N first. This is the Playwright-replay harness, so no Human mode, .ai-factory or /aif-qa.
  • Credentials stay out of files, and the preview host stays out of scripts (BASE_URL placeholder).
  • Cleanup is read-only for shared state: no rm, git reset or shared DB wipe.

© VKirill, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in plugins/lane-stack/skills/browser-qa of VKirill/claude-lane-stack.

  • SKILL.md
  • references/REPORT.md
  • references/TC.js
  • references/cases.md
  • references/info.md

Open the folder on GitHubat commit 45fa19e

Compare with similar skills

Browser QA next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Browser QA compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Browser QA this skillVKirill/claude-lane-stack122—~2.1kAutomated safety check: PassMIT
Verify Debbie Codesdebs-obrien/debbie.codes142—~1.9kAutomated safety check: PassNone
Playwright Component Testingmellowagain/gitarena1151 repos~2.6kAutomated safety check: PassMIT
Site Bugfixdebs-obrien/debbie.codes142—~960Automated safety check: PassNone
Chamilo Feature Test Authorchamilo/chamilo-lms1k—~3.6kAutomated safety check: PassGPL-3.0
Writing Playwright TestsComfy-Org/ComfyUI_frontend2.1k—~2.3kAutomated safety check: PassGPL-3.0

Similar skills

  • Verify Debbie Codes

    debs-obrien/debbie.codes

    Drive the live debbie.codes Nuxt site (web UI) the way a user does via Playwright — launch the dev server, doctor health, exercise mapped features, capture screenshots/ARIA evidence, and clean up.

    142 GitHub stars~1.9k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Playwright Component Testing

    mellowagain/gitarena

    Set up component testing with Playwright using a story gallery — scaffold stories and a gallery dev page driven by the built-in mount fixture, no dedicated component-testing runtime.

    115 GitHub starsUsed in 1 repo~2.6k tokens
    Testing & QAAuto-check passed
  • Site Bugfix

    debs-obrien/debbie.codes

    Reproduce and fix a debbie.codes site bug with browser proof and a Playwright regression when useful.

    142 GitHub stars~960 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Chamilo Feature Test Author

    chamilo/chamilo-lms

    Turns a plain-language Chamilo feature description into a Playwright and Gherkin test suite confirmed against the live app, not just the source code.

    1k GitHub stars~3.6k tokensUpdated today
    Testing & QAAuto-check passed
  • Writing Playwright Tests

    Comfy-Org/ComfyUI_frontend

    Writes Playwright e2e tests for ComfyUIfrontend. An agent skill from Comfy-Org/ComfyUI_frontend.

    2.1k GitHub stars~2.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Awt E2E Testing

    sickn33/agentic-awesome-skills

    AI-powered E2E web testing — eyes and hands for AI coding tools.

    47k GitHub starsUsed in 2 repos~556 tokens
    Testing & QAAuto-check passed

More from VKirill/claude-lane-stack

All 49 skills in this repo
  • UI UX Pro Max

    VKirill/claude-lane-stack

    Lane-stack design + brand intelligence (vendored ui-ux-pro-max).

    122 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • App Architect

    VKirill/claude-lane-stack

    Owner-facing architect for a new app or service. An agent skill from VKirill/claude-lane-stack.

    122 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Copy Project Life

    VKirill/claude-lane-stack

    Карта файлов копирайта в .agents/copy/: шаблоны, статусы, цепочка audience→headlines→ux.

    122 GitHub stars~534 tokensUpdated today
    Auto-check passed
  • Copy Research

    VKirill/claude-lane-stack

    Dispatch copy-lead helpers: Tavily, Codex luna/terra, grok/X, OpenCode DeepSeek, Cursor Grok 4.6 medium-fast.

    122 GitHub stars~827 tokensUpdated today
    Auto-check passed
  • Docs Maintain

    VKirill/claude-lane-stack

    Keep living docs/ honest after code changes. An agent skill from VKirill/claude-lane-stack.

    122 GitHub stars~459 tokensUpdated today
    Auto-check passed
  • Google Tag Manager

    VKirill/claude-lane-stack

    [RU: gtm, тег менеджер, google tag manager, контейнер, теги, триггеры, переменные, публикация версии, откат] GTM API v2 full read + write — Account/Container/Workspace hierarchy…

    122 GitHub stars~3.1k tokensUpdated today
    Auto-check passed

Questions about Browser QA

What does Browser QA do?

Live browser QA + Playwright-compatible replay. An agent skill from VKirill/claude-lane-stack. Browser QA is an agent skill from VKirill/claude-lane-stack. Live browser QA + Playwright-compatible replay.

When should I use Browser QA?

Browser QA fits situations like: (terminal Lane Stack): проверь в браузере; Кликни сценарий.

How do I install Browser QA in Claude Code?

Run `npx skills add VKirill/claude-lane-stack --skill browser-qa -a claude-code`. Or copy the skill folder (plugins/lane-stack/skills/browser-qa in VKirill/claude-lane-stack) into .claude/skills/browser-qa in your project. Claude Code loads it when a task matches its description.

How do I install Browser QA in Codex?

Run `npx skills add VKirill/claude-lane-stack --skill browser-qa -a codex`. Or copy the skill folder (plugins/lane-stack/skills/browser-qa in VKirill/claude-lane-stack) into .agents/skills/browser-qa in your project. Codex loads it when a task matches its description.

Can I use Browser QA in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add VKirill/claude-lane-stack --skill browser-qa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/browser-qa, .gemini/skills/browser-qa, .github/skills/browser-qa and .opencode/skills/browser-qa in your project.

What does Browser QA need to run?

Going by SKILL.md and its folder, Browser QA needs JavaScript for the scripts in its folder and the command-line tools its instructions call (git and npx). Our summary lists: Node.js.

Does Browser QA access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Browser QA safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Browser QA use?

Browser QA is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Browser QA use?

About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 709 tokens, read only when the agent opens those files.

What are the alternatives to Browser QA?

Skills that share tags, products or a category with Browser QA: Verify Debbie Codes (debs-obrien/debbie.codes, 142 stars), Playwright Component Testing (mellowagain/gitarena, 115 stars), Site Bugfix (debs-obrien/debbie.codes, 142 stars) and Chamilo Feature Test Author (chamilo/chamilo-lms, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Browser QA?

VKirill (a GitHub user) maintains it in VKirill/claude-lane-stack, which has 122 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 9, 2026.

Source: VKirill/claude-lane-stack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.