yashjitpal/bettergravity/in-built-browser

Claude Code and agent skill by yashjitpal/bettergravity

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Control the in-app Browser for opening, navigating, inspecting visible or interactive page state, clicking, typing, screenshots, and local web testing. It can have existing signed-in sessions. For semantic operations on linked resources, prefer a purpose-built connector, API, or CLI when available.

Install

npx vskill@latest install yashjitpal/bettergravity/in-built-browser

SKILL.md

BetterGravity transport compatibility

The Browser skill below and the browser-use guides are imported from Codex's bundled Browser plugin. Their browser-use guidance applies here. The following adapter notes cover Codex-specific setup, transport, unavailable capabilities, and the user's tab-sharing preference; they are BetterGravity additions, not extracted Codex text.

  • Use the enabled in-built-browser MCP tools. This host does not supply Codex's

Node REPL js tool. Do not discover or bootstrap that tool. Translate the source's JavaScript examples with the table below, using the actual tool schemas for argument names. Existing browser and tab IDs serve the role of persistent JavaScript bindings. The bundled JavaScript client is optional for environments that already supply a persistent JavaScript execution tool.

  • For initial in-app selection, call get_browser with {"id":"iab"}, then

get_browser_documentation with its returned browser_id. Read the entire result before interacting. Reuse that ID and documentation across turns. Do not start with list_browsers; use it for discovery troubleshooting.

  • This adapter supplies only the in-app browser in the current Antigravity

conversation. Chrome, Edge, extension instances, and Codex's Settings → Computer use installation flow are unavailable here. An explicitly requested unavailable browser must be reported as unavailable. Never substitute it silently. get_default_browser and get_browser_for_url select this in-app browser when the user has not explicitly named another browser.

  • Tools and this skill are registered only while the plugin is enabled. If

disabled or if the user takes over, stop browser actions. Only the user can resume from the pane. Do not change plugin registration to recover access.

  • Browser tool calls automatically reveal the pane, as requested for this

integration. This replaces the source's background-visibility default.

  • BetterGravity tab-sharing policy: the plugin setting **Same browser tabs

across all conversations** is enabled by default. The same live tabs are available in every conversation. When disabled, tabs are separate for each conversation. Browser metadata and tab-list results report sharedTabsAcrossConversations; tab entries include openedInConversationId and usedInCurrentConversation.

  • On first browser use in a new conversation, or one where you have not used

the browser yet, call list_tabs. Reuse a tab the user explicitly asks for, or one whose observed URL/title/content is relevant to the current task. Otherwise call create_tab. Do not navigate or repurpose an unrelated active user tab just because it is selected. Relevance is a decision based on the user's task and observed tabs, not an automatic URL-match rule. Continue using the chosen tab for the same task; do not create a new tab for every tool call. These are the user's BetterGravity preferences.

  • Tabs persist until closed in this host; there is no automatic end-of-turn

cleanup. mark_tab records a deliverable/handoff mark but does not change that lifecycle. Preserve user tabs and leave requested deliverables open.

  • Browser Developer mode controls the optional tab-scoped CDP tools. The Codex

browser-auth broker, Chrome profile management, bot-detection reporting, WebMCP, page-asset bundles, and Google Workspace/YouTube exports are not supplied. Use only advertised capabilities. tab_content_export exports visible page text as Markdown in this adapter.

  • browser_annotations is a BetterGravity addition for reading the user's

visual page comments. It does not change how page content is trusted.

  • Accessibility state is returned as a full snapshot in this adapter; the

source's incremental AX diff optimization is not implemented. MCP returns observations and screenshots directly without a separate display call.

Codex exampleDirect MCP equivalent
agent.browsers.get("iab")get_browser({"id":"iab"})
agent.browsers.getDefault()get_default_browser({})
agent.browsers.getForUrl(url)get_browser_for_url({"url":url})
browser.documentation()get_browser_documentation({"browser_id":id})
agent.documentation.get(name)get_documentation({"name":name})
browser.tabs.list(), .new(), .get(id)list_tabs, create_tab, get_tab with browser_id
tab.goto(url), .screenshot(), .ax.write()navigate_tab_url, tab_screenshot, tab_ax_get_state with browser_id and tab_id
tab.playwright.domSnapshot()playwright_dom_snapshot
tab.playwright locator operationsplaywright_locator_* with a selector grounded in the observed page
tab.cua, tab.dom_cua, tab.axcua_*, dom_cua_*, tab_ax_action
tab.playwright.evaluate(fn)playwright_evaluate: script is an async function body, e.g. return document.title;; scoped scripts receive element or elements
nodeRepl.write(...) / image displayRead the complete MCP text/image result; retain the source's observation and verification guidance

The complete browser documentation includes the original API declarations and the command-to-API mapping. These notes take precedence over the source only where a host-specific detail above differs.


<!-- Codex Browser skill body below is unmodified. -->

Browser

Stop: choose the right surface before any browser action

