Claude-skill-registry browser-control
Full browser control for authenticated web interactions using Playwright scripts
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/browser-control" ~/.claude/skills/majiayu000-claude-skill-registry-browser-control && rm -rf "$T"
manifest:
skills/data/browser-control/SKILL.mdsource content
Browser Control Skill
Full browser automation for travel research requiring authentication or complex interactions.
When to Activate
Use this skill when you need to:
- Access authenticated pages (Marriott, Alaska Airlines accounts)
- Check real-time availability and prices
- Scrape forum threads (FlyerTalk, Reddit)
- Interact with JavaScript-heavy travel sites
- Fill forms or perform searches on websites
Architecture
Script-based approach - No MCP overhead. Scripts load only when needed.
Prerequisites
-
Geoffrey Chrome Profile must be running with remote debugging:
./scripts/launch-chrome.sh -
Profile must have logins saved for:
- Marriott Bonvoy
- Alaska Airlines Mileage Plan
- FlyerTalk
- TripAdvisor
Available Scripts
All scripts are in
./scripts/ and use Playwright connecting via CDP.
| Script | Purpose | Usage |
|---|---|---|
| Start Geoffrey Chrome profile | |
| Navigate to URL and get page content | |
| Take screenshot of page | |
| Extract text/data from page | |
| Click, type, select on page | |
| Search travel sites | |
Usage Examples
Check Marriott Points Availability
# Navigate to Marriott search bun scripts/navigate.js "https://www.marriott.com/search/default.mi" # Or use the search script bun scripts/search.js marriott "Westin Rusutsu February 2026"
Get FlyerTalk Thread Content
bun scripts/extract.js "https://www.flyertalk.com/forum/thread-url" ".post-content"
Screenshot Hotel Page
bun scripts/screenshot.js "https://www.marriott.com/hotels/travel/ctswi-the-westin-rusutsu-resort/" rusutsu.png
Screenshot Protection & Lazy-Loading
Auto-Resize Protection (ALL screenshots):
- Post-capture resize using Sharp to max 7500px per dimension
- Maintains aspect ratio, prevents Claude Code API crashes
- Every screenshot guaranteed
safeToRead: true
Lazy-Loading Limitation (AirBnB, dynamic sites):
- Sites with lazy-loading show grey placeholders in fullPage mode
- Images only load when scrolled into viewport
- Solution: Use viewport screenshots (no --full flag) or
screenshot-current.js
# For lazy-loading sites, screenshot current viewport bun scripts/screenshot-current.js /tmp/output.png # Or navigate + viewport screenshot bun scripts/screenshot.js "https://airbnb.com/..." /tmp/output.png
Example output:
{ "success": true, "url": "https://example.com", "title": "Example Page", "screenshot": "/tmp/screenshot.png", "dimensions": { "width": 1920, "height": 1080 }, "originalDimensions": { "width": 1920, "height": 1080 }, "scaled": false, "safeToRead": true, "timestamp": "2025-11-28T..." }
Connection Details
Scripts connect to Chrome via Chrome DevTools Protocol (CDP):
- URL:
http://127.0.0.1:9222 - Profile:
~/.chrome-geoffrey
Error Handling
If scripts fail to connect:
- Ensure Chrome is running with
./scripts/launch-chrome.sh - Check port 9222 is not in use:
lsof -i :9222 - Kill existing Chrome debugger:
pkill -f "remote-debugging-port"
Output Format
All scripts return JSON:
{ "success": true, "url": "https://example.com", "title": "Page Title", "content": "Extracted content or action result", "timestamp": "2025-11-22T..." }
Limitations
- Requires Geoffrey Chrome profile to be running
- Cannot bypass CAPTCHAs (uses real browser fingerprint to avoid most)
- Heavy sites may be slow
- Some sites block automation despite real browser
Future Enhancements
- Add cookie/session export for headless runs
- 1Password CLI integration for credential rotation
- Parallel page operations
- Browser-Use (Python) for complex visual tasks