This skill should be used when the user asks to "browse a website", "automate a browser", "fill out a form", "click a button on a page", "extract text from a site", "set up a tool", "configure a CRM", "navigate to a URL", "interact with a web app", "manage browser profiles", "open multiple browsers", or needs to control Chrome instances via PinchTab. Also triggers for "pinchtab", "headless browser", or "browser automation".
From pinchtab-browser-controlnpx claudepluginhub nbkm8y5/claude-plugins --plugin pinchtab-browser-controlThis skill uses the workspace's default tool permissions.
references/api-reference.mdreferences/profile-management.mdExecutes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Control Chrome browsers programmatically via PinchTab's HTTP API running at http://localhost:9867. PinchTab manages persistent browser profiles — once a user logs into a site, that session persists across restarts.
Instances — Running Chrome processes. Each has a unique tab ID.
Profiles — Persistent browser state (cookies, storage, logins). One profile per instance.
Tabs — Individual pages within an instance. Referenced by tab ID.
Element refs — Stable identifiers (e.g., e5, e12) for clickable/fillable elements on a page.
# Fresh instance (ephemeral)
curl -s -X POST http://localhost:9867/instances | jq .
# Named profile (persistent logins)
curl -s -X POST http://localhost:9867/instances -H "Content-Type: application/json" -d '{"profile": "my-ghl-account"}' | jq .
The response includes a tabId — save this for all subsequent operations on this instance.
curl -s http://localhost:9867/instances | jq .
curl -s -X DELETE http://localhost:9867/instances/{tabId}
# Navigate to a URL
curl -s -X POST http://localhost:9867/instances/{tabId}/action \
-H "Content-Type: application/json" \
-d '{"action": "navigate", "url": "https://example.com"}'
curl -s "http://localhost:9867/instances/{tabId}/snapshot?filter=interactive" | jq .
This returns elements with stable refs like e5, e12. Use these refs for clicking and filling.
curl -s "http://localhost:9867/instances/{tabId}/snapshot" | jq .
curl -s "http://localhost:9867/instances/{tabId}/text" | jq .
curl -s -X POST http://localhost:9867/instances/{tabId}/action \
-H "Content-Type: application/json" \
-d '{"action": "click", "ref": "e5"}'
curl -s -X POST http://localhost:9867/instances/{tabId}/action \
-H "Content-Type: application/json" \
-d '{"action": "fill", "ref": "e3", "value": "Hello world"}'
curl -s -X POST http://localhost:9867/instances/{tabId}/action \
-H "Content-Type: application/json" \
-d '{"action": "press", "ref": "e3", "key": "Enter"}'
For multi-account operations (e.g., posting across social media accounts):
{"profile": "youtube-brand-acct"}{"profile": "x-personal"}{"profile": "ghl-main"}Critical pattern: Always re-snapshot after navigation or clicking — the page state changes and element refs may update.
sleep 2 && curl -s "http://localhost:9867/instances/{tabId}/snapshot?filter=interactive"
references/api-reference.md — Complete HTTP API endpoint documentationreferences/profile-management.md — Detailed guide on managing persistent profiles for multi-account workflows