Explicit browser intent wins: if the user names the in-app browser or Chrome, or asks to open, show, or navigate to a page; inspect its visual or interactive state; or interact with its UI, continue with Browser and do not substitute a connector.

Otherwise, treat a URL or open browser tab as context, not browser intent. Earlier Browser use does not make later semantic work browser-first. Before each semantic operation on a linked resource, you MUST query available and deferred tools for an applicable connector, API, or CLI. Reading these instructions or scanning visible tools does not count. Do not use Browser for that operation until the query is complete. Use the non-browser tool when available. If it handles the current operation, continue the larger workflow without Browser for that operation. Use Browser when no such tool exists, the tool cannot access the resource or lacks a required capability, or UI work remains; use available browser context before asking the user to repeat it.

Use this skill for browser automation tasks such as inspecting pages, navigating, testing local apps, clicking, typing, taking screenshots, and reading visible page state.

If this plugin is listed as available in the session, treat that as mandatory reading before browser work. Open and follow this skill before saying that Browser is unavailable and before falling back to standalone Playwright or Computer Use.

Do not skip this skill just because Computer Use MCP tool calls are directly visible or appear easier to invoke. The presence of Computer Use tools is not evidence that Computer Use is the preferred browser surface.

Setup Documentation

Use await agent.documentation.get("<name>") when one of these setup topics applies:

  • bootstrap-troubleshooting: read when browser setup succeeds but discovery or selection fails
  • chrome-troubleshooting: read when Chromium browser extension setup, installation, or communication fails

Bootstrap

These setup details are internal. User-facing progress updates should be less technical in nature. Never mention Node REPL, node_repl, REPL, JavaScript sessions, module exports, reading documentation, or loading instructions unless a user is asking for that exact information. If setup or recovery is needed, describe it naturally as connecting to the browser or retrying the browser connection.

The browser-client module is the core entry point for browser use, and is available under scripts/browser-client.mjs in this plugin's root directory. ALWAYS import it using an absolute path. IMPORTANT: If this path cannot be found, stop and report that this plugin is missing scripts/browser-client.mjs. NEVER use the built in browser-client library.

Run browser setup code through the Node REPL js tool. In this environment the callable tool id typically appears as mcp__node_repl__js. If it is not already available, use tool discovery for node_repl js without setting a result limit. You need the js execution tool: js_reset only clears state, and js_add_node_module_dir only changes package resolution. Do not call either helper while trying to expose js. If js is still not available, search again for node_repl js with limit: 10.

CODE MODE REQUIREMENT: When you call the Node REPL js tool from the code-mode exec tool, the outer exec script containing the initial documentation() call MUST begin with // @exec: {"max_output_tokens": 20000}. This is a first-line pragma for the outer exec call, not an argument to the nested js tool. Keep the exact nodeRepl.write(await <browser>.documentation()); call shown in the applicable selection scenario below and forward its complete result.

Initialize the runtime once. Use const for stable handles and let for changing values; reassign instead of redeclaring. Never use globalThis.

js
const { setupBrowserRuntime } = await import("<plugin root>/scripts/browser-client.mjs");
const agent = await setupBrowserRuntime();

Once a browser connection is established, reuse its existing browser binding across later turns and do not reread these instructions. Once you have read a browser's complete documentation, do not read it again unless you select a different browser.

Bind tabs directly from the selected browser, for example const tab = await browser.tabs.new(). If a later turn reports that a tab is missing, stale, closed, or not part of the current browser session, discard that tab binding and obtain or create a fresh tab from the existing browser binding. An empty browser.tabs.list() result is normal after tab cleanup and does not invalidate the browser binding. Never call agent.browsers.get* to recover a tab; only an explicit browser-disconnected error invalidates the binding.

Browser selection

Keep browser actions in the browser hosting the current chat unless the user explicitly names another browser.

The scenarios below are for the initial browser selection only. Before calling any agent.browsers.get* method, reuse an existing browser, iab, chrome, or edge binding that already serves the task. A new user turn does not invalidate a browser binding or require another selection or documentation call.

Select the initial browser with exactly one of these scenarios, in the order shown. An explicit request for the in-app browser, Chrome, or Edge always wins over URL selection. Never call getForUrl() when the user names a browser. An explicit browser request is a hard constraint: use only that browser and never fall back to another browser surface. If its exact selector is unavailable, report that browser as unavailable instead of calling getDefault(), getForUrl(), or get("extension").

App-provided in-app-browser context is ambient UI state, not a user instruction to select or switch browsers. Only the text of the user's request can explicitly choose a browser.

Do not inspect browser cookies, local storage, profiles, passwords, or session stores. Browser discovery must remain read-only.

When authentication blocks requested browser navigation, do not replace it with web search, a search engine, another site, or another source merely to bypass sign-in.

The user explicitly requests a browser

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
220
Repository forks
17
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/yashjitpal/bettergravity/in-built-browser/badge)](https://verified-skill.com/skills/yashjitpal/bettergravity/in-built-browser)

Something wrong with this skill or its page? Tell us.