用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ForceInjection/domain-driven-design-skills --skill browser-automation命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | browser-automation |
| description | Browser automation via Puppeteer MCP for JS-rendered content |
Use Playwright or Puppeteer MCP for browser automation when WebFetch isn't sufficient.
Browser automation provides headless browser control for:
Multi-browser support: Firefox, Chrome, WebKit. Same API across all browsers.
Package: @anthropic/mcp-server-playwright
Transport: stdio
Install: claude mcp add playwright -- npx -y @anthropic/mcp-server-playwright
# Also install browser binaries
npx playwright install firefox chromium webkit
Package: puppeteer-mcp-server
Transport: stdio
Install: claude mcp add puppeteer -- npx -y puppeteer-mcp-server
| Feature | Playwright | Puppeteer |
|---|---|---|
| Firefox | ✓ | ✗ |
| Chrome/Chromium | ✓ | ✓ |
| WebKit/Safari | ✓ | ✗ |
| API | Same across browsers | Chrome-specific |
| Maintenance | Microsoft (active) |
puppeteer_navigate
Navigate to a URL and wait for page load.
url: "https://example.com"
waitUntil: "networkidle0" | "domcontentloaded" | "load"
puppeteer_screenshot
Capture the current page or specific element.
name: "screenshot-name"
selector: "#element-id" (optional, full page if omitted)
fullPage: true (optional)
puppeteer_click
Click an element by CSS selector.
selector: "button.submit"
puppeteer_fill
Fill an input field with text.
selector: "input[name=email]"
value: "user@example.com"
puppeteer_select
Select an option from a dropdown.
selector: "select#country"
value: "US"
puppeteer_hover
Hover over an element (for tooltips, dropdowns).
selector: ".menu-trigger"
puppeteer_evaluate
Run JavaScript in the page context and return results.
script: "document.title"
1. puppeteer_navigate(url="https://spa-app.com/data")
2. puppeteer_evaluate(script="JSON.stringify(window.__DATA__)")
1. puppeteer_navigate(url="https://example.com/login")
2. puppeteer_screenshot(name="before-login")
3. puppeteer_fill(selector="input[name=email]", value="user@example.com")
4. puppeteer_fill(selector="input[name=password]", value="secret")
5. puppeteer_click(selector="button[type=submit]")
6. puppeteer_screenshot(name="after-login")
1. puppeteer_navigate(url="https://example.com")
2. puppeteer_screenshot(name="homepage", fullPage=true)
3. puppeteer_click(selector=".open-modal")
4. puppeteer_screenshot(name="modal-open")
Need web content?
│
├─ Static HTML? ──────────────────→ WebFetch
│
├─ JS-rendered (React, Vue, etc.)? → Puppeteer
│
├─ Need screenshot? ──────────────→ Puppeteer
│
├─ Need to fill forms? ───────────→ Puppeteer
│
├─ Auth-protected? ───────────────→ Puppeteer (can maintain session)
│
└─ Default ───────────────────────→ WebFetch (simpler, faster)
If a selector doesn't match:
puppeteer_evaluate to check DOMIf page takes too long:
waitUntil: "domcontentloaded" instead of networkidle0| Feature | WebFetch | Playwright | Puppeteer |
|---|---|---|---|
| Speed | Fast | Slower | Slower |
| JS execution | No | Yes | Yes |
| Screenshots | No | Yes | Yes |
| Form filling | No | Yes | Yes |
| Session/cookies | No | Yes | Yes |
| Resource usage | Low | Higher | Higher |
| Firefox | N/A | Yes | No |
| WebKit/Safari | N/A | Yes | No |