Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add simiancraft/simiancraft-skills --skill playwright-harnessgit clone --depth 1 https://github.com/simiancraft/simiancraft-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/simiancraft/simiancraft-skills/playwright-harness)<a href="https://agentmods.dev/skills/simiancraft/simiancraft-skills/playwright-harness"><img src="https://agentmods.dev/badge/skills/simiancraft/simiancraft-skills/playwright-harness/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/simiancraft/simiancraft-skills/playwright-harness"><img src="https://agentmods.dev/badge/skills/simiancraft/simiancraft-skills/playwright-harness.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 56 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 62 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00221 | $0.02805 |
| Opus 5 | $0.00111 | $0.01403 |
| Sonnet 5 | $0.00044 | $0.00561 |
| Haiku 4.5 | $0.00022 | $0.00281 |
Grade A, and why
playwright-harness scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 222 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Playwright Harness
Project-agnostic kernel for driving a browser and asserting on it; the operational trunk the rest of the suite hangs off.
Map of the suite
This skill is the trunk: what to install, plus the run-and-assert pattern. Everything else hangs off it.
playwright-harness/ <- you are here: prerequisites + run pattern + assert loop
├── references/
│ ├── interactions.md address elements: locators, actions, waits, assertions
│ └── flows.md recipes: login, forms, responsive, link-checking, network stubbing
├── scripts/
│ ├── keeper.mjs interactive headed mode: long-lived shared browser + CDP
│ └── observe.mjs interactive headed mode: attach, report URL/errors, screenshot
└── specializations (separate, discoverable skills; read this one first):
├── playwright-camera-mask-testing a real person through getUserMedia; assert segmentation/mask by vision
└── playwright-gif-capture an animated GIF of a page, canvas, or WebGL animation
references/ is this skill's own depth, loaded by reading the file. The
specializations are separate, discoverable skills; open one when its input (a
camera feed, a GIF) is what you need.
Runtime/package manager. Examples use plain
node+npm; substitute your own runner (bun,pnpm,yarn) wherever they appear. Playwright itself is unaffected.
Prerequisites (install once)
- Node 18+ and a package manager.
- Playwright + a browser binary. Playwright ships no browser by default:
npm i -D playwright # or add to the project that already has it npx playwright install chromium - Headless system libraries (Linux/WSL only). A fresh box is missing the
shared libs Chromium needs (
libnss3,libatk,libgbm, …); the symptom is a launch error listingerror while loading shared libraries. Install them once:
macOS needs none of this — the downloaded Chromium runs as-is, headless or headed. There is nonpx playwright install-deps chromium # needs sudo; or your distro's equivalent packagesinstall-depsstep and no GPU shim to configure; a headed launch opens a normal window on the desktop. - Some specializations need extra binaries (e.g.
ffmpegfor video/GIF encode); each declares its own in a "Prerequisites" block.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 222 lines · 221 tokens per session scan A 2737eb897142
playwright-harness is a skill published in the GitHub repository simiancraft/simiancraft-skills (7 stars, last pushed 8d ago), licensed MIT. It adds 221 tokens to every session and 2,805 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
test-site
Tests a deployed, activated Power Pages site at runtime using browser-based navigation, page crawling, and API request verification via Playwright. Use when the user wants to test, verify, or smoke-test their deployed site.
qa
Browser-based QA verification. Launches a real browser, navigates the app, clicks buttons, fills forms, and tests user flows. Works as a standalone skill or as a phase end condition in campaigns. Requires Playwright (optional dependency, graceful skip if not installed).
browser-check
Drive a real browser and come back with a MEASUREMENT rather than an impression - console errors and >=400 responses as counts, computed styles as JSON when appearance is disputed. Use when work touches UI, when a review must verify one, or when fidelity-gate asks for its measurement.
symfony:e2e-panther-playwright
Write end-to-end tests with Symfony Panther 2.4 for browser automation or Playwright for complex scenarios.
browser-testing
Test and debug browser code with Chrome DevTools MCP. Use when building or debugging browser UI, inspecting the DOM, capturing console errors, analyzing network requests, or verifying visual output.
write-e2e
Generate Playwright E2E tests from codebase analysis. Discovers routes, scores user flows by criticality, writes .spec.ts files that assert causality, and reports what was actually proven: GENERATED, STATICCHECKED, VERIFIEDLOCAL or VALIDATEDLIVE. Modes: --scope , --flow , --output , --base-url , --max-flows N, --live…