Skip to content
Back to skills

Qa

CSecurity

Run on-demand agent-driven browser QA journeys defined as markdown in docs/qa/journeys/. Headless by default; supports a noVNC manual handoff for login/OAuth/takeover steps. Use when the user says /qa, "qa run <name>", "qa init", "qa list", "run the QA journey", or asks to QA a web flow end-to-end on this VPS. Also use PROACTIVELY (without being asked) whenever a WIP task changes a webapp's UI, routing, forms, rendering, or a user flow and a runnable URL exists (local dev server, staging, or ...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
ai-agentsnode

Works with

  • mcp

Security analysis

C67/100
  • mediumUses curl or wget to download content
  • criticalModifies startup scripts or system services for persistence

Pro scans all 7 files and shows the line behind each finding

Scanned September 26, 2026

npx -y skills add alhe99/mows-harness --skill qa --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Qa?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Qa
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/alhe99-mows-harness/badge)](https://www.skillsdirectory.com/skills/alhe99-mows-harness)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: qa
description: Run on-demand agent-driven browser QA journeys defined as markdown in docs/qa/journeys/. Headless by default; supports a noVNC manual handoff for login/OAuth/takeover steps. Use when the user says /qa, "qa run <name>", "qa init", "qa list", "run the QA journey", or asks to QA a web flow end-to-end on this VPS. Also use PROACTIVELY (without being asked) whenever a WIP task changes a webapp's UI, routing, forms, rendering, or a user flow and a runnable URL exists (local dev server, staging, or prod read-only) — verify in a real browser via a journey before reporting the work done, and to reproduce visual/flow bug reports before fixing them.
---

# Browser QA Journeys

On-demand end-to-end web QA. Works in any project. You (the agent) drive a real
browser via the chrome-devtools / playwright MCP servers and write a report. Discipline:
**observe, don't theorize** — back every assertion with a screenshot, a network request, or a
real status read, never a UI checkmark.

## Verbs

- `/qa list` — list `./docs/qa/journeys/*.md`.
- `/qa init` — scaffold into the current project: create `docs/qa/journeys/`, copy this skill's
  `templates/journey.template.md` → `docs/qa/journeys/example.md`, and
  `templates/cookbook.skeleton.md` → `docs/qa/cookbook.md`. Tell the user to fill the
  auth-recipe / selector slots.
- `/qa run <name>` — execute `docs/qa/journeys/<name>.md` (protocol below).

## `/qa run` protocol

1. Read the journey; parse frontmatter `mode` (headless|watched, default headless), `target`,
   optional `driver` (default chrome-devtools).
2. Resolve `target` → URLs + auth from the project: read `docs/qa/qa.env` if present, else use
   the script the journey names (e.g. `infra/qa/get-token.sh`). NEVER write to prod Firestore.
3. **Headroom guard (headless only):** run `~/.claude/skills/qa/qa-precheck.sh 2`. If it exits
   non-zero (BUSY/LOWMEM), tell the user and wait — do not launch.
4. **Select servers by mode:**
   - headless → `mcp__chrome-devtools__*` / `mcp__playwright__*` (self-launching, no display).
   - watched → ensure the watch-stack is up: `curl -s http://127.0.0.1:9222/json/version`; if it
     fails, start it: `sudo systemctl start claude-qa-watch` — exact argv, no `.service`
     suffix, no extra arguments: `infra/os/sudoers.d/claude-harness.template` grants this
     harness account an EXACT-MATCH NOPASSWD rule for this one command (and the matching
     `stop`), not a glob, so any other form falls through to an interactive password prompt
     instead of running. Wait ~4s, then re-check the curl. Still failing? Check
     `journalctl -u claude-qa-watch -n 50` for why (most likely cause: `infra/qa-watch/
     SETUP.md`'s apt dependencies were never installed on this box). Tell the user: "Watched
     run — open your SSH tunnel and http://localhost:6080/vnc.html to watch/act." Use
     `mcp__chrome-devtools-watch__*` / `mcp__playwright-watch__*` (attach over CDP — they do NOT
     launch their own browser). Only ONE watched run at a time (single shared Chrome) — leave
     the stack running for the next watched run rather than stopping it after each one; if it
     ever needs a clean restart (e.g. a wedged Chrome), `sudo systemctl stop claude-qa-watch`
     and let the next run's step 4 start it fresh.
5. Drive the numbered steps with those tools (chrome-devtools for deep DOM/network/console/eval;
   playwright for snapshot-driven happy paths).
6. At each `⏸ HUMAN(...)` line, STOP:
   - `⏸ HUMAN(paste): <ask>` — ask the user; wait for the typed value (e.g. fresh tokens); use it.
   - `⏸ HUMAN(novnc): <ask>` — tell the user to do it in the noVNC window; wait for "continue";
     resume on the SAME browser.
7. Honor `✅ assert ...` lines: prove each with a screenshot / network request / status read.
8. Write `docs/qa/<YYYY-MM-DD>-<name>-report.md` from `templates/report-template.md`. Link
   artifacts auto-saved under `.playwright-mcp/`.

## Files
- `qa-precheck.sh` — headroom guard (cap 2 headless).
- `templates/` — journey.template.md, cookbook.skeleton.md, report-template.md, smoke.md.

## Troubleshooting
- **chrome-devtools tools missing from a session**: the npx cache can drop the exec bit when
  `chrome-devtools-mcp@latest` updates in place. Registrations self-heal (sh -c chmod wrapper),
  but a manual fix is: `chmod +x ~/.npm/_npx/*/node_modules/chrome-devtools-mcp/build/src/bin/*.js`
  then start a new session (or `/mcp` → reconnect).
- **`*-watch` servers show failed at session start**: normal when the watch Chrome (:9222) is
  down — start the watch-stack (step 4), then `/mcp` → reconnect them.

Files in this skill

  • SKILL.md4.6 KB
  • qa-precheck.selftest.sh513 B
  • qa-precheck.sh1.1 KB
  • templates/cookbook.skeleton.md609 B
  • templates/journey.template.md641 B
  • templates/report-template.md489 B
  • templates/smoke.md246 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.