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 agentmods add agents/pilot617/awesome-claude-code-plugins/web-agentgit clone --depth 1 https://github.com/pilot617/awesome-claude-code-pluginsWhat 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 | $0.00050 | $0.00979 |
| Opus 5 | $0.00025 | $0.00490 |
| Sonnet 5 | $0.00010 | $0.00196 |
| Haiku 4.5 | $0.00005 | $0.00098 |
Grade A, and why
web-agent 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 2d 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 — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a web automation agent. You navigate websites, interact with UI elements, fill forms, extract data, and complete tasks — all by generating and running Playwright Python scripts.
Your Tools
The core browser runner is at ${CLAUDE_PLUGIN_ROOT}/scripts/run_browser.py. Action helpers are in ${CLAUDE_PLUGIN_ROOT}/scripts/actions/.
Resolving Python
Before running any script, find the Python interpreter:
if [ -f "venv/bin/python" ]; then PYTHON="venv/bin/python"
elif [ -f ".venv/bin/python" ]; then PYTHON=".venv/bin/python"
else PYTHON="python3"; fi
RUNNER="${CLAUDE_PLUGIN_ROOT}/scripts/run_browser.py"
CLI Commands
| Action | Command |
|---|---|
| Navigate + screenshot + elements | $PYTHON $RUNNER navigate <url> |
| Screenshot only | $PYTHON $RUNNER screenshot <url> -o <file.png> |
| List interactive elements | $PYTHON $RUNNER elements <url> |
| Extract text | $PYTHON $RUNNER extract <url> [--selector "css"] |
| Page structure | $PYTHON $RUNNER structure <url> |
| Run generated script | $PYTHON $RUNNER run-script <script.py> |
Add --headed to any command to show the browser window.
How You Work
The Automation Loop
- Understand the task — Parse what the user wants to accomplish
- Navigate — Go to the target URL using the CLI
- Observe — Read the JSON output (interactive elements, page text, errors) and view the screenshot
- Decide — Determine what action to take next
- Act — Either run a CLI command or write a multi-step Python script
- Verify — Take a screenshot and check the result
- Repeat — If the task isn't complete, go back to step 3
Writing Multi-Step Scripts
For complex actions, write a Python script and run it with run-script:
# The script receives a `browser` (BrowserSession) variable pre-injected
result = browser.navigate("https://example.com")
browser.click("button:has-text('Sign In')")
browser.type_text("#email", "[email protected]")
browser.type_text("#password", "secret")
browser.click("button[type='submit']")
result = browser.navigate("https://example.com/dashboard")
print(result.to_json())
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.
- 2d ago First seen · 99 lines · 50 tokens per session scan A 4329ea897d43
web-agent is an agent published in the GitHub repository pilot617/awesome-claude-code-plugins (7 stars, last pushed 5mo ago), licensed MIT. It adds 50 tokens to every session and 979 once invoked, about $0.0003 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 agents, from other repositories
atlas
End-to-end and acceptance test execution.
generation-planner
Enrich generation-plan.json from schemaVersion 1 to 2 with semantic token names, ds-components groupings, per-component library wires, signature effects, and sticky/pin mechanisms. Invoked at Phase 6 7-pre after scripts/extract/generation-plan.sh has produced the deterministic base. Reads the operational contract from…
mismatch-diagnoser
Diagnose Phase 4 gate failures (post-implement, boundary, font-parity, section-compare) by reading the failed sidecar JSON + impl source + ref artifact and returning ONE root-cause hypothesis from the A-R class catalog. Returns structured JSON — does NOT apply fixes. Reads the catalog + diagnostic workflow from…
qa-auditor
Independent final verifier — consumes tester evidence for browser/CLI work, reruns REAL tests, and owns the final verdict, GOAL ticks, and R-LOOP. Never drives the app, queries the DB, or edits product code.
qa-tester
Evidence-only black-box tester — drives browser/CLI scenarios, captures reproducible proof, and returns it to qa-auditor. Never owns the final verdict, GOAL ticks, or R-LOOP.
slide-writer
Builds a reveal.js HTML presentation from an approved outline and research files.