Agent skill
using-chrome-devtools
Automates headless Chrome via MCP for web scraping, screenshots, testing, and browser interactions. Handles multi-instance server selection to avoid lock conflicts between parallel agents. Triggers when browsing a website, taking a screenshot, scraping a page, testing a web app, automating browser interactions, or when chrome-devtools MCP tools are needed.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/chrome-devtools-saturate-skills
Metadata
Additional technical details for this skill
- author
- Saturate
- version
- 1.0
SKILL.md
You are helping the user interact with websites using Chrome via the chrome-devtools MCP servers.
There are 4 isolated server instances available. You must pick a free one before doing any browser work.
Progress Checklist
Copy this checklist to track your progress through the workflow:
Chrome DevTools Progress:
- [ ] Step 1: Selected an available server instance
- [ ] Step 2: Loaded required MCP tools via ToolSearch
- [ ] Step 3: Performed the requested browser task
- [ ] Step 4: Cleaned up (closed pages)
Step 1: Select an Available Server
There are 4 MCP server instances — 3 headless and 1 visible (opens a real browser window):
| Instance | Tool prefix | Mode |
|---|---|---|
| 1 | mcp__chrome-devtools__* |
Headless |
| 2 | mcp__chrome-devtools-2__* |
Headless |
| 3 | mcp__chrome-devtools-3__* |
Headless |
| visible | mcp__chrome-devtools-visible__* |
Visible |
When to use visible: Use chrome-devtools-visible when the user asks to see the browser, needs to debug visually, or wants to watch automation in real-time. Default to headless instances for everything else.
To find a free instance, check each server's list_pages tool (e.g. mcp__chrome-devtools__list_pages). Load them via ToolSearch:
ToolSearch: "+chrome-devtools list_pages"
Then call list_pages on each instance. A server is free if it only has the default about:blank page (or returns no pages). A server is busy if it has pages with real URLs.
Check headless servers in order (1 → 2 → 3) and use the first free one. Only use visible if the user explicitly asks for it or all headless instances are busy.
If all 4 are busy, tell the user:
"All chrome-devtools instances are currently in use. Wait for another task to finish or add more instances."
CRITICAL: Never run parallel Task agents on the same server instance. Each agent must claim its own instance.
Step 2: Load MCP Tools
Once you've picked a server (e.g. instance 2), load the tools you need via ToolSearch using the correct prefix:
ToolSearch: "+chrome-devtools-2 navigate"
ToolSearch: "+chrome-devtools-2 screenshot"
Common tools available on each instance (shown for instance 1, substitute prefix for others):
mcp__chrome-devtools__navigate_page— Navigate to a URLmcp__chrome-devtools__take_screenshot— Capture the current pagemcp__chrome-devtools__take_snapshot— Get the DOM/accessibility snapshot (useful for scraping text content)mcp__chrome-devtools__click— Click an elementmcp__chrome-devtools__fill— Fill a form fieldmcp__chrome-devtools__fill_form— Fill multiple form fieldsmcp__chrome-devtools__evaluate_script— Run JavaScript on the pagemcp__chrome-devtools__press_key— Press a keyboard keymcp__chrome-devtools__wait_for— Wait for an element or conditionmcp__chrome-devtools__new_page— Open a new page/tabmcp__chrome-devtools__close_page— Close a page/tabmcp__chrome-devtools__list_pages— List open pagesmcp__chrome-devtools__list_network_requests— Monitor network trafficmcp__chrome-devtools__list_console_messages— Read console output
Step 3: Perform the Browser Task
Navigation
Always start by navigating to the target URL:
navigate_page(url: "https://example.com")
After navigation, take a screenshot or snapshot to verify the page loaded correctly.
Taking Screenshots
Use take_screenshot to capture what the page looks like. This is useful for:
- Verifying a page loaded correctly
- Debugging layout issues
- Showing the user what you see
Scraping Content
Use take_snapshot to get a structured text representation of the page. This gives you the accessibility tree which is more useful than raw HTML for extracting content.
For dynamic content, you may need to:
wait_forthe content to appear- Then
take_snapshot
Form Interaction
- Use
take_snapshotto identify form fields - Use
fillorfill_formto enter data - Use
clickto submit
Running JavaScript
Use evaluate_script for operations that don't have dedicated tools:
evaluate_script(expression: "document.title")
Step 4: Clean Up
Always close pages when done. There is no auto-timeout on these servers.
close_page(pageId: "<id>")
If you opened multiple pages, close all of them. Use list_pages to verify nothing is left behind.
Troubleshooting
Server won't respond / tools not loading
The MCP server may not be running. Try:
- Check if the server is listed:
claude mcp list --scope user - Restart Claude Code session to reinitialize MCP connections
Stale pages from a previous session
If list_pages shows pages that aren't yours (leftover from a crashed session), close them before starting your work:
close_page(pageId: "<stale-page-id>")
Navigation timeout
Some pages take a long time to load. Use wait_for with a selector to wait for specific content instead of relying on page load completion.
Can't find an element
Use take_snapshot to see the accessibility tree structure, then target elements by their accessible name or role.
Tips
- Prefer
take_snapshotovertake_screenshotwhen you need to extract text content — it's faster and gives structured data - Use
take_screenshotwhen you need to see visual layout or show the user what the page looks like - For SPAs, wait for content to render after navigation before taking snapshots
- If a page requires authentication, let the user know — headless browsers start with no session/cookies
- Each server instance has its own isolated browser profile, so cookies and state are not shared between instances
- The
chrome-devtools-visibleinstance opens a real browser window — useful for demos or debugging but slower to start
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?