Start the local webpack dev server and connect to it with the Playwright browser. Use this skill when asked to start the dev server, preview the app, or interact with the running application in a browser.
npx skills add https://github.com/Azure/cosmos-explorer --skill dev-server
Use this skill to start the Cosmos Explorer webpack dev server and connect to it with the Playwright MCP browser for interactive testing, debugging, or previewing the application.
Before starting the dev server, check whether npm install needs to be run:
if [ ! -d node_modules ] || [ package.json -nt node_modules ] || [ package-lock.json -nt node_modules ]; then
npm install
fi
On Windows PowerShell:
if (-not (Test-Path node_modules) -or
(Get-Item package.json).LastWriteTime -gt (Get-Item node_modules).LastWriteTime -or
(Get-Item package-lock.json).LastWriteTime -gt (Get-Item node_modules).LastWriteTime) {
npm install
}
Always run this check before starting the dev server.
Before starting a new server, check if one is already running on port 1234:
try {
$response = Invoke-WebRequest -Uri "https://localhost:1234/_ready" -SkipCertificateCheck -UseBasicParsing -ErrorAction Stop
if ($response.StatusCode -eq 200) {
Write-Host "Dev server is already running and ready!"
}
} catch {
Write-Host "No dev server detected, starting a new one..."
}
If the server is already running and ready, skip to Connect the Playwright Browser.
Start the webpack dev server as a detached background process so it persists across session changes:
npm start
The dev server:
https://localhost:1234 (HTTPS with self-signed certificate)/_ready health-check endpointAfter starting the server, poll the /_ready endpoint until it returns HTTP 200. Do not proceed to browser navigation until /_ready returns 200.
On Windows PowerShell:
$timeout = 120
$elapsed = 0
while ($elapsed -lt $timeout) {
try {
$response = Invoke-WebRequest -Uri "https://localhost:1234/_ready" -SkipCertificateCheck -UseBasicParsing -ErrorAction Stop
if ($response.StatusCode -eq 200) {
Write-Host "Dev server is ready!"
break
}
} catch {
# Server not ready yet
}
Start-Sleep -Seconds 3
$elapsed += 3
}
if ($elapsed -ge $timeout) {
Write-Error "Dev server did not become ready within $timeout seconds"
}
On bash:
timeout=120
elapsed=0
while [ $elapsed -lt $timeout ]; do
if curl -sk https://localhost:1234/_ready 2>/dev/null | grep -q "Compilation complete"; then
echo "Dev server is ready!"
break
fi
sleep 3
elapsed=$((elapsed + 3))
done
if [ $elapsed -ge $timeout ]; then
echo "Dev server did not become ready within $timeout seconds" >&2
fi
Once the dev server is ready, use the Playwright MCP browser tools to navigate to the application.
Navigate to the desired entry point:
https://localhost:1234/hostedExplorer.html — Hosted explorer (standalone mode). Best for general UI testing and interaction without Azure Portal framing.https://localhost:1234/explorer.html — Portal explorer (Azure Portal iframe mode). Requires portal context/messages to initialize fully.https://localhost:1234/index.html — Emulator mode. Requires a local Cosmos DB Emulator running on port 8081.https://localhost:1234/testExplorer.html — Test explorer (dev mode only). Used for E2E test harness.When no specific page is requested, navigate to https://localhost:1234/hostedExplorer.html as it provides the most complete standalone experience.
After the page loads, a webpack dev server overlay may appear inside an iframe showing DefinePlugin warnings. If a "Dismiss" button (×) is visible in the overlay, click it to close the warnings before proceeding with any other interaction.
| URL | Entry Point | Description |
|-----|-------------|-------------|
| /hostedExplorer.html | src/HostedExplorer.tsx | Standalone hosted explorer (cosmos.azure.com) |
| /explorer.html | src/Main.tsx | Portal iframe explorer |
| /index.html | src/Index.tsx | Emulator explorer |
| /testExplorer.html | test/testExplorer/TestExplorer.ts | Test harness (dev mode only) |
| /terminal.html | src/Terminal/index.ts | Notebook terminal |
| /quickstart.html | src/quickstart.ts | Quickstart page |
| /selfServe.html | src/SelfServe/SelfServe.tsx | Self-serve configuration |
| /galleryViewer.html | src/GalleryViewer/GalleryViewer.tsx | Notebook gallery viewer |
The dev server uses HTTPS with a self-signed certificate. If the Playwright browser fails to navigate with an error like ERR_CERT_AUTHORITY_INVALID or any other SSL/TLS certificate error, stop immediately and tell the user:
> The Playwright MCP server needs the --ignore-https-errors argument to connect to the dev server's self-signed certificate. Please add --ignore-https-errors to your Playwright MCP server configuration and try again.
Do not attempt workarounds (e.g., creating new browser contexts manually). The --ignore-https-errors flag is the correct fix.
/_ready to return 200 before navigating the browser.-SkipCertificateCheck, curl -k). For the Playwright browser, the --ignore-https-errors MCP argument must be configured.netstat -ano | findstr :1234 on Windows).Stop-Process with the specific PID of the node process.Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Automate Anchor Browser tasks via Rube MCP (Composio). Always search tools first for current schemas.
Automate Browser Tool tasks via Rube MCP (Composio). Always search tools first for current schemas.
Get Image [from] Internet Link - Zero-setup CLI for downloading full-resolution images from iCloud, Dropbox, Google Photos, and Google Drive share links. Four-tier capture strategy, browser automation, HEIC conversion, album support. Node.js/Playwright.
Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing. Use when: browser extension, chrome extension, firefox addon, extension, manifest v3.
Take azure/dev-server 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.