chrome
SkillWeb & browsingA fallback for bypassing issues in the browser skill. The chrome skill is working with a real browser with the users full session data, cookies, auth. It's not headless so you can use chrome to bypass captchas and automation detection that the browser skill can run into
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the chrome skill
What this skill tells your AI
The instructions your AI receives, as published by yspreen/dotfiles in .claude/skills/chrome/SKILL.md and read by ahel’s review.
You can run actions to interface with Chrome like this command:
codex --yolo --model=$model -c model_reasoning_effort="low" e "/chrome Please list the user's open tabs" 2>/dev/null
where $model can be one of:
gpt-5.6-terra
gpt-5.6-sol
and Please list the user's open tabs is an example action.
Default to Terra. Sol is only intended for tricky tasks. Normal browsing, page reading, tab management, and form interaction should use Terra.
There's no concept of past commands here. Each execution starts with a blank slate. So saying something like "Please re-open that url" won't make any sense to the chrome interface agent. Each command is stateless. Only the chrome browser itself has state.
Tell Codex what to do with the /chrome prefix. The Chrome plugin controls the user's existing Chrome session and can use open tabs, logged-in sessions, and installed extensions.
Browser connection
Chrome plugin can:
- List available browser connections.
- Connect to Chrome through the extension connection.
- Read Chrome API documentation.
- Name the current automation session.
- List and inspect optional capabilities exposed by the current connection.
Underlying commands include:
agent.browsers.list()agent.browsers.get("extension")chrome.documentation()chrome.nameSession("name")chrome.capabilities.list()chrome.capabilities.get(id)
User Chrome state
- List the user's open tabs across Chrome windows.
- Claim an existing user tab so the session can control it.
- Read browsing history.
- Filter history by:
- Start time
- End time
- Maximum results
- Search queries
- History results can include URL, page title, and visit timestamp.
Underlying commands:
chrome.user.openTabs()chrome.user.claimTab(tab)chrome.user.history(options)
The plugin does not expose cookies, passwords, local storage, browser profiles, or session stores.
Tab management
- List tabs controlled by the current session.
- Get the selected controlled tab.
- Retrieve a controlled tab by ID.
- Open a new tab.
- Close a tab.
- Clean up session-created tabs while choosing whether to keep them.
Underlying commands:
chrome.tabs.list()chrome.tabs.selected()chrome.tabs.get(id)chrome.tabs.new()tab.close()chrome.tabs.finalize({ keep })
Tab navigation:
tab.goto(url)tab.reload()tab.back()tab.forward()tab.url()tab.title()
No direct commands for:
- Pinning or reordering tabs
- Moving tabs between windows
- Creating or editing tab groups
- Switching Chrome windows directly
- Renaming tabs
Page inspection
- Inspect visible DOM and accessible page structure.
- Capture viewport or full-page screenshots.
- Run read-only JavaScript against the page DOM.
- Read captured console logs.
- Inspect active JavaScript dialogs.
Underlying commands:
tab.playwright.domSnapshot()tab.screenshot(options)tab.playwright.evaluate(...)tab.dev.logs(options)tab.getJsDialog()
Screenshot options include:
fullPageclip
Console-log filters include:
filterlevelslimit
Searching
There is no dedicated chrome.search() command.
Search by telling Codex to:
- Navigate to Google, Bing, or another search engine.
- Fill the search field and submit it.
- Read search results.
- Open a result.
- Navigate directly to a known search URL.
- Search visible content on the current page using DOM inspection or the site's search controls.
Examples:
/chrome Search Google for the latest Chrome extension API documentation and summarize the first five results
/chrome Search the current page for references to WebSockets
Page interaction
Chrome supports Playwright-style semantic locators:
getByRole(role, options)getByLabel(text, options)getByPlaceholder(text, options)getByText(text, options)getByTestId(testId)locator(selector)frameLocator(selector)
Locator inspection:
count()isVisible()isEnabled()innerText()textContent()getAttribute(name)allTextContents()all()evaluate(...)
Locator actions:
click()dblclick()fill(value)type(value)press(key)check()uncheck()setChecked(value)selectOption(value)waitFor(options)
Supported tasks include:
- Click buttons and links.
- Fill and submit forms.
- Type into fields.
- Press keyboard keys.
- Select dropdown options.
- Check and uncheck boxes.
- Double-click.
- Scroll.
- Interact with iframes.
- Read visible text and attributes.
- Inspect page state after actions.
- Take screenshots.
- Read console errors and logs.
Coordinate and visual interaction
tab.cua supports mouse and keyboard control:
click({ x, y })double_click({ x, y })drag({ path })move({ x, y })scroll({ x, y, scrollX, scrollY })keypress({ keys })type({ text })
tab.dom_cua supports DOM-node interaction:
get_visible_dom()click({ node_id })double_click({ node_id })keypress({ keys })type({ text })scroll({ node_id, x, y })
Use these when normal semantic locators fail.
Downloads
Chrome can trigger and wait for browser downloads:
tab.playwright.waitForEvent("download")locator.downloadMedia()
Limits:
- No documented command chooses the downloaded filename.
- No documented command reads a completed download directly from the download object.
- No general Chrome Downloads-page management API exists.
- Download permission prompts may require confirmation.
- The plugin can inspect download links and trigger downloads when appropriate.
File uploads
Chrome can upload local files through file chooser controls:
tab.playwright.waitForEvent("filechooser")fileChooser.isMultiple()fileChooser.setFiles(path)
Uploading transmits local data to a website. Only upload files when the user clearly authorizes the destination and files.
Clipboard
tab.clipboard.read()tab.clipboard.readText()tab.clipboard.write(items)tab.clipboard.writeText(text)
Clipboard items can contain MIME type, text, base64 binary data, and presentation style.
Dialogs
Supported dialogs:
- Alert
- Confirm
- Prompt
- Before-unload
Actions:
dialog.dismiss()dialog.accept()dialog.accept(text)for prompts
Waiting and navigation events
waitForEvent("download")waitForEvent("filechooser")waitForLoadState()waitForURL(url)waitForTimeout(milliseconds)expectNavigation(action, options)
Supported load states:
commitdomcontentloadedloadnetworkidle
Optional page capabilities
Optional capabilities vary by Chrome connection. Discover them before use:
await tab.capabilities.list()
await (await tab.capabilities.get("pageAssets")).documentation()
One documented capability is pageAssets, which can list observed page assets and bundle selected assets into a temporary local artifact.
Bookmarks
No dedicated bookmarks API is exposed.
Cannot directly:
- List bookmarks.
- Create bookmarks.
- Edit bookmark names or URLs.
- Delete bookmarks.
- Organize bookmark folders.
Codex may be able to interact with visible Chrome bookmark UI when that UI is exposed to the controlled page, but this is not a guaranteed plugin capability.
Unsupported Chrome state and settings
No dedicated APIs for:
- Extensions management
- Chrome settings
- Autofill
- Saved passwords
- Payment methods
- Cookies
- Cache
- Permissions management
- Downloads history
- Browser profile switching
- Incognito-window management
- Browser window resizing
- Installing extensions
External effects and confirmation
Reading pages, listing tabs, reading history, inspecting DOM, reading logs, and taking screenshots are normally read-only.
Actions with external effects include:
- Sending or submitting forms
- Uploading files
- Downloading files
- Purchases
- Posting messages or content
- Changing account or site settings
- Changing permissions
- Installing software or extensions
- Saving passwords or payment methods
- Accepting camera, microphone, location, download, or login permissions
- Deleting meaningful data
Require explicit instruction or confirmation before consequential external effects unless the user's request already clearly authorizes the exact action.
Plugin status
Chrome connector surface covers:
- Existing Chrome tabs and logged-in sessions
- Tab creation, selection, navigation, and closing
- Browsing history
- DOM and accessibility inspection
- Screenshots
- Website search through normal page interaction
- Form filling and controls
- Mouse and keyboard interaction
- Iframes
- Downloads and uploads
- Clipboard
- JavaScript dialogs
- Console logs
- Optional page assets
It does not provide dedicated bookmark, cookie, password, Chrome settings, extension-management, tab-group, or downloads-history APIs.
Signals
- GitHub stars
- 33
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
chrome-yspreen- Source
- github.com/yspreen/dotfiles