Put these files in your ~/.claude/ dir.
- Create
~/.claude/skills/rodney - Create
~/.claude/skills/rodney/references - Put these files in:
~/.claude/skills/rodney/SKILL.md~/.claude/skills/rodney/references/commands.md
Full output of rodney --help:
rodney - Chrome automation from the command line
Browser lifecycle:
rodney start Launch headless Chrome
rodney stop Shut down Chrome
rodney status Show browser status
Navigation:
rodney open <url> Navigate to URL
rodney back Go back in history
rodney forward Go forward in history
rodney reload Reload current page
Page info:
rodney url Print current URL
rodney title Print page title
rodney html [selector] Print HTML (page or element)
rodney text <selector> Print text content of element
rodney attr <selector> <name> Print attribute value
rodney pdf [file] Save page as PDF
Interaction:
rodney js <expression> Evaluate JavaScript expression
rodney click <selector> Click an element
rodney input <selector> <text> Type text into an input field
rodney clear <selector> Clear an input field
rodney file <selector> <path|-> Set file on a file input (- for stdin)
rodney download <sel> [file|-] Download href/src target (- for stdout)
rodney select <selector> <val> Select dropdown option by value
rodney submit <selector> Submit a form
rodney hover <selector> Hover over an element
rodney focus <selector> Focus an element
Waiting:
rodney wait <selector> Wait for element to appear
rodney waitload Wait for page load
rodney waitstable Wait for DOM to stabilize
rodney waitidle Wait for network idle
rodney sleep <seconds> Sleep for N seconds
Screenshots:
rodney screenshot [-w N] [-h N] [file] Take page screenshot
rodney screenshot-el <sel> [f] Screenshot an element
Tabs:
rodney pages List all pages/tabs
rodney page <index> Switch to page by index
rodney newpage [url] Open a new page/tab
rodney closepage [index] Close a page/tab
Element queries:
rodney exists <selector> Check if element exists (exit 0/1)
rodney count <selector> Count matching elements
rodney visible <selector> Check if element is visible (exit 0/1)
Accessibility:
rodney ax-tree [--depth N] [--json] Dump accessibility tree
rodney ax-find [--name N] [--role R] [--json] Find accessible nodes
rodney ax-node <selector> [--json] Show accessibility info for element
Options:
--version Print version and exit
--help, -h, help Show this help message
rodney js auto-wraps expressions in () => { return <expr> }rodney open auto-prepends http:// if no protocol specifiedROD_TIMEOUT)rodney exists and rodney visible use exit codes: 0 = true, 1 = falserodney file accepts - to read file content from stdinrodney download accepts - to write content to stdoutrodney screenshot defaults to PNG formatrodney ax-* commands support --json for machine-readable output| name | description | version |
|---|---|---|
rodney |
This skill should be used when the user asks to "browse a website", "take a screenshot", "scrape a page", "interact with a webpage", "automate Chrome", "click a button on a page", "fill out a form", "run JavaScript in the browser", "check if an element exists", "get the accessibility tree", or any task involving headless Chrome browser automation. |
0.1.0 |
Rodney is a CLI tool that drives a persistent headless Chrome instance. Each command connects to the same long-running browser process via WebSocket, executes an action, and disconnects. This enables multi-step browser workflows from the shell.
Start Chrome before any other command. Stop it when done.
rodney start # launch headless Chrome
rodney stop # shut down Chrome
rodney status # check if Chrome is runningAlways run rodney start first. If a command fails with a connection error, check rodney status and restart if needed.
rodney open <url> # navigate (auto-prepends http:// if no protocol)
rodney back # history back
rodney forward # history forward
rodney reload # reload current pagerodney url # print current URL
rodney title # print page title
rodney html [selector] # print HTML (full page or element)
rodney text <selector> # print text content of element
rodney attr <selector> <name> # print attribute value
rodney pdf [file] # save page as PDFrodney click <selector> # click an element
rodney input <selector> <text> # type text into input
rodney clear <selector> # clear an input field
rodney file <selector> <path|-> # set file on file input (- for stdin)
rodney download <sel> [file|-] # download href/src target (- for stdout)
rodney select <selector> <val> # select dropdown option by value
rodney submit <selector> # submit a form
rodney hover <selector> # hover over element
rodney focus <selector> # focus an elementrodney js <expression>Expressions are auto-wrapped in an arrow function. Results are returned as pretty-printed JSON.
rodney js "document.title"
rodney js "document.querySelectorAll('a').length"Use wait commands to synchronize with page state before interacting.
rodney wait <selector> # wait for element to appear
rodney waitload # wait for page load event
rodney waitstable # wait for DOM to stop changing
rodney waitidle # wait for network requests to finish
rodney sleep <seconds> # sleep for N secondsBest practice: After rodney open, use rodney waitload or rodney waitidle before extracting content or interacting with elements.
rodney screenshot [-w N] [-h N] [file] # full page screenshot (PNG)
rodney screenshot-el <selector> [file] # screenshot a specific elementThese commands use exit codes to indicate results — useful in conditionals.
rodney exists <selector> # exit 0 if exists, 1 if not
rodney count <selector> # print count of matching elements
rodney visible <selector> # exit 0 if visible, 1 if notrodney pages # list all open tabs
rodney page <index> # switch to tab by index
rodney newpage [url] # open new tab (optionally navigate)
rodney closepage [index] # close a tabrodney ax-tree [--depth N] [--json] # dump full accessibility tree
rodney ax-find [--name N] [--role R] [--json] # find nodes by name/role
rodney ax-node <selector> [--json] # accessibility info for elementUse --json for structured output when parsing accessibility data.
rodney start
rodney open "https://example.com"
rodney waitload
rodney text "h1"
rodney stoprodney open "https://example.com/login"
rodney waitload
rodney input "#username" "user@example.com"
rodney input "#password" "secret"
rodney click "button[type=submit]"
rodney waitidlerodney open "https://example.com"
rodney waitload
if rodney exists ".cookie-banner"; then
rodney click ".cookie-banner .accept"
rodney waitstable
fi
rodney screenshot page.png| Variable | Purpose | Default |
|---|---|---|
ROD_CHROME_BIN |
Path to Chrome/Chromium binary | auto-detect |
ROD_TIMEOUT |
Element query timeout | 30s |
HTTPS_PROXY / HTTP_PROXY |
Proxy settings | none |
State is stored in ~/.rodney/state.json. Chrome user data persists in ~/.rodney/chrome-data/.
#id, .class, div > span)ROD_TIMEOUT for elements to appearfile command accepts - to read from stdindownload command accepts - to write to stdoutFor the full command reference with all flags and details:
references/commands.md — Complete command listing from rodney --help