Borrowing it
Nothing to install: this file belongs to chattermate/chattermate.chat. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/chattermate/chattermate.chat/main/.claude/skills/write-e2e-test/SKILL.mdgit clone --depth 1 https://github.com/chattermate/chattermate.chatWrote 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/chattermate/chattermate.chat/write-e2e-test)<a href="https://agentmods.dev/skills/chattermate/chattermate.chat/write-e2e-test"><img src="https://agentmods.dev/badge/skills/chattermate/chattermate.chat/write-e2e-test/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/chattermate/chattermate.chat/write-e2e-test"><img src="https://agentmods.dev/badge/skills/chattermate/chattermate.chat/write-e2e-test.svg" alt="Reviewed on agentmods" width="80" 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.00058 | $0.00612 |
| Opus 5.5 | $0.00023 | $0.00245 |
| Sonnet 5.5 | $0.00012 | $0.00122 |
| Haiku 4.5 | $0.00006 | $0.00061 |
Grade A, and why
write-e2e-test 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 17d 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.
What it actually says
Writing a ChatterMate e2e test
The suite lives in e2e/. Read e2e/AUTHORING.md first — it is the source of truth for
layout and rules. The essentials:
- Specs speak product language.
specs/<feature>/<name>.spec.ts, imports only from@e2e, no selectors (page.locator) and no raw HTTP — lint fails otherwise. Title ends with tags:@<feature>, plus@smokeonly for the few journeys that must run on every PR. - Selectors go in
src/pages/(a screen) orsrc/components/(shared UI). PrefergetByRole/getByLabel; if the element has no accessible name, add anaria-labelto the Vue component rather than reaching for CSS. CSS needs a one-line "why" comment. - Seed through
src/api/, assert through the UI. Need a new endpoint? Add a function to the matchingsrc/api/*.tsmodule. - Script the AI with
llm.script(agent, s => …)—reply,handOver,createTicket,callTool(...).thenReply(...). Replies are structured ChatResponse JSON; handover and tickets are boolean fields, not tool calls. - Fixtures give each test its own
agent+widget.test.use({ agentSettings: { transferToHuman: true } })for handover.inboxis Sam Agent's dashboard in a second browser. Never change org-wide settings outside a*.org.spec.ts. - Prove it is stable before finishing:
cd e2e && npx playwright test specs/<feature> --repeat-each=10 && npm run lint && npm run typecheck(start the stack once with./scripts/stack.sh up; in a Claude worktree passE2E_PYTHONandE2E_FRONTEND_NODE_MODULESpointing at the main checkout, and run with the sandbox disabled — Postgres, ports and the node_modules symlink need it). - Update
e2e/FEATURES.md— the row for the journey, with the spec path and ✅.
Enterprise specs live in the private enterprise_frontend repo under e2e/, import only
from @e2e, and must never be added to this public repo.
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.
- 17d ago First seen · 34 lines · 58 tokens per session scan A bc4178272868
write-e2e-test is a skill published in the GitHub repository chattermate/chattermate.chat (150 stars, last pushed today), licensed Apache-2.0. It adds 58 tokens to every session and 612 once invoked, about $0.0002 per session on Opus 5.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-10-13.
Other skills, from other repositories
web-gui-tester
Use the browser automation tooling available in the session to test web frontends interactively in a purely GUI-based, black-box manner: simulate real user clicks, text input, scrolling, and other actions; use screenshots for visual verification and read-only DOM inspection for cross-validation; and produce a final…
playwright-uitest
Generate Playwright UI tests and visual smoke reports for delivery POC frontends.
playwright-skill
Generates production-grade Playwright automation scripts and E2E tests in TypeScript, JavaScript, Python, Java, or C#. Supports local execution and TestMu AI cloud across 3000+ browser/OS combinations and real mobile devices. Use when the user asks to write Playwright tests, automate browsers, run cross-browser tests…
playwright-mcp-skill
Run browser automation through @playwright/mcp over UXC stdio MCP, with daemon-friendly session reuse and safe action guardrails. Use when tasks need deterministic page navigation, DOM snapshots, and scripted browser interaction from CLI.
browse
Drive a real browser through Aside: open a page, read it, click through a flow, take screenshots, check console errors. (gstack).
cua-driver
Use Cua Driver for desktop or browser tasks that are awkward or unavailable through Bash/APIs, or when the user explicitly wants GUI interaction: app testing, visual bug reproduction, form filling, calendar entry, screenshots, and demo recording. Also covers Cua setup; not OpenAI Codex Computer Use or web research.