بنقرة واحدة
playwriter-mcp
ONLY apply when user EXPLICITLY mentions "Playwriter". Default browser automation is ms-playwright-mcp.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
ONLY apply when user EXPLICITLY mentions "Playwriter". Default browser automation is ms-playwright-mcp.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Provides coding style rules for Python and PowerShell. Apply when writing, editing, reviewing, or debugging code.
Apply when conducting deep research on technologies, APIs, frameworks, or other software development topics requiring systematic investigation
Apply when doing planning for long-running tasks in sessions on top level
Apply when committing code, writing commit messages, or configuring .gitignore
Apply when working with GitHub repositories, issues, PRs, or authentication
Apply when interacting with Google services (Gmail, Calendar, Drive, Tasks) via gogcli CLI
| name | playwriter-mcp |
| description | ONLY apply when user EXPLICITLY mentions "Playwriter". Default browser automation is ms-playwright-mcp. |
ACTIVATION: Only use when user explicitly says "Playwriter". Default browser MCP is ms-playwright-mcp by Microsoft.
Rules and usage for Playwriter - Chrome extension + CLI/MCP for real browser automation.
Core
Workflows
Reference
Use Playwriter when:
Use Playwright MCP when:
User wants to...
snapshot({ page })getCDPSession, createDebugger, breakpointsstartRecording / stopRecordingTechnical tasks...
snapshot({ page }) or screenshotWithAccessibilityLabels({ page })page.screenshot({ path: '...', type: 'jpeg' })page.locator('aria-ref=e5').click()state.varName = ...page.on('response', ...)startRecording / stopRecording-e to prevent bash interpretationbrowser.close() - it closes YOUR Chromestate.varName to persist data between calls1500 for simple ops, 3000 for screenshots.waitForSelector instead.waitUntil: 'load' never fires on SharePoint/dynamic sites. Use { waitUntil: 'domcontentloaded' }.# 1. Install CLI
npm i -g playwriter
# 2. Create session
playwriter session new # outputs ID (e.g., 1)
# 3. Navigate
playwriter -s 1 -e 'await page.goto("https://example.com")'
# 4. Get accessibility snapshot
playwriter -s 1 -e 'console.log(await snapshot({ page }))'
# 5. Click element by ref
playwriter -s 1 -e 'await page.locator("aria-ref=e5").click()'
playwriter session new # Create sandbox, get ID
playwriter session list # Show sessions + state keys
playwriter session reset <id> # Fix connection issues
playwriter -s <id> -e '<code>' # Run Playwright code in session
Variables in scope: page, context, state, require
playwriter -s 1 -e 'await page.goto("https://example.com")'
playwriter -s 1 -e 'await page.screenshot({ path: "screenshot.png" })'
playwriter -s 1 -e 'await screenshotWithAccessibilityLabels({ page })'
# Returns screenshot with Vimium-style labels (aria-ref=e1, e2, etc.)
playwriter -s 1 -e 'await page.locator("aria-ref=e5").click()'
playwriter -s 1 -e "state.users = await page.$$eval('.user', els => els.map(e => e.textContent))"
playwriter -s 1 -e "console.log(state.users)"
playwriter -s 1 -e 'state.myPage = await context.newPage(); await state.myPage.goto("https://example.com")'
playwriter -s 1 -e "state.requests = []; page.on('response', r => { if (r.url().includes('/api/')) state.requests.push(r.url()) })"
playwriter -s 1 -e "await Promise.all([page.waitForResponse(r => r.url().includes('/api/')), page.click('button')])"
playwriter -s 1 -e "console.log(state.requests)"
# Basic screenshot
playwriter -s 1 -e 'await page.screenshot({ path: "screenshot.png" })'
# Full page
playwriter -s 1 -e 'await page.screenshot({ path: "full.png", fullPage: true })'
# JPEG (smaller)
playwriter -s 1 -e 'await page.screenshot({ path: "shot.jpg", type: "jpeg", quality: 80 })'
Vimium-style labels for AI element identification:
playwriter -s 1 -e 'await screenshotWithAccessibilityLabels({ page })'
playwriter -s 1 -e 'await page.locator("aria-ref=e5").click()'
Color coding:
playwriter -s 1 -e 'console.log(await snapshot({ page }))'
# Returns accessibility tree with aria-ref selectors
# Start recording
playwriter -s 1 -e 'await startRecording({ page, outputPath: "./recording.mp4", frameRate: 30 })'
# Navigate, interact...
playwriter -s 1 -e 'await page.click("a")'
# Stop and save
playwriter -s 1 -e 'await stopRecording({ page })'
Recording survives page navigation (uses chrome.tabCapture).
Skill-based (recommended):
npx -y skills add remorses/playwriter
Direct MCP config:
{
"mcpServers": {
"playwriter": {
"command": "npx",
"args": ["playwriter@latest"]
}
}
}
playwriter logfile # Shows path to ~/.playwriter/relay-server.log
Restart Chrome (known Chrome bug in chrome.debugger API).
playwriter session reset <id>playwriter session reset <id>
localhost:19988 only (any local process can connect; use --token for auth)See SETUP.md for installation details.