native-qa-web
Autonomous QA skill for web applications using Playwright.
Skill by mtkinverse
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mtkinverse-native-qa-web
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/native-qa-web
What's inside
- Skill name
native-qa-web- Description
- Autonomous QA skill for web applications using Playwright. Four continuous phases — Discovery → Scenario Planning → Test Generation → Test Execution. Stops only for credentials or context limits. QA report generated at phase boundaries only.
- License
- MIT
- Instructions
- 805 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "native-qa-web" does not match folder "web"
- body: 805 lines (spec recommends under 500)
- files: referenced but missing: scripts/qa-screenshot.js
Files (13)
- SKILL.md
- login-engage.md · helpers/
- outcome-classifier.md · helpers/
- exploration-toolkit.md · references/
- playwright-patterns.md · references/
- selector-strategies.md · references/
- README.md · strategies/
- bfs.md · strategies/
- sitemap-spot-check.md · strategies/
- targeted-trace.md · strategies/
- flow.md · templates/
- scenarios.md · templates/
- test-case.md · templates/
SKILL.md (first lines)
# Web QA Skill — Playwright-Based Workflow
Four continuous phases that run end-to-end without stopping for user approval between phases:
```
Phase 1: Discovery → Seed crawl → nav graph → personas → E2E journeys → flow.md
Phase 2: Scenario Planning → Read flow.md → generate scenarios.md per flow
Phase 3: Test Generation → Read scenarios.md → write TC-NNN-*.md per scenario
Phase 4: Test Execution → Extract .spec.ts → run Playwright tests → pass/fail
```
**Continuous execution**: phases flow into each other automatically. The agent only stops for:
- **Credentials required** — must ask user for auth/API keys
- **Context full** — must checkpoint to `qa/state.md` and reset
**Report timing**: `node scripts/allure/generate-report.js --open` generates a self-contained session report at `qa/reports/<app-slug>-<timestamp>.html` with embedded screenshots. No Java or allure-commandline needed — works when opened directly. Each run writes a new timestamped file so prior sessions are preserved. Only run at **phase boundaries** (Phase 1→2, 2→3, 3→4, final) or when user asks — never on per-flow resets.
---
## Prerequisites
- Node.js 20+ installed
- `npm install` run in project root (installs `@playwright/test`, `dotenv`)
- `npx playwright install chromium` run at least once
- `.env.qa` at repo root — see `.env.example`
### BFS Crawl Configuration
These `.env.qa` variables tune the BFS crawler. Defaults work for most apps — only change if needed.
| Variable | Default | Purpose |
|----------|---------|---------|
| `QA_PAGE_WAIT_MS` | `2000` | Minimum wait (ms) after each page loads before screenshotting. Increase for slow SPAs. |
| `QA_MAX_PAGES` | `50` | Maximum pages the BFS visits. Prevents infinite crawl on large apps. |
| `QA_MAX_DEPTH` | `5` | Maximum click-depth from homepage. Pages deeper are queued but skipped. |
| `QA_NAV_TIMEOUT` | `15000` | Timeout (ms) for `page.goto()` calls. |
---
## Phase 1: Discovery
**Goal**: Discover EVERY reachable page in the application via deep BFS crawl, then organize into feature-scoped flows.
**Priority**: Exploration first — maximize pages discovered. Auth is a gate to pass through, not a journey to trace. **NEVER skip any credential gate, setup step, or onboarding step without explicit user permission.** If `.env.qa` has values → use them. If not → ask the user. The agent must never autonomously click "Skip", "Set up later", "Maybe later", or any bypass button.
**Output**: `qa/knowledgebase/` (screenshots, ui-inventory, nav-graph) + `qa/flows/F-NNN-*/flow.md` per feature area.
**Transition to Phase 2**: Automatic — after all pages discovered and flows documented.
---
### Pre-Step: Load Prior Knowledge
Before doing anything else, check what the root skill extracted from `qa/context/` in Step 3.
```bash
ls qa/knowledgebase/ui-inventory.md 2>/dev/null && echo "EXISTS" || echo "NONE"
ls qa/context/ 2>/dev/null
```
**If `qa/knowledgebase/ui-inventory.md` exists** — read it now. It contains the page inventory and known features extracted from any files the user dropped into `qa/context/`. Use this as your starting map:
- Prioritize routes and pages named in the inventory — explore these first
- If Figma screens were provided, you know the screen layouts — confirm visually via Playwright
- If a PRD or spec was provided, you know the features and acceptance criteria — test against them
**If `qa/context/` has unread files** (PNGs, `.md`, `.txt` not yet processed) — read them before opening the browser.
**If nothing exists** — cold start. Discover everything by crawling from the homepage.
---
## STOP / PAUSE / SAVE STATE
Follow the root SKILL.md **"STOP / PAUSE / SAVE STATE — Immediate Handler"** exactly. No web-specific differences — the root handler applies as-is.
---
### Step W-1: Workspace Setup
Handled by main SKILL.md Steps 1-2. Confirm:
- `.qa-config.json` has `"platform": "web"`
- `QA_APP_URL` is set in `.env.qa`
- `qa/knowledgebase/screenshots/` directory exists
Then write the Playwright config to `qa/playwright.config.ts`:
```typescript
import { defineConfig, devices } from '@playwright/test';
import path from 'path';
import fs from 'fs';
const dotenvPath = path.resolve(process.cwd(), '.env.qa');
if (fs.existsSync(dotenvPath)) {
require('dotenv').config({ path: dotenvPath });
} else {
console.warn('[qa] .env.qa not found. Preflight (Step W-1.5) will engage the user to create it.');
}
if (!process.env.QA_APP_URL) {
console.warn('[qa] QA_APP_URL is not set. Preflight (Step W-1.5) will prompt for it.');
}
const HEADLESS = process.env.QA_HEADLESS !== 'false';
const CI = !!process.env.CI;
const REPO_ROOT = process.cwd();
const AUTH_FILE = path.join(REPO_ROOT, 'qa/.auth/user.json');
export default defineConfig({
testDir: path.join(REPO_ROOT, 'qa/flows'),
testMatch: '**/*.spec.ts',
fullyParallel: true,
forbidOnly: CI,
retries: CI ? 2 : 0,
workers: CI ? 4 : 2,
timeout: 30_000,
expect: { timeout: 5_000 },
reporter: [
['list'],
['html', { outputFolder: path.join(REPO_ROOT, 'playwright-report'), open: 'never' }],
['json', { outputFile: path.join(REPO_ROOT, 'qa/runs/playwright-results.json') }],
],
use: {
baseURL: process.env.QA_APP_URL,From mtkinverse/claude-qa, MIT.
More from mtkinverse/claude-qa
- 0.405score
native-qa-ios
mtkinverse
Autonomous QA skill for iOS applications using XCUITest and xcrun simctl.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-windows
mtkinverse
Autonomous QA skill for Windows native applications using WinAppDriver and UIA3.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-android
mtkinverse
Autonomous QA skill for Android applications using UIAutomator2 and ADB.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa-macos
mtkinverse
Complete macOS QA runbook.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa
mtkinverse
Generic QA skill for Claude Code covering any platform (macOS, iOS, Android, Windows, web).
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-extension
mtkinverse
Autonomous QA skill for browser extensions using Playwright and Chrome Extension API.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 20, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mtkinverse/claude-qa
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mtkinverse
- 0.405score
native-qa-ios
mtkinverse
Autonomous QA skill for iOS applications using XCUITest and xcrun simctl.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-windows
mtkinverse
Autonomous QA skill for Windows native applications using WinAppDriver and UIA3.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-android
mtkinverse
Autonomous QA skill for Android applications using UIAutomator2 and ADB.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa-macos
mtkinverse
Complete macOS QA runbook.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa
mtkinverse
Generic QA skill for Claude Code covering any platform (macOS, iOS, Android, Windows, web).
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-extension
mtkinverse
Autonomous QA skill for browser extensions using Playwright and Chrome Extension API.
SkillDFreshness: DClaude Code +9
Cite this page
native-qa-web skill. Agent Mart. https://agentmart.dev/skills/mtkinverse-native-qa-web (last updated 2026-10-24)