一键导入
playwright
Browser automation via Playwright MCP. Use for verification, browsing, web scraping, testing, screenshots, and all browser interactions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Browser automation via Playwright MCP. Use for verification, browsing, web scraping, testing, screenshots, and all browser interactions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Interview the user relentlessly about a plan or design until branch-level decisions are resolved for execution.
Access Figma designs, extract design systems, and retrieve component specifications. Use when implementing UI from Figma mockups, extracting design tokens, or analyzing design files.
Enforce cost-aware MCP usage. Use when a task might trigger heavy external tools, web search, or broad context expansion. Prevents token burn by ensuring MCPs are only used when local context is insufficient.
Navigate the Warmplane mcp0 facade efficiently. Use when the active config exposes provider capabilities through `mcp0_*` tools and you need to discover or call provider tools without brute-force describing large capability sets. Trigger on requests involving mcp0, Warmplane, or provider work through the facade such as Linear, Notion, Figma, New Relic, Context7, grep.app, or Storybook tools.
Use this when the user needs to control Chrome, navigate to a page, inspect a tab, click or fill elements, take screenshots, or automate a browser flow with aeroxy/chrome-devtools-cli.
Guidelines for creating and managing implementation plans with citations
| name | playwright |
| description | Browser automation via Playwright MCP. Use for verification, browsing, web scraping, testing, screenshots, and all browser interactions. |
The playwright MCP provides these tools:
| Tool | Purpose |
|---|---|
playwright_navigate | Go to a URL |
playwright_screenshot | Capture the current page |
playwright_click | Click an element |
playwright_fill | Fill a form field |
playwright_select | Select dropdown option |
playwright_hover | Hover over element |
playwright_evaluate | Run JavaScript in page |
// Navigate to URL
playwright_navigate({ url: "https://example.com" })
// Take screenshot
playwright_screenshot({ name: "homepage" })
// Fill a form
playwright_fill({ selector: "#email", value: "test@example.com" })
playwright_fill({ selector: "#password", value: "secret123" })
// Click submit
playwright_click({ selector: "button[type='submit']" })
// Navigate and wait for content
playwright_navigate({ url: "https://example.com" })
playwright_evaluate({
script: "document.querySelector('.loaded')?.textContent"
})
| Priority | Selector Type | Example |
|---|---|---|
| 1 | data-testid | [data-testid="submit-btn"] |
| 2 | role | button[name="Submit"] |
| 3 | text | text="Submit" |
| 4 | CSS | .btn-primary |
| 5 | XPath | //button[@type="submit"] |
Prefer data-testid for stability.
playwright_navigate({ url: "https://app.example.com" })
const title = playwright_evaluate({
script: "document.title"
})
// Verify title matches expected
playwright_evaluate({
script: `
const el = document.querySelector('.success-message');
el && el.offsetParent !== null
`
})
playwright_evaluate({
script: `
Array.from(document.querySelectorAll('.item'))
.map(el => ({
title: el.querySelector('.title')?.textContent,
price: el.querySelector('.price')?.textContent
}))
`
})
| Error | Cause | Solution |
|---|---|---|
| Element not found | Selector wrong or element not rendered | Wait for element, check selector |
| Timeout | Page too slow | Increase timeout, check network |
| Navigation failed | Invalid URL or network error | Verify URL, check connectivity |