browserlisted
Install: claude install-skill s3ntin3l8/mullion-session-manager
# Mullion browser automation
Check for `$MULLION_SOCKET_PATH` before following anything below — if it's
unset, you're not inside a Mullion-hosted session and this control surface
isn't available. Even inside a session, this only works if `BROWSER_ENABLED`
is on and a browser pane is bound to it — if `mullion browser <action>` (or
the MCP tools) reply with an error saying no browser is bound, that's the
reason, not a bug.
## Actions
`mullion browser <action>` (or the MCP `browser_action`/`use_browser`
tools) drives the pane: `navigate`, `snapshot`, `click`, `fill`, `type`,
`press`, `select`, `check`/`uncheck`, `hover`, `scroll`, `wait`, `dialog`,
`get`, `eval`, `screenshot`, `console`, `errors`, `find`, `download`. See
`docs/cli.md`'s browser table for each action's full argument shape.
## Capturing a file download
`download` retrieves a file the previewed app triggers a browser download
for (a CSV export, a PDF report, ...). The download is captured by a
listener installed once at browser-launch time, so it doesn't matter
whether the triggering click already happened before you think to call
`download` — it waits up to `timeout_ms` (default 30s, capped at 120s) if
nothing's buffered yet. Pass `contents: true` (`--contents`, or implicitly
via `--out <path>` on the CLI) to get the file's bytes back as base64,
subject to a 1 MiB `max_bytes` cap. `path` is host-local; `contents` is the
portable field if the session is remote-hosted.
## The ref-invalidation footgun
A `ref`