From rodney
This skill should be used when working on frontend code, debugging UI issues, verifying visual changes, scraping web pages, testing web features, or inspecting page state. Also triggers on "open browser", "take screenshot", "navigate to URL", "scrape website", "extract page content", "check accessibility", or any web automation task. Use proactively during frontend development to verify changes visually.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rodney:browser-automationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Rodney is a CLI tool that drives a persistent headless Chrome instance. Each command connects to the same long-running browser process, making it natural to script multi-step browser interactions via Bash.
Rodney is a CLI tool that drives a persistent headless Chrome instance. Each command connects to the same long-running browser process, making it natural to script multi-step browser interactions via Bash.
Use without being asked when:
rodney start # headless (default for agents)
rodney start --show # visible window (for debugging with user)
Check if already running first:
rodney status || rodney start
rodney open "https://example.com"
rodney waitstable # wait for DOM to settle
Always wait after navigation. Prefer waitstable for general use, waitidle when network requests matter, waitload for simple pages.
rodney title # page title
rodney url # current URL
rodney text "h1" # text content of element
rodney html ".main-content" # HTML of element
rodney attr "a.logo" "href" # attribute value
rodney js "document.querySelectorAll('.item').length" # run JS
rodney screenshot /tmp/page.png # full viewport
rodney screenshot -w 1280 -h 720 /tmp/page.png # specific size
rodney screenshot-el ".hero-section" /tmp/hero.png # element only
Use the Read tool to view screenshot files after capturing them.
rodney click "button.submit"
rodney input "#email" "[email protected]"
rodney select "#country" "GB"
rodney submit "form#login"
rodney hover ".tooltip-trigger"
rodney exists ".error-message" # exit 0 if exists, 1 if not
rodney visible ".modal" # exit 0 if visible, 1 if not
rodney count ".list-item" # prints count
rodney assert "document.title" "Expected Title" # assert equality
Use exit codes for conditional logic:
if rodney exists ".error-message"; then
rodney text ".error-message"
fi
rodney ax-tree --depth 3 # dump a11y tree (truncated)
rodney ax-tree --json # full tree as JSON
rodney ax-find --role button # find all buttons
rodney ax-find --role link --name "Sign in" # find specific link
rodney ax-node "#main-nav" --json # a11y info for element
The accessibility tree is often more useful than screenshots for understanding page structure, especially for forms and navigation.
rodney stop
The SessionEnd hook automatically runs rodney stop, so explicit cleanup is not required but is good practice when switching contexts.
Rodney keeps a single Chrome process alive between commands. State (cookies, localStorage, current page) persists across commands until rodney stop.
Directory-scoped sessions isolate browser state per project:
rodney start --local # state in ./.rodney/state.json
rodney open "..." # auto-detects local session
rodney stop # cleans up local session
Tab management for multi-page workflows:
rodney newpage "https://docs.example.com"
rodney pages # list all tabs
rodney page 0 # switch back to first tab
rodney closepage 1 # close second tab
rodney status || rodney start
rodney open "http://localhost:3000"
rodney waitstable
rodney screenshot /tmp/after-change.png
rodney open "http://localhost:3000/login"
rodney waitstable
rodney input "#email" "[email protected]"
rodney input "#password" "password123"
rodney click "button[type=submit]"
rodney waitstable
rodney screenshot /tmp/after-login.png
rodney open "https://example.com/data"
rodney waitstable
rodney js "JSON.stringify([...document.querySelectorAll('tr')].map(r => r.textContent))"
rodney open "https://example.com/dashboard"
rodney wait ".data-loaded" # wait for specific element
rodney text ".metric-value" # then extract content
rodney js wraps expressions as () => { return (expr); } — return complex values as JSON strings./tmp/ and use the Read tool to view them.rodney exists and rodney visible return exit code 1 on failure, not stderr — use if statements, not ||.rodney start --show to make the browser visible when debugging visual issues with the user.For the complete CLI command reference, consult references/commands.md.
npx claudepluginhub tavva/ben-claude-plugins --plugin rodneyPlaywright browser automation: navigates URLs, captures screenshots and accessibility snapshots, interacts with UI elements (click, type, fill form), and reports findings with visual evidence.
Automates headless browser via agent-browser CLI: open/navigate sites, snapshot interactive elements for refs, click/fill forms, verify UI, scrape data, e2e test web apps.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.