Browser automation with Playwright and real cookies. Use 'grab browser execute "<code>"' to run Playwright code.
Installation
$skills install @aidenybai/react-grab
Claude Code
Cursor
Copilot
Codex
Antigravity
Details
Repositoryaidenybai/react-grab
Pathskills/react-grab/SKILL.md
Branchmain
Scoped Name@aidenybai/react-grab
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: react-grab description: Browser automation with Playwright and real cookies. Use 'grab browser execute "<code>"' to run Playwright code.
React Grab
Playwright automation with your real browser cookies. Pages persist across executions. Output is always JSON: {ok, result, error, url, title, page}
Note: If MCP is available in your environment, prefer using the browser_snapshot and browser_execute MCP tools instead of this skill for better performance.
Usage
grab browser execute "<code>"
Performance Tips
- Batch multiple actions in a single execute call (3-5x faster)
- Use maxDepth to limit tree depth:
getSnapshot({maxDepth: 5})
# SLOW: 3 separate round-trips
execute "await page.goto('https://example.com')"
execute "await getRef('e1').click()"
execute "return await getSnapshot()"
# FAST: 1 round-trip
execute "await page.goto('...'); await getRef('e1').click(); return await getSnapshot();"
Helpers
page- Playwright Page objectgetSnapshot(opts?)- Get ARIA tree with refs (e1, e2...). Options:maxDepthgetRef(id)- Get element by ref ID (chainable). E.g.await getRef('e1').click()getRef(id).source()- Get React component source:{ filePath, lineNumber, componentName }fill(id, text)- Clear and fill inputdrag({from, to, dataTransfer?})- Drag with custom MIME typesdispatch({target, event, dataTransfer?, detail?})- Dispatch custom eventswaitFor(target, opts?)- Wait for selector/ref/state. E.g.waitFor('e1'),waitFor('networkidle')
Common Patterns
execute "await getRef('e1').click()"
execute "await fill('e1', 'hello')"
execute "await waitFor('e1')"
execute "await waitFor('networkidle')"
execute "return await getRef('e1').getAttribute('data-id')"
execute "return await getRef('e1').source()"
execute "return await getSnapshot()"
execute "return await getRef('e1').screenshot()"
execute "return await page.screenshot()"
Multi-Page Sessions
execute "await page.goto('https://github.com')" --page github
execute "return await getSnapshot()" --page github
Docs
Playwright API: https://playwright.dev/docs/api/class-page
