playwright-qa
Browser-based QA contract for frontend tasks — resolution chain CLI→MCP→env-browser, headed/headless modes, artifact layout under datarim/qa/.
Skill by Arcanada-one
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/arcanada-one-playwright-qa
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, frontend, testing, agent-building
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 and code. 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/playwright-qa
What's inside
- Skill name
playwright-qa- Description
- Browser-based QA contract for frontend tasks — resolution chain CLI→MCP→env-browser, headed/headless modes, artifact layout under datarim/qa/.
- License
- MIT
- Instructions
- 151 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Playwright QA — Browser-Based Frontend Verification
When a task changes files that affect the rendered UI, `/dr-qa` runs a real
browser pass against the project's local dev surface (or a static fixture)
and captures evidence. This skill defines the contract: when the pass
fires, which tool gets used, how the run is isolated from concurrent
agents, and where artifacts land.
The skill is **opt-in by detection**: tasks that do not touch frontend
files never trigger a Playwright pass. Missing tooling is a finding, not
a block — the operator's pipeline keeps moving.
## Frontend touch detection
A task is considered «frontend-touching» when the changed-files set
contains at least one entry matching:
- `*.html`, `*.htm`
- `*.css`, `*.scss`, `*.sass`, `*.less`
- `*.tsx`, `*.jsx`, `*.vue`, `*.svelte`
- `*.php` whose body matches an HTML-markup heuristic
(`grep -qE '<(html|body|div|section|form|main|nav|header|footer|button|input)\b' <file>`)
Detection runs on `git diff --name-only <base>...HEAD` against the
canonical base (`main` for most repos, configurable via
`DATARIM_FRONTEND_BASE` env var, default `origin/main`). Renamed and
deleted entries are ignored — Playwright runs only against present
markup.
## Resolution chain
`dev-tools/detect-playwright-tooling.sh` resolves the tool to use:
1. **Override** — `DATARIM_PLAYWRIGHT` env var, one of
`playwright-cli | playwright-mcp | env-browser | none`. Operator escape
hatch; bypasses probing entirely.
2. **CLI** — `playwright` binary on `PATH`, probed with `--version`. First
preference for determinism and version pinning.
3. **MCP** — `DATARIM_PLAYWRIGHT_MCP_AVAILABLE=1` env var, or a
`playwright-mcp` binary on `PATH`. Used when the runtime exposes
Playwright as a Claude/Codex MCP server.
4. **env-browser** — `BROWSER`, `PLAYWRIGHT_BROWSER_PATH`, or
`CHROME_PATH` env var points at an executable file. Each candidate is
path-traversal guarded (no `..` segments) and tested with a
3-second `--version` probe.
5. **none** — chain exhausted. `/dr-qa` records a finding
(«playwright-tooling-missing») and continues to the next layer; the
step does not fail the QA verdict on its own.
Exit codes: `0` resolved (including `none`), `1` only when invoked with
`--require` and the result is `none`, `2` on usage error / invalid
override / strict-headed without a display.
## Headed mode
Headed mode is orthogonal to detection and is requested by:
- CLI flag: `/dr-qa --headed` or `/dr-qa --headed-strict`
- Init-task frontmatter key: `qa_browser_mode: headed` (lenient) or
`qa_browser_mode: headed-strict` (fail-fast)
Three states:
| Request | `$DISPLAY` present | Result |
|---------|--------------------|--------|
| default (neither flag nor key) | n/a | headless |
| `headed` (lenient) | yes | headed |
| `headed` (lenient) | no | headless + finding `headed-requested-but-no-display` |
| `headed-strict` | yes | headed |
| `headed-strict` | no | **exit 2** — pass aborts, BLOCKED finding |
The lenient mode is the right default for CI/server contexts; strict mode
is for operator-driven local runs where a visible browser is a hard
requirement.
## Artifact layout
```
datarim/qa/playwright-{ID}/
├── run-<ISO-timestamp>/ # one directory per pass, UTC YYYYMMDDTHHMMSSZ
│ ├── screenshot.png # final viewport, full page when supported
│ ├── trace.zip # Playwright trace bundle (CLI/MCP only)
│ ├── run.log # combined stdout + stderr, one line per event
│ └── summary.md # short report: tool, headed mode, exit code,
│ # findings, target URL, viewport
├── latest -> run-<ISO>/ # symlink to most recent run; falls back to
│ # a regular copy on filesystems without symlinks
└── .lock # flock target — see § Concurrency below
```
`{ID}` is the task ID. The per-run subdirectory keeps history bounded by
the operator (manual purge or scheduled cleanup outside this skill's
scope); `latest` provides a stable path for downstream readers.
`summary.md` follows the shape:
```markdown
# Playwright run — <ISO-timestamp>
- Task: <ID>
- Tool: <playwright-cli | playwright-mcp | env-browser | none>
- Headed mode: <headless | headed>
- Display available: <true | false>
- Target URL: <url or "static fixture: <path>">
- Viewport: <WxH>
- Exit code: <int>
- Findings:
- <one bullet per finding, or "None">
```
## Concurrency
Concurrent agents running `/dr-qa` on the same task MUST serialise on a
per-task lock to avoid trampling each other's runs. The runner acquires
`datarim/qa/playwright-{ID}/.lock` via `flock --timeout 30` (or a
`mkdir`-based atomic fallback on systems without `flock`). The lock
covers the entire pass — resolution, browser invocation, artifact write,
`latest` swap, lock release.From Arcanada-one/datarim, MIT.
More from Arcanada-one/datarim
- 0.642score
human-outcome-reporting
Arcanada-one
Explain human-facing task outcomes with requirements, evidence, honest acceptance status and read-only re-explanation, inside or outside Datarim.
SkillAFreshness: A★ 16Claude Code +9 - 0.640score
finishing-a-development-branch
Arcanada-one
Use when implementation is complete and all tests pass.
SkillAFreshness: A★ 16Claude Code +9 - 0.639score
hypothesis-validation
Arcanada-one
Use when a product decision depends on an uncertain claim and needs a bounded, falsifiable check.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
customer-delivery
Arcanada-one
Enforce delivery from a verbatim requirement through pre-work knowledge selection, production evidence, and disposition; excludes enabling-only closure.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
artifact-context
Arcanada-one
Canonical conventions for native agents generating or editing Datarim artifacts, including stage headers, frontmatter, and exact contract quotations.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
cta-format
Arcanada-one
Canonical CTA "Next Step" block format for every /dr-* command and pipeline agent.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
ai-quality
Arcanada-one
Five pillars of AI-assisted development — decomposition, TDD, architecture-first, focused work, context.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
brainstorming
Arcanada-one
MUST use this before any creative work — features, components, functionality, behavior changes.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
compliance
Arcanada-one
Post-QA hardening — detects task type (code, docs, research, legal, content, infra) and applies the matching verification checklist before archiving.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
consilium
Arcanada-one
Assemble a panel of Datarim agents for multi-perspective analysis of decisions.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
context-window-self-clearing
Arcanada-one
Preserve Datarim task continuity while orchestrated Claude Code or Codex sessions compact or clear context at deterministic pressure thresholds.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
adversarial-review
Arcanada-one
Forces an adversarial mindset on a plan, PRD, design, or code change — break it rather than bless it.
SkillAFreshness: A★ 16Claude Code +9
Signals
- Stars
- 16
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Oct 4, 2026 (25 days ago)
- Last release
- Oct 22, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Arcanada-one/datarim
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Arcanada-one
- 0.642score
human-outcome-reporting
Arcanada-one
Explain human-facing task outcomes with requirements, evidence, honest acceptance status and read-only re-explanation, inside or outside Datarim.
SkillAFreshness: A★ 16Claude Code +9 - 0.640score
finishing-a-development-branch
Arcanada-one
Use when implementation is complete and all tests pass.
SkillAFreshness: A★ 16Claude Code +9 - 0.639score
hypothesis-validation
Arcanada-one
Use when a product decision depends on an uncertain claim and needs a bounded, falsifiable check.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
brainstorming
Arcanada-one
MUST use this before any creative work — features, components, functionality, behavior changes.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
artifact-context
Arcanada-one
Canonical conventions for native agents generating or editing Datarim artifacts, including stage headers, frontmatter, and exact contract quotations.
SkillAFreshness: A★ 16Claude Code +9 - 0.637score
ai-quality
Arcanada-one
Five pillars of AI-assisted development — decomposition, TDD, architecture-first, focused work, context.
SkillAFreshness: A★ 16Claude Code +9
Cite this page
playwright-qa skill. Agent Mart. https://agentmart.dev/skills/arcanada-one-playwright-qa (last updated 2026-10-24)