A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
The missing content layer for agentskills.io: 15 reusable, agent-agnostic recipes + MCP server so browser-using AI agent
A bundle of reusable site-pattern recipes for browser-using AI agents, in the agentskills.io SKILL.md format. Drops into Claude Code, Cursor, Codex CLI, etc., or runs as an MCP server.
Modern browser agents are good at task reasoning and slow at routine web interactions. They re-derive how to dismiss a cookie banner every session, get stuck on infinite-scroll feeds, and burn vision calls on calendar widgets.
This repo ships 15 recipes for the common boring patterns. Each is selector-driven by default with vision as a fallback, so most calls finish in a few hundred milliseconds and zero model tokens.
pip install browser-skills
python -m playwright install chromium
browser-skills mcp install claude-desktop # or: cursor, codex, continue, print
Restart your client; the skills are available immediately.
Or use the runner directly:
import asyncio
from playwright.async_api import async_playwright
from browser_skills.adapters.playwright_raw import PlaywrightPage
from browser_skills.runner import Runner
from browser_skills.skill import parse_skill
async def main():
skill = parse_skill("skills/dismiss-cookie-banner/SKILL.md")
async with async_playwright() as pw:
browser = await pw.chromium.launch()
page = await browser.new_page()
await page.goto("https://bbc.com")
result = await Runner().execute(skill, PlaywrightPage(page))
print(result.status, result.duration_ms)
await browser.close()
asyncio.run(main())
| Skill | Notes |
|---|---|
| dismiss-cookie-banner | OneTrust, Cookiebot, generic accept-all. ~15 selectors. |
| dismiss-newsletter-popup | Email-signup overlays on content sites. |
| handle-modal-dialog | Generic role="dialog" catch-all, defaults to dismiss. |
| exit-tracking-popup | Exit-intent overlays. |
| verify-page-loaded | DOM ready, spinner-absent, main content present. |
| detect-captcha | reCAPTCHA, hCaptcha, Turnstile detection. Detect-only. |
| fill-multi-step-form | Stepper wizards. |
| upload-download-file | HTML5 file inputs. |
| login-flow | env-var credentials or persistent context. Trace redacts passwords. |
| extract-table-pagination | <table> to list of row dicts. |
| handle-infinite-scroll | scroll-until-no-more-content with stop conditions. |
| search-and-filter | Type a query, submit, capture results. |
| pagination-next-page | rel="next", aria-label="Next", and friends. |
| date-picker-widget | Native <input type="date"> plus custom calendars. |
| searchable-dropdown | role="combobox" typeahead. |
browser-skills mcp install <client> writes the stdio stanza into the
right config file. The server exposes:
start_browser(headed=False) -> session_id
navigate(session_id, url) -> page_state
list_skills() -> catalog
reload_skills() -> reload SKILL.md files
list_applicable_skills(session_id) -> matcher results
invoke_skill(session_id, skill_name, vars) -> SkillResult
screenshot(session_id, selector?) -> b64 PNG
page_state(session_id) -> debug shape
close_browser(session_id) -> trace_id (if any)
HTTP transport works via browser-skills mcp serve --transport=streamable-http
but is not offered by the install command until bearer-token validation
is wired up.
See docs/mcp-design.md for the full surface and error envelope.
robots.txt is respected by default, the rate limit is human-cadence,
the user-agent identifies as browser-skills/<version>. See
docs/ethics.md.
browser-skills new my-skill
$EDITOR skills/my-skill/SKILL.md
browser-skills test my-skill --headed
The format is YAML frontmatter plus a Markdown body with a structured
## Recipe section. Walkthrough in docs/authoring.md;
DSL spec in docs/skill-recipe-format.md.
Twenty sites in benchmarks/sites.yaml, each exercising at least two skills. A weekly cron runs the full suite and publishes results to GitHub Pages; stale selectors open issues automatically.
python benchmarks/run.py --quick # matcher only, no network
python benchmarks/run.py --mode=full # real Chromium against the 20 sites
MIT. Contributors sign commits off with git commit -s
(DCO); see CONTRIBUTING.md.
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots