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 opensquad-ai/opensquad --skill playwrightgit clone --depth 1 https://github.com/opensquad-ai/opensquadWrote 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/opensquad-ai/opensquad/playwright)<a href="https://agentmods.dev/skills/opensquad-ai/opensquad/playwright"><img src="https://agentmods.dev/badge/skills/opensquad-ai/opensquad/playwright/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/opensquad-ai/opensquad/playwright"><img src="https://agentmods.dev/badge/skills/opensquad-ai/opensquad/playwright.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.00026 | $0.02462 |
| Opus 5 | $0.00013 | $0.01231 |
| Sonnet 5 | $0.00005 | $0.00492 |
| Haiku 4.5 | $0.00003 | $0.00246 |
Grade A, and why
playwright 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 today.
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 — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Playwright Browser Automation
Driver for performing real web browser interactions (UI testing, form filling,
page scraping, screenshot capture) directly through the Playwright Python SDK.
This replaces the old @playwright/mcp server, so no MCP subprocess is
launched — the tools here call Chromium in-process.
When to use
- You need to interact with a live web page: visit a URL, click buttons, fill forms, press keys, read rendered text.
- You want a screenshot of a page or region.
- You need to run custom JavaScript to extract or mutate page state.
Workflow
Follow this order for typical browser tasks:
- Open a page —
browser_navigate(url)(e.g.browser_navigate(url="https://example.com")). - Inspect what's there —
browser_snapshot()returns the current URL, title and visible text. - Act —
browser_click(selector=...),browser_type(selector=..., text=...),browser_select(selector=..., value=...),browser_press_key(key="Enter"), orbrowser_evaluate(script=...). - Re-check — call
browser_snapshot()again to confirm the page changed. - Capture (optional) —
browser_screenshot(path="result.png", full_page=True). - Clean up —
browser_close()when fully done to free the headless browser.
Tool reference
browser_navigate(url, timeout=30000, wait_until='domcontentloaded', ready_selector=None)— load a URL.wait_until∈load|domcontentloaded|networkidle|commit(usenetworkidlefor SPAs that hydrate after DOMContentLoaded).ready_selectorwaits for that element before returning.browser_snapshot()— visible text of the current page (state check).browser_click(selector, timeout=10000)—selectoris a CSS selector, or visible text. Raises a clear timeout if nothing matches (never silently "succeeds").browser_type(selector, text, submit=None)— fill an input;submit=Truepresses Enter, a CSS/textsubmit=clicks that send button (for UIs where Enter inserts a newline instead of sending).browser_press_key(key)— e.g."Enter","Tab","Escape","ArrowDown".browser_select(selector, value)— pick an<option value=...>.browser_wait_for(selector, state='visible', timeout=30000)— wait until a selector reachesattached|detached|visible|hidden.browser_wait_for_text(selector=None, stable_for=1500, timeout=60000)— wait until text content stops changing. Use it to know a streaming chat answer has finished (e.g. DeepSeek), instead of polling yourself.browser_evaluate(script)— run JS and return the value as a string.browser_screenshot(path=None, full_page=True)— ifpathis given it is used exactly as-is (relative → cwd). With no path it saves underdata/browser_screenshots/screenshot.png.full_page=Truecaptures scrolled-out content too.browser_save_state()— explicitly persist cookies + localStorage to disk now.browser_wait(milliseconds=1000)— settle before the next action.browser_go_back()— previous page.browser_close()— end the session.
What ships with it
2 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.
- today First seen · 131 lines · 26 tokens per session scan A 8da5ce00972b
playwright is a skill published in the GitHub repository opensquad-ai/opensquad (5 stars, last pushed today), licensed MIT. It adds 26 tokens to every session and 2,462 once invoked, about $0.0001 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-09-10.
Other skills, from other repositories
life-automation-audit
Use this as an on-demand long prompt. Do not paste it into SOUL.md / PRINCIPLES.md / AGENTS.md. When the user asks to audit their life for automation opportunities, load and follow this prompt.
discord
Control Discord via the discord tool: manage messages, reactions, polls, channels, and bot presence.
browser-login
Goal: log into an arbitrary website without provider-specific scripts by looping: 1) observe current page 2) classify what screen it is 3) act using stable refs/semantic selectors 4) repeat until logged in.
slack
Use when you need to control Slack from Kabot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
bluebubbles
Use when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
notion
Notion API for creating and managing pages, databases, and blocks.