From aget
Browser CLI for LLM agents that manages stealth Chromium sessions. Use for web page interaction, form filling, screenshots, scraping, and QA — replaces Playwright, Puppeteer, and Selenium.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aget:agetThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Browser CLI for LLM agents. `aget` launches managed CloakBrowser stealth Chromium, keeps browser sessions local, and returns JSON that agents can act on without parsing HTML.
Browser CLI for LLM agents. aget launches managed CloakBrowser stealth Chromium, keeps browser sessions local, and returns JSON that agents can act on without parsing HTML.
When browser work is needed — ALWAYS use aget. Never use Playwright, Puppeteer, Selenium, Python/JS browser automation scripts, raw CDP, direct websockets, or an already-running browser.
Use aget for:
Why not raw browser automation: it bypasses aget's managed CloakBrowser, JSON contract, refs, session lifecycle, security guidance, and token-saving reads.
aget CLI commands.aget open; aget manages CloakBrowser.aget profile create NAME --cookies FILE or aget open --cookies FILE. Never inject cookies via raw CDP.snapshot, read, find, and is before multi-step workflows.@e1/@i1 are the default for actions.sleep. Wait with aget page wait -s SID --text TEXT, --ref REF, --appear SELECTOR, or --load ready.aget page js for navigation, clicking, or form automation. JS is only a last-resort read/debug fallback.find --nth, or batch after probing.aget session close -s SID when finished.npm i -g agent-aget
aget version
aget version --check
Run aget doctor when install, browser resolution, or startup fails.
Need browser work?
├── Quick page read?
│ └── aget open URL -n NAME → aget page read -s SID --limit 80
├── Interactive page/form/auth?
│ └── aget open URL -n NAME → aget page snapshot -s SID → ref actions
├── Need to see browser window?
│ └── aget open URL --headful -n NAME
├── Need logged-in state?
│ └── aget profile create NAME --cookies FILE → aget open URL --profile NAME
├── Need to save SPA auth from current aget session?
│ └── aget profile save NAME -s SID
├── Mobile/tablet page?
│ └── aget open URL --device mobile|tablet -n NAME
├── Read-heavy research?
│ └── aget open URL --clean -n NAME → aget page read -s SID --limit 80
├── Dynamic element?
│ └── aget page find -s SID --role button --name Submit --action click
├── Many similar elements?
│ └── snapshot refs sequentially OR find --nth N --action click; no shell loops
├── Visual state matters?
│ └── aget page screenshot -s SID --path /tmp/page.png --annotate
├── Need API calls from SPA?
│ └── aget page network start -s SID → interact → aget page network list -s SID
└── Install/startup broken?
└── aget doctor
aget open URL -n NAME
aget page snapshot -s SID
aget page read -s SID --limit 80
aget page find -s SID --role button
aget page is -s SID --ref @e1 visible
After probing, act with refs or semantic locators:
aget page click -s SID --ref @e1
aget page fill -s SID --ref @i1 --text TEXT
aget page wait -s SID --text "Ready"
aget page snapshot -s SID --diff
Use aget batch -s SID --stdin only for known linear sequences. Batch has no branching; run steps one at a time when state may vary.
| Command | What |
|---|---|
aget open URL -n NAME | Open URL, return sid |
aget open URL --headful -n NAME | Visible browser window |
| `aget open URL --device mobile | tablet` |
aget open URL --profile NAME | Use persistent profile |
aget page snapshot -s SID | Get refs @e1/@i1 |
aget page snapshot -s SID --diff | Show changes since previous snapshot |
aget page read -s SID --limit 80 | Read page text |
aget page read -s SID --clean | Drop boilerplate noise |
aget page find -s SID --role button --name Submit | Semantic locator |
aget page find -s SID --role button --name Submit --action click | Find and act |
aget page click -s SID --ref @e1 | Click by ref |
aget page click -s SID --ref @e1 --force | Force click if occluded |
aget page fill -s SID --ref @i1 --text TEXT | Fill input |
aget page type -s SID --ref @i1 --text TEXT | Type without clearing |
aget page select -s SID --ref @i1 --value VALUE | Select option |
aget page check -s SID --ref @i1 | Check checkbox/radio |
aget page uncheck -s SID --ref @i1 | Uncheck checkbox |
aget page press -s SID --key Enter | Press key |
aget page wait -s SID --text "Ready" | Wait for text |
aget page wait -s SID --ref @e1 | Wait for visible ref |
aget page get -s SID text --ref @e1 | Read element text |
aget page is -s SID --ref @e1 visible | Check state |
aget page screenshot -s SID --path /tmp/page.png --annotate | Annotated screenshot |
aget batch -s SID --stdin | Known multi-step sequence |
aget session close -s SID | Close session |
aget profile create NAME --cookies FILE | Create profile with cookies |
aget profile save NAME -s SID | Save cookies + localStorage |
aget doctor | Diagnostics |
aget prompt | Full agent prompt |
open returns:
{"ok":true,"sid":"f7a2b3c4","name":"example","next_commands":{"snapshot":"aget page snapshot -s f7a2b3c4","read":"aget page read -s f7a2b3c4 --limit 80","close":"aget session close -s f7a2b3c4"}}
snapshot returns refs:
{"ok":true,"elements":[{"ref":"@e1","kind":"button","text":"Submit","visible":true,"enabled":true}]}
Errors are JSON too:
{"ok":false,"code":"ref_not_found","message":"...","details":{}}
| Error | What to do |
|---|---|
ref_not_found | Run aget page snapshot -s SID again; refs are ephemeral |
element_occluded | Dismiss blocker, or deliberately use --force |
locator_no_match | Broaden find criteria |
locator_ambiguous | Add --nth N or stricter role/name/text |
page_wait_timeout | Inspect current state with read/snapshot |
profile_in_use | Close the other session or use another profile |
| browser/install failure | Run aget doctor |
snapshot refs instead of dumping HTML.snapshot --diff after actions.read --limit N; add --clean for read-heavy pages.get text|value --ref REF for targeted reads.fill/type return text_len, not secret text.next_commands instead of guessing syntax.get--actionnpx claudepluginhub izzzzzi/agent-agetAutomates headless browser tasks with Vercel's agent-browser CLI: navigate URLs, snapshot interactive elements with refs (@e1), click/fill/type, scroll, test web pages.
Controls a headless browser via Vercel's agent-browser CLI for navigation, form filling, screenshots, and scraping using accessibility refs.
Automates headless browser tasks via Vercel's agent-browser CLI: navigate URLs, snapshot interactive elements with refs, click/fill forms, scrape data using Bash commands.