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 TimothyHan/qa-buddy-skills --skill e2e-writegit clone --depth 1 https://github.com/TimothyHan/qa-buddy-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/timothyhan/qa-buddy-skills/e2e-write)<a href="https://agentmods.dev/skills/timothyhan/qa-buddy-skills/e2e-write"><img src="https://agentmods.dev/badge/skills/timothyhan/qa-buddy-skills/e2e-write.svg" alt="Measured on agentmods" height="20"></a>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.00174 | $0.02237 |
| Opus 5 | $0.00087 | $0.01118 |
| Sonnet 5 | $0.00035 | $0.00447 |
| Haiku 4.5 | $0.00017 | $0.00224 |
Grade A, and why
e2e-write 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 3d 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 — 175 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/qa-e2e-write: Test Suite Generation
Turn test cases into a passing, re-runnable, flake-free suite. Reads
playwright/AUTOMATION.md (decisions) and the POM + inventory from
/qa-e2e-pom. The vocabulary is the POM and API client; the specs carry intent
only.
Code standards: read {{REFERENCE_PATH}}/playwright-patterns.md before
writing client, fixture, or spec code — templates (disposal context,
worker-indexed accounts, network sync), the matcher table, and the
anti-pattern list live there. The Phase 5 lint enforces its NEVER section.
Then the project learnings file (per the preamble) — active LRN- entries
scoped here override those patterns.
Constraints
- Never invent a locator. Specs and helpers use POM exports only. A page
without a POM → invoke the
/qa-e2e-pomskill (build mode) and continue after its gate passes. WritinggetByTestId(...)for an unmapped element inline is the defining failure of this skill. - Specs are intent-only. No
page.locator(, no raw CSS/XPath, nopage.route(in spec files — selectors live in the POM, routes/requests in the API client or fixtures. - Preconditions via API, not UI. Seed state with the API client. UI seeding only where no API call was observed for the operation — and flag it as debt in the report.
- Parallel-safe data. Entity names need worker+repeat entropy —
Date.now()alone collides when concurrent workers or--repeat-eachinstances hit the same millisecond (caught live 2026-08-07). Use a helper:`${prefix}-${Date.now()}-w${workerIndex}r${repeatEachIndex}`. Never assert global counts (before + 1) — assert your entity by name/id. The suite runs with ≥2 workers (AUTOMATION.md records the count and the isolation strategy) — tests touching the shared-state features setup flagged go in the dependentglobal-stateproject, never the parallel one. - Clean up what you create, through public API. Disposal context or
afterEach/afterAll— never inline at the test body's end (skipped on failure), and never via test-env-only hooks (e.g., a reset endpoint): suites must survive on environments that don't have them. - State-based waits only. No
waitForTimeout. Actions that trigger async fetches get two-stage waits:waitForResponse(promise created BEFORE the action) → then assert the rendered element. Response received ≠ rendered. - Never race auto-disappearing UI. Toasts and transient banners: assert the durable outcome (row exists / count via entity) instead, or catch the toast with a web-first assertion immediately after the triggering action — never after another wait.
- No red gate, no DONE. Honest status is a gate of its own (Phase 5).
What ships with it
1 file 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.
- 3d ago Changed · +3 lines 040caa241d69
- 8d ago First seen · 172 lines · 174 tokens per session scan A 4d5ad6322998
e2e-write is a skill published in the GitHub repository TimothyHan/qa-buddy-skills (7 stars, last pushed today), licensed Apache-2.0. It adds 174 tokens to every session and 2,237 once invoked, about $0.0009 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
qawolf-cli
Manage QA Wolf through the qawolf CLI. Use when asked to create, update, or list coverage requests, bug reports, or maintenance reports; start a run of flows or tags on the QA Wolf platform or read a run's results; list, set, or delete environment variables; manage environments, flows, or tags; request automation of…
test-review
A review checklist for newly written or changed automated tests using TypeScript and Playwright. Playwright is a tool for testing web browsers, and automated tests check software without repeating the steps by hand.
playwright-expert
Expert in Playwright E2E testing framework, auto-waiting mechanisms, test generation, trace viewer, and CI/CD integration. Use when the user mentions testing, end-to-end tests, QA, automation, end-to-end testing, or test automation, or when the task involves Playwright Framework, Test Organization, Advanced Features…
browser-test-executor
Execute approved bounded browser Test DSL cases with fresh isolated contexts and auditable attempts. Use when running browser tests, reruns, regression checks, or blocked execution diagnostics.
qa-tester
Coordinate a bounded, evidence-backed QA run from requirements through release recommendation. Use for end-to-end QA planning, execution, retests, regressions, or exploratory browser checks.
evidence-collector
Collect and validate redacted, immutable QA evidence and evidence gaps for browser attempts. Use when capturing screenshots, traces, logs, telemetry, or explaining unavailable evidence.