원클릭으로
browser
Browser automation with Python Playwright. Use for screenshots, web scraping, form filling, and visual verification of web apps.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Browser automation with Python Playwright. Use for screenshots, web scraping, form filling, and visual verification of web apps.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Convert files between formats (PDF to text, Markdown to HTML, JSON to CSV, CSV to JSON). Use when asked to convert, transform, or export files to different formats.
Persistent memory with semantic search - store and recall information across sessions. Use when asked to remember something, recall previous discussions, or manage long-term memory. Also use proactively to store important discoveries and compact context.
Install software packages at runtime in the Docker container. Use when a required tool or library is missing, or when asked to install packages.
Query SQLite and PostgreSQL databases. Use when asked to run SQL queries, analyze database data, or explore database tables.
MANDATORY final step. Validates task completion through testing and QA before allowing stop.
Track tasks for the current work session. Use this to break down work into steps and track progress. ALWAYS use this when starting a new task - add items first, then mark them done as you complete them.
| name | browser |
| description | Browser automation with Python Playwright. Use for screenshots, web scraping, form filling, and visual verification of web apps. |
Use Python Playwright for browser automation. Chromium is pre-installed.
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(viewport={'width': 1280, 'height': 720})
page.goto('https://example.com', wait_until='networkidle', timeout=30000)
page.screenshot(path='screenshot.png')
browser.close()
print('Screenshot saved to screenshot.png')
"
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(viewport={'width': 1280, 'height': 720})
page.goto('http://localhost:8000', wait_until='networkidle', timeout=30000)
page.screenshot(path='app_screenshot.png', full_page=True)
browser.close()
print('Screenshot saved to app_screenshot.png')
"
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://example.com', wait_until='networkidle')
text = page.inner_text('body')
print(text)
browser.close()
"
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://example.com/login')
page.fill('input[name=\"username\"]', 'myuser')
page.fill('input[name=\"password\"]', 'mypass')
page.click('button[type=\"submit\"]')
page.wait_for_load_state('networkidle')
page.screenshot(path='after_login.png')
browser.close()
"
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://example.com')
page.click('a:has-text(\"More information\")')
page.wait_for_load_state('networkidle')
print('Navigated to:', page.url)
page.screenshot(path='after_click.png')
browser.close()
"
| Need | Use |
|---|---|
| Search the web | /websearch (faster, no browser) |
| Download a URL | /fetch |
| Interact with a page | /browser (this skill) |
| Take screenshots | /browser (this skill) |
| Analyze an image | /vision |
| Selector | Description |
|---|---|
#id | Element by ID |
.class | Element by class |
button | Element by tag |
[name="field"] | Element by attribute |
a:has-text("Click") | Link with text |
input[type="submit"] | Input by type |
form >> input | Nested element |
headless=True - No physical display availableviewport={'width': 1280, 'height': 720}wait_until='networkidle' to wait for page to fully loadfull_page=True in screenshot() for long pagesAfter taking a screenshot, use /vision to analyze it:
# Take screenshot
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(viewport={'width': 1280, 'height': 720})
page.goto('http://localhost:8000', wait_until='networkidle')
page.screenshot(path='page.png')
browser.close()
"
# Analyze with vision
~/.claude/skills/vision/vision.sh analyze page.png "describe what you see"
If browser fails to launch:
# Check Xvfb is running
pgrep Xvfb
# Check DISPLAY is set
echo $DISPLAY # Should be :99
# Test Playwright
python3 -c "from playwright.sync_api import sync_playwright; print('OK')"