Skip to content

Instantly share code, notes, and snippets.

@ndom91
Last active February 15, 2026 23:12
Show Gist options
  • Select an option

  • Save ndom91/d80637ec986616fb2f9d6446de7896f5 to your computer and use it in GitHub Desktop.

Select an option

Save ndom91/d80637ec986616fb2f9d6446de7896f5 to your computer and use it in GitHub Desktop.

Setup

Put these files in your ~/.claude/ dir.

  1. Create ~/.claude/skills/rodney
  2. Create ~/.claude/skills/rodney/references
  3. Put these files in:
    • ~/.claude/skills/rodney/SKILL.md
    • ~/.claude/skills/rodney/references/commands.md

Rodney Command Reference

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

Notes

  • All selectors are CSS selectors
  • rodney js auto-wraps expressions in () => { return <expr> }
  • rodney open auto-prepends http:// if no protocol specified
  • Element commands use rod's auto-wait (default 30s timeout via ROD_TIMEOUT)
  • rodney exists and rodney visible use exit codes: 0 = true, 1 = false
  • rodney file accepts - to read file content from stdin
  • rodney download accepts - to write content to stdout
  • rodney screenshot defaults to PNG format
  • rodney 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 – Chrome Automation CLI

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.

Lifecycle

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 running

Always run rodney start first. If a command fails with a connection error, check rodney status and restart if needed.

Navigation

rodney open <url>       # navigate (auto-prepends http:// if no protocol)
rodney back             # history back
rodney forward          # history forward
rodney reload           # reload current page

Page Info

rodney 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 PDF

Interaction

rodney 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 element

JavaScript Execution

rodney 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"

Waiting

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 seconds

Best practice: After rodney open, use rodney waitload or rodney waitidle before extracting content or interacting with elements.

Screenshots

rodney screenshot [-w N] [-h N] [file]   # full page screenshot (PNG)
rodney screenshot-el <selector> [file]    # screenshot a specific element

Element Queries

These 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 not

Tab Management

rodney 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 tab

Accessibility Tree

rodney 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 element

Use --json for structured output when parsing accessibility data.

Workflow Patterns

Scrape text from a page

rodney start
rodney open "https://example.com"
rodney waitload
rodney text "h1"
rodney stop

Fill and submit a form

rodney open "https://example.com/login"
rodney waitload
rodney input "#username" "user@example.com"
rodney input "#password" "secret"
rodney click "button[type=submit]"
rodney waitidle

Multi-step with conditional checks

rodney open "https://example.com"
rodney waitload
if rodney exists ".cookie-banner"; then
  rodney click ".cookie-banner .accept"
  rodney waitstable
fi
rodney screenshot page.png

Configuration

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/.

Important Notes

  • Selectors are CSS selectors throughout (e.g. #id, .class, div > span)
  • Rod's auto-wait applies to element queries — commands wait up to ROD_TIMEOUT for elements to appear
  • The file command accepts - to read from stdin
  • The download command accepts - to write to stdout
  • Authenticated HTTP proxies are handled automatically via a local forwarding proxy

Additional Resources

Reference Files

For the full command reference with all flags and details:

  • references/commands.md — Complete command listing from rodney --help
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment