.agents/skills/browsing-with-playwright/SKILL.md
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction. NOT when only fetching static content (use curl/wget instead).
npx skillsauth add abdulmateen5251/Personal-AI-Employee browsing-with-playwrightInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automate browser interactions via Playwright MCP server.
# Using helper script (recommended)
bash scripts/start-server.sh
# Or manually
npx @playwright/mcp@latest --port 8808 --shared-browser-context &
# Using helper script (closes browser first)
bash scripts/stop-server.sh
# Or manually
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_close -p '{}'
pkill -f "@playwright/mcp"
Important: The --shared-browser-context flag is required to maintain browser state across multiple mcp-client.py calls. Without it, each call gets a fresh browser context.
# Go to URL
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_navigate \
-p '{"url": "https://example.com"}'
# Go back
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_navigate_back -p '{}'
# Accessibility snapshot (returns element refs for clicking/typing)
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_snapshot -p '{}'
# Screenshot
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_take_screenshot \
-p '{"type": "png", "fullPage": true}'
Use ref from snapshot output to target elements:
# Click element
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_click \
-p '{"element": "Submit button", "ref": "e42"}'
# Type text
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_type \
-p '{"element": "Search input", "ref": "e15", "text": "hello world", "submit": true}'
# Fill form (multiple fields)
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_fill_form \
-p '{"fields": [{"ref": "e10", "value": "[email protected]"}, {"ref": "e12", "value": "password123"}]}'
# Select dropdown
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_select_option \
-p '{"element": "Country dropdown", "ref": "e20", "values": ["US"]}'
# Wait for text to appear
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_wait_for \
-p '{"text": "Success"}'
# Wait for time (ms)
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_wait_for \
-p '{"time": 2000}'
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_evaluate \
-p '{"function": "return document.title"}'
For complex workflows, use browser_run_code to run multiple actions in one call:
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_run_code \
-p '{"code": "async (page) => { await page.goto(\"https://example.com\"); await page.click(\"text=Learn more\"); return await page.title(); }"}'
Tip: Use browser_run_code for complex multi-step operations that should be atomic (all-or-nothing).
Run: python3 scripts/verify.py
Expected: ✓ Playwright MCP server running
pgrep -f "@playwright/mcp"bash scripts/start-server.shSee references/playwright-tools.md for complete tool documentation.
| Issue | Solution |
|-------|----------|
| Element not found | Run browser_snapshot first to get current refs |
| Click fails | Try browser_hover first, then click |
| Form not submitting | Use "submit": true with browser_type |
| Page not loading | Increase wait time or use browser_wait_for |
| Server not responding | Stop and restart: bash scripts/stop-server.sh && bash scripts/start-server.sh |
data-ai
```skill --- name: watchdog description: Monitors and restarts watcher and orchestrator processes. --- ``` # Watchdog Monitors and restarts core background services. ## Start ```bash bash scripts/start.sh ``` ## Stop ```bash bash scripts/stop-all.sh ``` ## Status ```bash bash scripts/status.sh ```
testing
```skill --- name: social-poster description: Draft-first Facebook, Instagram, and X posting with approval workflow and posting summaries. --- ``` # Social Poster Creates social post drafts for Facebook, Instagram, and X (Twitter), routes them through `/Pending_Approval`, and processes approved posts with audit logging and summaries. ## Platforms - Facebook - Instagram - Twitter (X) ## Server Lifecycle ### Start ```bash bash scripts/start.sh ``` ### Stop ```bash bash scripts/stop.sh ``` #
tools
```skill --- name: ralph-loop description: Persistence loop utility that keeps re-running task commands until completion conditions are met. --- ``` # Ralph Loop Implements a persistence pattern for long multi-step tasks by repeatedly running a command until completion criteria are satisfied. ## Usage ```bash python3 scripts/ralph_loop.py \ --command "python3 .agents/skills/orchestrator/scripts/orchestrator.py" \ --done-file "Vault/Done/TASK_COMPLETE.md" \ --max-iterations 10 ``` ## Co
tools
```skill --- name: qwen-agent description: Autonomous Qwen Code agent loop — reads Needs_Action, reasons via Qwen Code CLI, writes drafts to Pending_Approval, and executes approved MCP actions. --- ``` # Qwen Agent The core reasoning brain of the Personal AI Employee. This skill integrates Qwen Code CLI as the autonomous reasoning engine over the Obsidian Vault. ## Architecture ``` Filesystem Watcher / Gmail Watcher ↓ (writes files) Vault/Needs_Action/ ↓ (reads + prompts qw