Automated summary
This skill lets you share your browser with another AI agent by generating a secure setup key and custom instructions.
Strengths
- One-time setup key expires in 5 minutes for secure access
- Supports both local and remote agents
- Each agent gets its own scoped tab
- Compatible with multiple agents (OpenClaw, Codex, Cursor, Hermes)
Limitations
- Requires the browse server to already be running
- ngrok tunnel is required for remote agents
- Session expires after 24 hours, requiring re-pairing
When another AI agent needs to browse the web using your existing browser session.
When you need permanent long-term browser access or when security policies prohibit browser sharing.
Security analysis
CautionThe skill uses Bash to interact with local processes (browser server, ngrok) and shares browser access with a remote agent. While it includes safety measures (one-time key, 5-min expiry, scoped tabs), the exposure of a local browser to an external entity through a tunnel carries inherent risk. No destructive or exfiltrating commands are present.
- •Exposes local browser service to remote agent via ngrok tunnel, which could be misused if paired with a malicious agent.
- •Uses Bash to execute local commands and modify config files (writing credentials directly), though with user consent.
Examples
Pair my browser with the OpenClaw agent running on this machine.Connect a remote Codex agent to my browser so it can navigate the web.Share my browser with Cursor so it can use my current session.name: pair-agent version: 0.1.0 description: | Pair a remote AI agent with your browser. One command generates a setup key and prints instructions the other agent can follow to connect. Works with OpenClaw, Hermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent gets its own tab with scoped access (read+write by default, admin on request). Use when asked to "pair agent", "connect agent", "share browser", "remote browser", "let another agent use my browser", or "give browser access". (gstack) voice-triggers:
- "pair agent"
- "connect agent"
- "share my browser"
- "remote browser access" triggers:
- pair with agent
- connect remote agent
- share my browser allowed-tools:
- Bash
- Read
- AskUserQuestion
{{PREAMBLE}}
/pair-agent — Share Your Browser With Another AI Agent
You're sitting in Claude Code with a browser running. You also have another AI agent open (OpenClaw, Hermes, Codex, Cursor, whatever). You want that other agent to be able to browse the web using YOUR browser. This skill makes that happen.
How it works
Your gstack browser runs a local HTTP server. This skill creates a one-time setup key, prints a block of instructions, and you paste those instructions into the other agent. The other agent exchanges the key for a session token, creates its own tab, and starts browsing. Each agent gets its own tab. They can't mess with each other's tabs.
The setup key expires in 5 minutes and can only be used once. If it leaks, it's dead before anyone can abuse it. The session token lasts 24 hours.
Same machine: If the other agent is on the same machine (like OpenClaw running locally), you can skip the copy-paste ceremony and write the credentials directly to the agent's config directory.
Remote: If the other agent is on a different machine, you need an ngrok tunnel. The skill will tell you if one is needed and how to set it up.
{{BROWSE_SETUP}}
Step 1: Check prerequisites
$B status 2>/dev/null
If the browse server is not running, start it:
$B goto about:blank
This ensures the server is up and healthy before pairing.
Step 2: Ask what they want
Use AskUserQuestion:
Which agent do you want to pair with your browser? This determines the instructions format and where credentials get written.
Options:
- A) OpenClaw (local or remote)
- B) Codex / OpenAI Agents (local)
- C) Cursor (local)
- D) Another Claude Code session (local or remote)
- E) Something else (generic HTTP instructions — use this for Hermes)
Based on the answer, set TARGET_HOST:
- A →
openclaw - B →
codex - C →
cursor - D →
claude - E → generic (no host-specific config)
Step 3: Local or remote?
Use AskUserQuestion:
Is the other agent running on this same machine, or on a different machine/server?
Same machine skips the copy-paste ceremony. Credentials are written directly to the agent's config directory. No tunnel needed.
Different machine generates a setup key and instruction block. If ngrok is installed, the tunnel starts automatically. If not, I'll walk you through setup.
RECOMMENDATION: Choose A if the agent is local. It's instant, no copy-paste needed.
Options:
- A) Same machine (write credentials directly)
- B) Different machine (generate instruction block for copy-paste)
Step 4: Execute pairing
If same machine (option A):
Run pair-agent with --local flag:
$B pair-agent --local TARGET_HOST
Replace TARGET_HOST with the value from Step 2 (openclaw, codex, cursor, etc.).
If it succeeds, tell the user: "Done. TARGET_HOST can now use your browser. It will read credentials from the config file that was written. Try asking it to navigate to a URL."
If it fails (host not found, write permission error), show the error and suggest using the generic remote flow instead.
If different machine (option B):
First, detect ngrok status:
which ngrok 2>/dev/null && echo "NGROK_INSTALLED" || echo "NGROK_NOT_INSTALLED"
ngrok config check 2>/dev/null && echo "NGROK_AUTHED" || echo "NGROK_NOT_AUTHED"
If ngrok is installed and authed: Just run the command. The CLI will auto-detect ngrok, start the tunnel, and print the instruction block with the tunnel URL:
$B pair-agent --client TARGET_HOST
If the user also needs admin access (JS execution, cookies, storage):
$B pair-agent --admin --client TARGET_HOST
CRITICAL: You MUST output the full instruction block to the user. The command prints everything between ═══ lines. Copy the ENTIRE block verbatim into your response so the user can copy-paste it into their other agent. Do NOT summarize it, do NOT skip it, do NOT just say "here's the output." The user needs to SEE the block to copy it. Output it inside a markdown code block so it's easy to select and copy.
Then tell the user: "Copy the block above and paste it into your other agent's chat. The setup key expires in 5 minutes."
If ngrok is installed but NOT authed: Walk the user through authentication:
Tell the user: "ngrok is installed but not logged in. Let's fix that:
- Go to https://dashboard.ngrok.com/get-started/your-authtoken
- Copy your auth token
- Come back here and I'll run the auth command for you."
STOP here and wait for the user to provide their auth token.
When they provide it, run:
ngrok config add-authtoken THEIR_TOKEN
Then retry $B pair-agent --client TARGET_HOST.
If ngrok is NOT installed: Walk the user through installation:
Tell the user: "To connect a remote agent, we need ngrok (a tunnel that exposes your local browser to the internet securely).
- Go to https://ngrok.com and sign up (free tier works)
- Install ngrok:
- macOS:
brew install ngrok - Linux:
snap install ngrokor download from ngrok.com/download
- macOS:
- Auth it:
ngrok config add-authtoken YOUR_TOKEN(get your token from https://dashboard.ngrok.com/get-started/your-authtoken) - Come back here and run
/pair-agentagain."
STOP here. Wait for the user to install ngrok and re-invoke.
Step 5: Verify connection
After the user pastes the instructions into the other agent, wait a moment then check:
$B status
Look for the connected agent in the status output. If it appears, tell the user: "The remote agent is connected and has its own tab. You'll see its activity in the side panel if you have GStack Browser open."
What the remote agent can do
With default (read+write) access:
- Navigate to URLs, click elements, fill forms, take screenshots
- Read page content (text, HTML, snapshot)
- Create new tabs (each agent gets its own)
- Cannot execute arbitrary JavaScript, read cookies, or access storage
With admin access (--admin flag):
- Everything above, plus JS execution, cookie access, storage access
- Use sparingly. Only for agents you fully trust.
Troubleshooting
"Tab not owned by your agent" — The remote agent tried to interact with a tab
it didn't create. Tell it to run newtab first to get its own tab.
"Domain not allowed" — The token has domain restrictions. Re-pair with broader domain access or no domain restrictions.
"Rate limit exceeded" — The agent is sending > 10 requests/second. It should wait for the Retry-After header and slow down.
"Token expired" — The 24-hour session expired. Run /pair-agent again to
generate a new setup key.
Agent can't reach the server — If remote, check the ngrok tunnel is running
($B status). If local, check the browse server is running.
Platform-specific notes
OpenClaw / AlphaClaw
OpenClaw agents use the exec tool instead of Bash. The instruction block uses
exec curl syntax which OpenClaw understands natively. When using --local openclaw,
credentials are written to ~/.openclaw/skills/gstack/browse-remote.json.
Codex
Codex agents can execute shell commands via codex exec. The instruction block's
curl commands work directly. When using --local codex, credentials are written
to ~/.codex/skills/gstack/browse-remote.json.
Cursor
Cursor's AI can run terminal commands. The instruction block works as-is.
When using --local cursor, credentials are written to
~/.cursor/skills/gstack/browse-remote.json.
Revoking access
To disconnect a specific agent:
$B tunnel revoke AGENT_NAME
To disconnect all agents and rotate the root token:
# This invalidates ALL scoped tokens immediately
$B tunnel rotate
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/share-your-browser-with-another-ai-agent-msh3ut19/download' --output '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md.part' && mv '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md.part' '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md' && test -s '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/pair-agent' && cp -R '.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19' '.claude/skills/pair-agent'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19'openskills read 'share-your-browser-with-another-ai-agent-msh3ut19'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/share-your-browser-with-another-ai-agent-msh3ut19/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.