iamzhihuix/browser
Minimal Chrome DevTools Protocol tools for browser automation and scraping. Use when you need to start Chrome, navigate pages, execute JavaScript, take screenshots, or interactively pick DOM elements. Triggers include "browse website", "scrape page", "take screenshot", "automate browser", "extract DOM", "web scraping".
npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill browser
Minimal CDP tools for collaborative site exploration and scraping.
Credits: Based on Mario Zechner's article What if you don't need MCP?, adapted from Factory.ai.
Before first use, install dependencies:
npm install --prefix skills/browser
./skills/browser/scripts/start.js # Fresh profile
./skills/browser/scripts/start.js --profile # Copy your profile (cookies, logins)
Start Chrome on :9222 with remote debugging.
./skills/browser/scripts/nav.js https://example.com
./skills/browser/scripts/nav.js https://example.com --new
Navigate current tab or open new tab.
./skills/browser/scripts/eval.js 'document.title'
./skills/browser/scripts/eval.js 'document.querySelectorAll("a").length'
Execute JavaScript in active tab (async context).
IMPORTANT: The code must be a single expression or use IIFE for multiple statements:
'document.title''(() => { const x = 1; return x + 1; })()'./skills/browser/scripts/screenshot.js
Screenshot current viewport, returns temp file path.
./skills/browser/scripts/pick.js "Click the submit button"
Interactive element picker. Click to select, Cmd/Ctrl+Click for multi-select, Enter to finish.
start.js --profile to mirror your authenticated state.nav.js https://target.app or open secondary tabs with --new.eval.js for quick counts, attribute checks, or extracting JSON payloads.screenshot.js for visual proof or pick.js when you need precise selectors or text snapshots.--profile flag syncs your actual Chrome profile so you're logged in everywhereTake iamzhihuix/browser from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.