chrome-devtools
Skill4 starsChanged 20 days agoMITView on GitHub
Debug and automate Google Chrome from the shell with the `chrome-devtools` CLI (npm package `chrome-devtools-mcp`), without configuring an MCP server. Use to inspect a web page's console errors, network requests, cookies and 401/403 failures, performance traces, LCP and Core Web Vitals, Lighthouse scores, accessibility, or memory leaks, and to script page navigation, clicks, form input, emulation, and screenshots. Not for native desktop applications or the host's built-in browser.
- Installs packages
43 other projects use a version of this.
Adopted by
Most recently taken up by
- oivanfelipe/claude-skillstheir own version, first seen Nov 8, 2026
- BrightGold70/skillstheir own version, first seen Nov 8, 2026
- byrodi/chrome-devtoolstheir own version, first seen Nov 8, 2026
- artivilla/agent-skillstheir own version, first seen Nov 8, 2026
- JustinWangJP/cc-agent-teams-action-monitortheir own version, first seen Nov 8, 2026
- LuisSambrano/antigravity-configtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use aesthetic, web-frameworks and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
mrgoonieSkillaesthetic
Create aesthetically beautiful interfaces following proven design principles. Use when building UI/UX, analyzing designs from inspiration sites, generating design images with ai-multimodal, implementing visual hierarchy and color theory, adding micro-interactions, or creating design documentation. Includes workflows for capturing and analyzing inspiration screenshots with chrome-devtools and ai-multimodal, iterative design image generation until aesthetic standards are met, and comprehensive design system guidance covering BEAUTIFUL (aesthetic principles), RIGHT (functionality/accessibility), SATISFYING (micro-interactions), and PEAK (storytelling) stages. Integrates with chrome-devtools, ai-multimodal, media-processing, ui-styling, and web-frameworks skills.
Also in 5 projects that use this
mrgoonieSkillweb-frameworks
Build modern full-stack web applications with Next.js (App Router, Server Components, RSC, PPR, SSR, SSG, ISR), Turborepo (monorepo management, task pipelines, remote caching, parallel execution), and RemixIcon (3100+ SVG icons in outlined/filled styles). Use when creating React applications, implementing server-side rendering, setting up monorepos with multiple packages, optimizing build performance and caching strategies, adding icon libraries, managing shared dependencies, or working with TypeScript full-stack projects.
Also in 8 projects that use this
truongtv22SkillProblem-Solving Techniques
Apply systematic problem-solving techniques for complexity spirals (simplification cascades), innovation blocks (collision-zone thinking), recurring patterns (meta-pattern recognition), assumption constraints (inversion exercise), scale uncertainty (scale game), and dispatch when stuck. Techniques derived from Microsoft Amplifier project patterns adapted for immediate application.
Also in 4 projects that use this
truongtv22Skillmobile-development
Build modern mobile applications with React Native, Flutter, Swift/SwiftUI, and Kotlin/Jetpack Compose. Covers mobile-first design principles, performance optimization (battery, memory, network), offline-first architecture, platform-specific guidelines (iOS HIG, Material Design), testing strategies, security best practices, accessibility, app store deployment, and mobile development mindset. Use when building mobile apps, implementing mobile UX patterns, optimizing for mobile constraints, or making native vs cross-platform decisions.
Also in 5 projects that use this
- +8 more from mrgoonie
Other versions43 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 43
- ChromeDevTools/chrome-devtools-mcp★ 55ksame name
- github/awesome-copilot★ 41ksame name
- mrgoonie/claudekit-skills★ 2.2ksame name
- typv/nest-turbo-starter★ 224same name
- duongthinh03/portfolio★ 85same name
- laguagu/claude-code-nextjs-skills★ 72same name
- iuhoay/skills★ 54same name
- VoDaiLocz/kilo-kit-mcp★ 28same name
- ulises-jeremias/agent-toolkit★ 19same name
- johnlindquist/claude-workshop-skills★ 16same name
33 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository39 other files it gives its agents.
- AGENTS.mdAGENTS.md
- authoringSkill
- gamificationSkill
- imagegenSkill
- improve-architectureSkill
- instructionsSkill
- monorepoSkill
- reverse-engineerSkill
- runbookSkill
- security-reviewSkill
- setup-harnessSkill
- skillsSkill
- unslopSkill
- video-reportSkill
- youtube-transcriptSkill
- code-reviewSkill
- debugSkill
- interviewSkill
- prototypeSkill
- researchSkill
- workSkill
- adsenseSkill
- astryxSkill
- cloudflare-cliSkill
- dokploy-best-practicesSkill
- extract-themeSkill
- nextjsSkill
- payload-cmsSkill
- shadersSkill
- swrSkill
- tanstack-querySkill
- tanstack-routerSkill
- tanstack-startSkill
- tanstack-storeSkill
- tauriSkill
- vite-plusSkill
- web-assets-optimizationSkill
- web-extensionSkill
- zodSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 4 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 42 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
If the command is missing, report it and propose npm i -g chrome-devtools-mcp@latest.
- Very specific: line 21
Run chrome-devtools status.
- Distinctive: line 22
If a daemon you did not start is running, reuse it when its arguments suit the task.
- Very specific: line 84
Read it: take_snapshot <pageId> returns the accessibility tree with element uids.
- Very specific: line 89
Verify the effect: add --includeSnapshot true to the action or take a new snapshot, then check list_console_messages <pageId> --types …
- Very specific: line 104
Use --output-format=json when a script or one-liner parses the result.
- Distinctive: line 129
Do not quote cookie values, tokens, or authorization headers in reports.
- Distinctive: line 134
Read the matching reference before starting that work:
- Very specific: line 149
Run chrome-devtools stop if you started or restarted the daemon.
- Distinctive: line 157
Pending: if a step failed, report the command, its error output, and the next action instead of claiming the result.
“Common” is measured: kept by at least 6 in 10 of the 42 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Chrome DevTools CLI
Drive Chrome through chrome-devtools, a client of a background daemon that keeps
pages, cookies, and state between commands. Inputs: the target URL or page, the
goal (debugging or automation), and the browser mode. Output: findings backed by
evidence (console messages, requests, trace insights) and the paths of the files
produced. Side effects: a daemon and a browser start; files are written only at the
paths you pass.
1. Check the CLI
- Run
chrome-devtools --version. - If the command is missing, report it and propose
npm i -g chrome-devtools-mcp@latest. Install only with the user's approval. An "Update available" notice is information, not authorization to update. - Run
chrome-devtools status. A running daemon prints itsversion=andargs=. If a daemon you did not start is running, reuse it when its arguments suit the task. Otherwise tell the user before restarting it, since a restart closes its pages.
Done: the CLI responds and the daemon state is known. Blocked: CLI absent and installation declined; report the blocker and stop.
2. Choose the browser mode
The first tool command starts the daemon with default options. Options apply only
when the daemon starts, so run chrome-devtools start <options> before the first
tool command whenever you need a non-default mode or option. start always
restarts the daemon.
| Mode | Start command | Use when |
| Isolated, headless (default) | none, or chrome-devtools start | Default for every task. The temporary profile is deleted on stop. |
| Visible window | start --headless=false | The user wants to watch, or behavior differs in headless mode. |
| Persistent profile | start --userDataDir=<dir> | Logins or storage must survive between sessions. |
| User's own Chrome | start --autoConnect, or start --browserUrl=http://127.0.0.1:9222 / --wsEndpoint=<ws-url> | Only with the user's explicit approval for this task: it exposes their sessions, cookies, and tabs. |
For the user's own Chrome:
--autoConnectneeds Chrome 144+ already running with remote debugging enabled inchrome://inspect/#remote-debugging. The first command can time out while Chrome waits for the user to accept the connection; ask them to accept, then retrylist_pages.- Page IDs are the user's tabs. Act only on tabs the user designates, or open your
own with
new_page <url> --background trueand close it when finished. Do not repeat other tabs' titles or URLs unless the task requires them. - Extension tools are off unless you add
--categoryExtensions; PWA tools (--categoryPwa) work only in launch modes.
3. Set start options
Combine every option the task needs in one start call:
| Situation | Option |
| Private, internal, or localhost URL | --performanceCrux=false --usageStatistics=false (both are on by default; CrUX receives URLs from traces) |
| Output files or uploads | --workspace=<dir>, repeatable. Without it, file access is unrestricted; with it, paths outside are rejected with Access denied. |
| Shared output where secrets appear in headers | --redactNetworkHeaders, unless the task inspects those headers |
Coordinate clicks (click_at) | --experimentalVision |
| Self-signed development certificate | --acceptInsecureCerts |
chrome-devtools start --performanceCrux=false --usageStatistics=false --workspace=<abs-output-dir>Done: mode and options chosen; after a start, chrome-devtools status shows
the intended args=.
4. Act on the page
Syntax: chrome-devtools <tool> <required positionals> [--optional-flags]. Most
tools take <pageId> first; evaluate_script takes the function first and
--pageId <id>. chrome-devtools --help lists the commands and the start flag each
one requires, and chrome-devtools <tool> --help gives its exact arguments. The
installed help wins over any reference.
- Find the page:
list_pages, thennavigate_page <pageId> --url <url>ornew_page <url>. - Read it:
take_snapshot <pageId>returns the accessibility tree with element uids. Prefer it to a screenshot for automation. - Act on a uid:
click <pageId> <uid>,fill <pageId> <uid> <value>,press_key <pageId> <key>,type_text <pageId> <text>,hover,drag,upload_file,handle_dialog <pageId> accept|dismiss. - Verify the effect: add
--includeSnapshot trueto the action or take a new snapshot, then checklist_console_messages <pageId> --types error,list_network_requests <pageId>, ortake_screenshot <pageId> --filePath <abs>.
- Uids belong to a page state. After a navigation or reload, an old uid fails with
Element with uid ... no longer exists; take a new snapshot. Content added by an action receives new uids. - The CLI has no
wait_for. Repeattake_snapshotuntil the expected element appears. - Console and network lists start at the last navigation. Add
--includePreservedMessages trueor--includePreservedRequests trueto cover the last 3 navigations. emulate <pageId>replaces every previous emulation setting except--extraHttpHeaders. Pass all settings in one call;emulate <pageId>alone resets them.- Use
--output-format=jsonwhen a script or one-liner parses the result.
Quoting
- Git Bash and POSIX shells: wrap JavaScript in single quotes; double quotes inside
are preserved:
chrome-devtools evaluate_script '() => document.querySelector("h1").textContent' --pageId 1. - PowerShell: double quotes inside an argument are stripped when
(Get-Command chrome-devtools).Sourceis a.cmdshim. In that case, write JavaScript with single quotes inside a double-quoted string, escape JSON quotes as\"(--extraHttpHeaders '{\"X-Test\": \"1\"}'), and move code containing$or backticks to a file. - In any shell, long or quote-heavy code goes in a file passed with
evaluate_script --pageId <id> --sourcePath <abs-file>.
5. Collect evidence
- Pass absolute paths to
--filePath,--outputDirPath,--responseFilePath, andtake_heapsnapshot. Write only where the user asked, or in a directory created for the task, and list the files produced. - Send large results (verbose snapshots, traces, Lighthouse reports, heap
snapshots) to files and extract the relevant part with
nodeorjqinstead of reading them whole. - Cite evidence by its identifier: console
msgid, requestreqidwith status and URL, insight set and insight name with values, file paths. Separate observations from inferences, and state the browser mode and options used. - Do not quote cookie values, tokens, or authorization headers in reports; give names and attributes.
6. Specialized work
Read the matching reference before starting that work:
| When the task involves | Read | To obtain |
| A command not covered above, or an inventory by category | references/commands.md | Command signatures grouped by category, with the start flags they need |
| LCP, Core Web Vitals, slow loads, traces, throttling | references/performance.md | The trace and insight workflow, LCP subparts, and fixes by bottleneck |
| 401/403, login redirects, cookies, headers, consent banners | references/network-cookies.md | Request inspection, HttpOnly handling, clean-context tests, cookie issues |
| Accessibility audit, labels, focus, contrast | references/accessibility.md | Lighthouse parsing, snapshot checks, keyboard tests, measurement snippets |
| Memory growth, leaks, heap snapshots | references/memory.md | Snapshot capture, comparison, retainer analysis, common leak causes |
A failing start, list_pages, or new_page, a hang, or a refused connection | references/troubleshooting.md | Diagnosis by error message, log capture, recovery steps |
7. Finish
- Close the pages you opened in the user's Chrome and release loaded heap
snapshots with
close_heapsnapshot <file>. - Run
chrome-devtools stopif you started or restarted the daemon. In connected modes it disconnects without closing the user's Chrome. Leave a daemon you only reused running. - Report the findings and evidence, the mode and options used, the files produced, and what was not verified.
Done: requested evidence delivered, files listed, and the daemon in the state the task found it or stopped. Pending: if a step failed, report the command, its error output, and the next action instead of claiming the result.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

