packages/skills/skills/browser-lock-multi-agent-playwright-concurrency/SKILL.md
# Browser Lock (Multi-Agent Playwright Concurrency) Multiple Claude agents share a **single browser instance** via MCP Playwright. A hook-based locking system prevents conflicts — only one agent can use the browser at a time; others wait their turn. ## How It Works 1. **PreToolUse hook** (`~/.claude/hooks/playwright-lock.sh`) runs before any `mcp__playwright*` tool call: - If lock is free or held by the same session: acquire/refresh, allow the call - If held by another session: poll eve
npx skillsauth add mediar-ai/skillhubz packages/skills/skills/browser-lock-multi-agent-playwright-concurrencyInstall 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.
Multiple Claude agents share a single browser instance via MCP Playwright. A hook-based locking system prevents conflicts — only one agent can use the browser at a time; others wait their turn.
PreToolUse hook (~/.claude/hooks/playwright-lock.sh) runs before any mcp__playwright* tool call:
PostToolUse hook (~/.claude/hooks/playwright-unlock.sh) runs after each tool call:
Session exit (~/.claude/hooks/session-end.sh) releases the lock on clean exit
| File | Purpose |
|------|---------|
| ~/.claude/hooks/playwright-lock.sh | PreToolUse hook — acquires lock or waits |
| ~/.claude/hooks/playwright-unlock.sh | PostToolUse hook — refreshes lock timestamp |
| ~/.claude/playwright-lock.json | Lock state: { session_id, timestamp } |
| ~/.claude/playwright-mutex.d/ | Atomic filesystem mutex (transient, should not persist) |
| ~/.claude/playwright-lock.log | Event log (ACQUIRED, BLOCKED, REFRESHED, TIMEOUT, EXPIRED) |
| ~/.claude/settings.json | Hook config under PreToolUse / PostToolUse with matcher mcp__playwright.* |
| Parameter | Value | Defined in |
|-----------|-------|------------|
| Lock expiry | 30s of inactivity | playwright-lock.sh LOCK_EXPIRY |
| Max wait | 120s | playwright-lock.sh MAX_WAIT |
| Poll interval | 2s | playwright-lock.sh POLL_INTERVAL |
| Mutex stale timeout | 5s | playwright-lock.sh MUTEX_EXPIRY |
| PreToolUse hook timeout | 130s | settings.json |
| PostToolUse hook timeout | 5s | settings.json |
cat ~/.claude/playwright-lock.json
tail -f ~/.claude/playwright-lock.log
rm -f ~/.claude/playwright-lock.json ~/.claude/playwright-mutex.d
grep "BLOCKED\|ACQUIRED after\|TIMEOUT\|EXPIRED" ~/.claude/playwright-lock.log | tail -20
settings.json)session_id), with terminal-based fallbacktools
# X Twitter Scraper Use Xquik for X/Twitter tweet search, user lookup, profile tweets, follower export, media download, monitors, webhooks, posting workflows, and MCP-backed API exploration. ## Prerequisites - A Xquik API key in `XQUIK_API_KEY`. - Internet access to `https://xquik.com/api/v1`, `https://xquik.com/mcp`, and `https://docs.xquik.com`. - A clear user request that identifies the target tweets, users, accounts, keywords, media, monitor, webhook, or write action. ## Source Truth -
tools
Use when the user says "mk0r", "appmaker CLI", "open a VM", "run something in the sandbox", "talk to the VM agent", "spin up an E2B sandbox", or "chat with appmaker from CLI." Wraps the `mk0r` CLI to list projects, exec commands inside their E2B sandboxes, stream chat with the VM agent (same `/api/chat` the web UI uses), toggle SOAX residential IP, manage schedules, and copy files. Supports a sticky default project via `mk0r projects use`.
testing
Use when the user mentions "influencer candidates", "social media operator", "check proposals on Upwork/Fiverr", "review influencer applications", "qualify candidates", or "reach out to operators". Manages the IG/TikTok account operator hiring pipeline — review applicants, check replies, qualify, and do proactive outreach.
tools
End-to-end newsletter pipeline: investigate recent features, draft, send via API endpoint, and track delivery/open/click metrics.