ワンクリックで
playwright
通过 Playwright 实现浏览器自动化。导航页面、点击元素、填写表单、截图、执行 JavaScript、管理 Cookie/存储、拦截网络请求等。当用户需要自动化浏览器、测试网页、抓取内容或与任何 Web UI 交互时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
通过 Playwright 实现浏览器自动化。导航页面、点击元素、填写表单、截图、执行 JavaScript、管理 Cookie/存储、拦截网络请求等。当用户需要自动化浏览器、测试网页、抓取内容或与任何 Web UI 交互时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
跨 IDE / 跨 LLM 的声明式工作流引擎,以 CLI 状态机形态运行。把多步任务、用户阻塞、条件循环、跨 LLM CLI 协作(claude / codex / caller)描述为一份 YAML,CLI 负责落盘、推进、崩溃恢复,所有推理交给 caller(你)或外部 LLM。当用户提到"workflow"、"流程"、"多步任务"、"跨 LLM 协作"、"用户确认环节"、"自动化 SOP"、"批量处理"、"恢复昨天的任务",或意图需要 ≥3 个节点、需要审计、需要可重复 SOP 时使用。Python 3.10+,零运行时网络依赖。
skillix-hub 项目标准化 Skill 开发流程指南和脚手架工具。当用户要求创建新 Skill、 初始化 Skill 目录结构、或询问 Skill 开发规范时使用。提供 10 阶段完整生命周期: 需求命名、可行性分析、设计文档、讨论迭代、代码开发、单元测试、测试报告、技术文档、README 同步、docs 同步。
将知识材料编译为结构化 Wiki。AI 即编译器,Markdown-in Markdown-out,覆盖度追踪,增量编译。
本地知识资料索引与 Wiki 编译
第一性原理分析。将问题拆解到不可置疑的基础事实,系统挑战每一个假设,再从地基向上重建解决方案——而非依赖惯例或类比。适用于成本质疑、架构选型、根因分析、产品定义、约束破除、战略决策。
苏格拉底式批判性思维分析。自动识别需求分析、系统设计、技术选型、数据分析四类场景,智能决定快速结论(≤1问)或深度探索(≤5问),防止过度追问与草率结论。Socratic critical thinking for requirements, design review, tech research, and data analysis.
| name | playwright |
| description | 通过 Playwright 实现浏览器自动化。导航页面、点击元素、填写表单、截图、执行 JavaScript、管理 Cookie/存储、拦截网络请求等。当用户需要自动化浏览器、测试网页、抓取内容或与任何 Web UI 交互时使用。 |
通过 48 个工具控制真实浏览器(Chrome/Chromium)。支持两种调用方式:CLI 命令和 MCP Tools。
当环境中启用了 @playwright/mcp 服务时,以下 22 个 MCP tools 与 Skill CLI 命令的映射关系。优先使用 Skill CLI 命令,MCP tools 作为补充。
| 功能 | 对应 CLI 命令 |
|---|---|
browser_navigate → 导航到 URL | navigate |
browser_navigate_back → 返回上一页 | goBack |
browser_snapshot → 获取页面无障碍树 | snapshot |
browser_click → 点击元素 | click |
browser_drag → 拖拽元素 | drag |
browser_hover → 悬停元素 | hover |
browser_type → 输入文本 | type |
browser_select_option → 选择下拉选项 | selectOption |
browser_fill_form → 批量填写表单 | fillForm |
browser_press_key → 按下键盘按键 | pressKey |
browser_take_screenshot → 截图 | screenshot |
browser_evaluate → 执行 JavaScript | evaluate |
browser_run_code → 执行 Playwright 代码 | runCode |
browser_wait_for → 等待文本/时间 | waitFor |
browser_tabs → 管理标签页 | tabs |
browser_console_messages → 控制台输出 | consoleMessages |
browser_network_requests → 网络请求 | networkRequests |
browser_handle_dialog → 处理对话框 | handleDialog |
browser_file_upload → 上传文件 | fileUpload |
browser_close → 关闭浏览器 | close |
browser_resize → 调整窗口大小 | resize |
browser_install → 安装浏览器 | install |
以下 26 个工具无对应 MCP tool,通过 CLI 调用(node skills/playwright/tool.js <命令>):
| 类别 | CLI 命令 |
|---|---|
| 导航扩展 | goForward, reload |
| 复选框 | check, uncheck |
| 键盘扩展 | pressSequentially, keydown, keyup |
| 鼠标坐标 | mouseMove, mouseClick, mouseDrag, mouseDown, mouseUp, mouseWheel |
| Cookie | cookieList, cookieGet, cookieSet, cookieDelete, cookieClear |
| 存储状态 | storageState, setStorageState |
| Web 存储 | localStorageList/Get/Set/Delete/Clear, sessionStorageList/Get/Set/Delete/Clear |
| 网络拦截 | route, routeList, unroute |
| 控制台扩展 | consoleClear, networkClear |
| 测试验证 | verifyElement, verifyText, verifyList, verifyValue, generateLocator |
| 高级功能 | pdf, tracingStart, tracingStop, startVideo, stopVideo, devtoolsStart, getConfig |
首次使用前,在 skill 目录下执行一次:
cd skills/playwright && npm install && npx playwright install chromium
自然语言更新:
帮我从 https://github.com/shetengteng/skillix-hub 更新 playwright skill
手动更新:
git clone https://github.com/shetengteng/skillix-hub.git /tmp/skillix-hub
cp -r /tmp/skillix-hub/skills/playwright/{SKILL.md,tool.js,lib,tools,references,package.json} skills/playwright/
cd skills/playwright && npm install
rm -rf /tmp/skillix-hub
Playwright Skill 无用户数据目录,更新时直接覆盖文件即可。
所有命令遵循以下格式:
node skills/playwright/tool.js <命令> '<JSON参数>'
node skills/playwright/tool.js navigate '{"url":"https://example.com"}'
返回页面快照,包含元素引用(如 [ref=e3])。
node skills/playwright/tool.js snapshot '{}'
快照是无障碍树。每个可交互元素都有一个 ref(如 [ref=e42])。使用这些 ref 来定位元素。
node skills/playwright/tool.js click '{"ref":"e42","element":"提交按钮"}'
node skills/playwright/tool.js type '{"ref":"e10","text":"hello@example.com"}'
node skills/playwright/tool.js fillForm '{"fields":[{"name":"邮箱","type":"textbox","ref":"e10","value":"hello@example.com"}]}'
node skills/playwright/tool.js screenshot '{"type":"png"}'
node skills/playwright/tool.js start # 启动浏览器
node skills/playwright/tool.js stop # 关闭浏览器
node skills/playwright/tool.js status # 检查浏览器状态
浏览器在多次调用之间保持运行。首次调用工具时会自动启动。
完整的 48 个工具 API 参数说明,请查看 references/tools-api.md。
| 命令 | 说明 |
|---|---|
navigate | 导航到 URL |
snapshot | 获取页面无障碍树(含 ref) |
click | 通过 ref 点击元素 |
type | 向元素输入文本 |
fillForm | 批量填写表单字段 |
pressKey | 按下键盘按键 |
screenshot | 截图 |
evaluate | 在页面执行 JavaScript |
waitFor | 等待文本/时间 |
tabs | 管理浏览器标签页 |
consoleMessages | 获取控制台输出 |
networkRequests | 获取网络活动 |
handleDialog | 接受/关闭对话框 |
cookieList | 列出 Cookie |
route | 模拟网络请求 |
runCode | 执行 Playwright 代码片段 |
每个命令返回 JSON 到 stdout:
{
"result": "...",
"snapshot": "- generic [ref=e2]: ...",
"tabs": ["0: (current) [标题](url)"],
"code": "await page.goto('...');",
"error": null
}
当用户用自然语言描述浏览器操作时,按以下规则映射到工具调用:
| 用户说 | 执行 |
|---|---|
| "打开 xxx 网站" / "访问 xxx" / "去 xxx 页面" | navigate '{"url":"xxx"}' |
| "返回上一页" / "后退" | goBack '{}' |
| "前进" | goForward '{}' |
| "刷新页面" / "重新加载" | reload '{}' |
| 用户说 | 执行 |
|---|---|
| "看看页面上有什么" / "页面内容是什么" | snapshot '{}' |
| "截个图" / "看看页面长什么样" | screenshot '{"type":"png"}' |
| "截整个页面" / "完整截图" | screenshot '{"type":"png","fullPage":true}' |
| "控制台有什么输出" / "看看日志" | consoleMessages '{"level":"info"}' |
| "有什么网络请求" / "看看 API 调用" | networkRequests '{"includeStatic":false}' |
先通过 snapshot 获取元素 ref,然后:
| 用户说 | 执行 |
|---|---|
| "点击 xxx 按钮" / "点一下 xxx" | click '{"ref":"eN","element":"xxx"}' |
| "在 xxx 输入框输入 yyy" | type '{"ref":"eN","text":"yyy"}' |
| "填写表单" / "把 xxx 填成 yyy" | fillForm '{"fields":[...]}' |
| "选择 xxx 选项" | selectOption '{"ref":"eN","values":["xxx"]}' |
| "按回车" / "按 Esc" | pressKey '{"key":"Enter"}' / pressKey '{"key":"Escape"}' |
| 用户说 | 执行 |
|---|---|
| "打开新标签页" | tabs '{"action":"new"}' |
| "切换到第 N 个标签" | tabs '{"action":"select","index":N}' |
| "关闭当前标签" | tabs '{"action":"close"}' |
| "有哪些标签页" | tabs '{"action":"list"}' |
| 用户说 | 执行 |
|---|---|
| "查看 Cookie" / "有哪些 Cookie" | cookieList '{}' |
| "设置 Cookie xxx" | cookieSet '{"name":"xxx","value":"yyy","domain":"..."}' |
| "清除 Cookie" | cookieClear '{}' |
| "在页面执行 JS" / "运行脚本 xxx" | evaluate '{"function":"() => { xxx }"}' |
| 用户说 | 执行 |
|---|---|
| "等页面出现 xxx" / "等 xxx 加载完" | waitFor '{"text":"xxx"}' |
| "等 xxx 消失" | waitFor '{"textGone":"xxx"}' |
| "等 3 秒" | waitFor '{"time":3}' |
| "验证页面有 xxx" | verifyText '{"text":"xxx"}' |
| "验证 xxx 元素存在" | verifyElement '{"ref":"eN"}' |
示例 1:用户说"帮我登录 xxx 网站"
# 1. 打开网站
node skills/playwright/tool.js navigate '{"url":"https://xxx.com/login"}'
# 2. 查看页面结构,找到输入框和按钮的 ref
node skills/playwright/tool.js snapshot '{}'
# 3. 填写用户名和密码(根据 snapshot 中的 ref)
node skills/playwright/tool.js fillForm '{"fields":[{"name":"用户名","type":"textbox","ref":"e5","value":"user@example.com"},{"name":"密码","type":"textbox","ref":"e8","value":"password123"}]}'
# 4. 点击登录按钮
node skills/playwright/tool.js click '{"ref":"e12","element":"登录按钮"}'
# 5. 验证登录成功
node skills/playwright/tool.js waitFor '{"text":"欢迎"}'
node skills/playwright/tool.js screenshot '{"type":"png"}'
示例 2:用户说"帮我看看这个页面的商品价格"
# 1. 导航到页面
node skills/playwright/tool.js navigate '{"url":"https://shop.example.com/product/123"}'
# 2. 获取页面内容
node skills/playwright/tool.js snapshot '{}'
# 3. 如果需要滚动加载更多内容
node skills/playwright/tool.js evaluate '{"function":"() => window.scrollTo(0, document.body.scrollHeight)"}'
node skills/playwright/tool.js snapshot '{}'
示例 3:用户说"监控这个 API 的请求和响应"
# 1. 打开页面
node skills/playwright/tool.js navigate '{"url":"https://app.example.com"}'
# 2. 执行触发 API 的操作
node skills/playwright/tool.js click '{"ref":"e5","element":"加载数据按钮"}'
# 3. 查看网络请求
node skills/playwright/tool.js networkRequests '{"includeStatic":false}'
# 4. 查看控制台日志
node skills/playwright/tool.js consoleMessages '{"level":"info"}'
snapshot 获取元素 refsnapshotstartresult 字段读取主要结果error 字段,非 null 表示执行失败| 变量 | 默认值 | 说明 |
|---|---|---|
PLAYWRIGHT_SKILL_BROWSER | chromium | 浏览器引擎 |
PLAYWRIGHT_SKILL_HEADLESS | false(桌面)/ true(Linux 无显示器) | 无头模式 |
PLAYWRIGHT_SKILL_CHANNEL | chrome | 浏览器通道 |