skills/web-browser/SKILL.md
Allows to interact with web pages by performing actions such as clicking buttons, filling out forms, and navigating links. It works by remote controlling Google Chrome or Chromium browsers using the Chrome DevTools Protocol (CDP). When Claude needs to browse the web, it can use this skill to do so.
npx skillsauth add dwsy/agent web-browserInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Full-featured browser automation with CDP tools for collaborative site exploration.
🔧 修复说明:已修复关闭主浏览器的问题。现在使用完全独立的浏览器实例,不影响你的主 Chrome。详见 FIX_NOTE.md
🎲 随机端口:每次启动时自动生成随机端口(9222-9999),避免端口冲突。端口信息保存在 ~/.cache/scraping-web-browser/port.txt,下次启动会复用相同端口。
💾 持久化存储:默认使用 Chromium 浏览器,数据持久化保存在 ~/.cache/scraping-web-browser/,包括 cookies、localStorage、session data 等,重启后自动恢复。
# Run demo to test everything works
node demo.js
# Get current port
node scripts/get-port.js
# Start Chromium browser (default, with persistent storage)
node scripts/start.js
```bash ./scripts/start.js # Start Chromium with persistent storage ./scripts/start.js --chrome # Use Google Chrome instead of Chromium ```
Start Chromium on a random port (9222-9999) with remote debugging. The port is saved and reused for subsequent starts.
Important: This skill starts a completely independent browser instance with its own profile directory (~/.cache/scraping-web-browser). It will NOT affect your existing Chrome browser or close any open tabs. The browser runs in the background and persists cookies, localStorage, and session data between restarts.
```bash ./scripts/stop.js # Stop the browser ```
Gracefully stop the browser. Port configuration is preserved for next start.
```bash ./scripts/get-port.js # Show current port ```
```bash ./scripts/nav.js https://example.com ./scripts/nav.js https://example.com --new ```
Navigate current tab or open new tab.
```bash ./scripts/reload.js # Normal reload ./scripts/reload.js --force-cache # Force using cache ./scripts/reload.js --force-no-cache # Force reload without cache ```
Reload the current page with cache control.
```bash ./scripts/tabs.js list # List all tabs ./scripts/tabs.js new # Open new tab ./scripts/tabs.js new "https://example.com" # Open new tab with URL ./scripts/tabs.js switch 1 # Switch to tab by index ./scripts/tabs.js close 0 # Close tab by index ./scripts/tabs.js close-others # Close all other tabs ```
Manage browser tabs.
```bash ./scripts/click.js "#submit-button" ./scripts/click.js ".cta-button" ```
Click an element by selector.
```bash ./scripts/type.js "#username" "[email protected]" ./scripts/type.js "#password" "secret123" ./scripts/type.js "#search" "query" --clear # Clear before typing ```
Type text into an input field.
```bash ./scripts/select.js "#country" "United States" ./scripts/select.js "select[name=language]" "JavaScript" ```
Select an option from a dropdown.
```bash ./scripts/checkbox.js "#terms" check ./scripts/checkbox.js "#newsletter" uncheck ./scripts/checkbox.js "[name=privacy]" toggle ```
Check, uncheck, or toggle checkboxes and radiobuttons.
```bash ./scripts/submit.js "form" ./scripts/submit.js "#login-form" ```
Submit a form.
```bash ./scripts/wait-for.js selector "#result" ./scripts/wait-for.js visible ".loading" ./scripts/wait-for.js hidden ".spinner" ./scripts/wait-for.js text "Success" ./scripts/wait-for.js url "/dashboard" 5000 ```
Wait for elements, visibility, text, or URL changes.
```bash ./scripts/wait-for-url.js "https://example.com/dashboard" ./scripts/wait-for-url.js "/success" 5000 ```
Wait for URL to change to a specific value.
```bash ./scripts/check-visible.js "#button" ./scripts/check-visible.js ".modal" ```
Check if an element is visible.
```bash ./scripts/get-element.js "#button" ./scripts/get-element.js ".card" ```
Get detailed information about an element.
```bash ./scripts/cookies.js list ./scripts/cookies.js get "session" ./scripts/cookies.js set "token" "abc123" ./scripts/cookies.js delete "session" ./scripts/cookies.js clear ./scripts/cookies.js export cookies.json ./scripts/cookies.js import cookies.json ```
Manage cookies (list, get, set, delete, clear, export, import).
```bash ./scripts/storage.js list ./scripts/storage.js get local "token" ./scripts/storage.js set local "user" '{"name":"John"}' ./scripts/storage.js delete session "temp" ./scripts/storage.js clear local ```
Manage localStorage and sessionStorage.
```bash ./scripts/clear-data.js cookies ./scripts/clear-data.js localStorage ./scripts/clear-data.js sessionStorage ./scripts/clear-data.js cache ./scripts/clear-data.js all ```
Clear browser data.
```bash ./scripts/network.js start ./scripts/network.js stop ./scripts/network.js capture "https://example.com" ./scripts/network.js export requests.json ```
Monitor and capture network requests.
```bash ./scripts/performance.js ```
Get performance metrics and timing breakdown.
```bash ./scripts/intercept.js block ".png" ./scripts/intercept.js mock "/api/data" '{"result":"success"}' ./scripts/intercept.js log "/api/" ./scripts/intercept.js clear ```
Block, mock, or log network requests.
```bash ./scripts/scroll.js down 500 ./scripts/scroll.js up 500 ./scripts/scroll.js top ./scripts/scroll.js bottom ./scripts/scroll.js element "#section" ```
Scroll the page.
```bash ./scripts/hover.js "#menu" ./scripts/hover.js ".dropdown" ```
Hover over an element.
```bash ./scripts/upload.js "#file-input" "/path/to/file.txt" ./scripts/upload.js "input[type=file]" "./image.png" ```
Upload a file.
```bash ./scripts/download.js start "*.pdf" ./scripts/download.js click "#download-btn" ./scripts/download.js list ./scripts/download.js clear ```
Manage file downloads.
```bash ./scripts/pdf.js ./page.pdf ./scripts/pdf.js ./page.pdf A4 ./scripts/pdf.js ~/Downloads/report.pdf Letter ```
Export current page as PDF.
```bash ./scripts/debug.js ```
Show browser debug information.
```bash ./scripts/inspect.js "#button" ./scripts/inspect.js ".card" ```
Inspect elements in detail.
```bash ./scripts/find-text.js "Hello World" ./scripts/find-text.js "Error" --case-sensitive ```
Find text on the page.
```bash ./scripts/get-meta.js ```
Get page metadata (Open Graph, Twitter Card, JSON-LD, etc.).
```bash ./scripts/eval.js 'document.title' ./scripts/eval.js 'document.querySelectorAll("a").length' ./scripts/eval.js 'JSON.stringify(Array.from(document.querySelectorAll("a")).map(a => ({ text: a.textContent.trim(), href: a.href })).filter(link => !link.href.startsWith("https://")))' ```
Execute JavaScript in active tab (async context). Be careful with string escaping, best to use single quotes.
```bash ./scripts/screenshot.js ```
Screenshot current viewport, returns temp file path.
```bash ./scripts/pick.js "Click the submit button" ```
Interactive element picker. Click to select, Cmd/Ctrl+Click for multi-select, Enter to finish.
```bash ./scripts/check-console.js ```
Check console logs and errors.
```bash ./scripts/console-logs.js ```
Get console logs.
start.js - Start Chrome with random portstop.js - Stop Chromeget-port.js - Get current portnav.js - Navigate to URLreload.js - Reload pagetabs.js - Manage tabsclick.js - Click elementtype.js - Type textselect.js - Select dropdown optioncheckbox.js - Check/uncheck/togglesubmit.js - Submit formwait-for.js - Wait for element/visible/hidden/text/urlwait-for-url.js - Wait for URL changecheck-visible.js - Check element visibilityget-element.js - Get element infocookies.js - Cookie managementstorage.js - localStorage/sessionStorage managementclear-data.js - Clear browser datanetwork.js - Network monitoringperformance.js - Performance metricsintercept.js - Request interceptionreload.js - Reload with cache controlscroll.js - Page scrollinghover.js - Mouse hoverupload.js - File uploaddownload.js - File downloadpdf.js - PDF exporttabs.js - Tab managementdebug.js - Debug informationinspect.js - Element inspectionfind-text.js - Text searchget-meta.js - Page metadataeval.js - JavaScript evaluationscreenshot.js - Screenshotpick.js - Element pickercheck-console.js - Console checkTotal: 36 scripts
node scripts/stop.js when done to release resourcesnode scripts/get-port.js to see current port~/.cache/scraping-web-browser/wait-for.js for dynamic contentnetwork.js start/stop to analyze requestsdebug.js and inspect.js for troubleshooting~/.cache/scraping-web-browser/port.txtnode scripts/get-port.js to see current port~/.cache/scraping-web-browser/~/.cache/scraping-web-browser/port.txt~/.cache/scraping-web-browser/Default/Cookies~/.cache/scraping-web-browser/Default/Local Storage/```bash
ps aux | grep "scraping-web-browser"
node scripts/stop.js
pkill -f "scraping-web-browser" ```
testing
Best practices for writing and maintaining high-quality role memories.
documentation
工作文档枢纽,强制执行 SSOT(Single Source of Truth)原则,管理 `docs/` 目录下的架构决策、设计文档、Issues(任务规划)、PRs(变更记录)。支持 GitHub 协作开发模式。
development
Vercel 设计指南 - 构建高质量 Web 应用的最佳实践,包含现代 UI/UX 原则、性能优化和无障碍标准。
development
Display directory tree structure with customizable depth, using fd and Python3 for fast and beautiful tree visualization.