AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Browser Daemon

skill-noiv-skill-playwright-minimal-playwright-skill · by noiv

Persistent browser automation via Playwright daemon. Keep a browser window open and send it commands (navigate, execute JS, inspect console). Perfect for interactive debugging, development, and testing web applications. Use when you need to interact with a browser repeatedly without opening/closing it.

No reviews yet
0 installs
27 views
0.0% view→install

Install

$ agentstack add skill-noiv-skill-playwright-minimal-playwright-skill

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-noiv-skill-playwright-minimal-playwright-skill)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
11mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Browser Daemon? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Browser Daemon - Persistent Browser Automation

Persistent browser daemon that keeps Chrome open and accepts commands via file-based IPC.

Quick Start

Start the daemon (once per session)

cd ~/.claude/skills/playwright-skill
node browser-daemon.js

Or ask: "Start the browser daemon in the background"

The browser window opens and stays open.

Send commands

Use absolute paths (cleaner, no directory changes):

# Navigate
~/.claude/skills/playwright-skill/browser-client.js navigate "http://localhost:8080/..."

# Execute JavaScript
~/.claude/skills/playwright-skill/browser-client.js exec "document.title"
~/.claude/skills/playwright-skill/browser-client.js exec "document.querySelectorAll('div').length"

# Console logs
~/.claude/skills/playwright-skill/browser-client.js console
~/.claude/skills/playwright-skill/browser-client.js console-clear

# Status
~/.claude/skills/playwright-skill/browser-client.js status

# Resize viewport
~/.claude/skills/playwright-skill/browser-client.js resize 1920 1080

Both scripts have shebangs and are executable, so they can be called directly.

Architecture

Claude (Bash tool)
    ↓
browser-client.js (writes .browser-command)
    ↓
browser-daemon.js (polls, executes, writes .browser-result)
    ↓
Chrome Browser (Playwright-controlled)

IPC Files:

  • .browser-command - Command input (JSON)
  • .browser-result - Command output (JSON)
  • .browser-ready - Ready signal (exists when daemon is running)

Files created/deleted automatically during operation.

Commands

navigate

Navigate to URL and wait for page load.

node browser-client.js navigate "http://localhost:8080/page"

Returns: { success: true, url: string, title: string }

exec

Execute JavaScript in browser context.

node browser-client.js exec "document.querySelectorAll('div').length"

Returns: { success: true, result: any }

console

Get all captured console logs.

node browser-client.js console

Returns: { success: true, logs: [{ type, text, location }] }

console-clear

Clear console log buffer.

node browser-client.js console-clear

Returns: { success: true }

status

Check daemon status and current page info.

node browser-client.js status

Returns: { success: true, url, title, consoleLogsCount }

resize

Resize browser viewport.

node browser-client.js resize 1920 1080

Returns: { success: true, width, height }

Daemon Behavior

  • Launches Chrome (not Chromium) for H.264 codec support
  • Viewport set to full available screen size on startup
  • Automatically captures all console output (log, warn, error, debug, pageerror)
  • Polls for commands every 100ms
  • Lazy restart: When browser is closed and command is sent, daemon detects closure, restarts browser, restores last URL, then executes command

Browser Configuration

chromium.launch({
  channel: 'chrome',      // Use Google Chrome, not Chromium
  headless: false,        // Visible window
  args: ['--start-maximized']
})

Important Quirks

Manual window resizing does NOT work:

  • Playwright controls viewport independently from window
  • Manually resizing browser window does NOT change viewport
  • Window resize does NOT trigger JavaScript resize events
  • Use resize command instead: node browser-client.js resize 1024 768

DevTools overlay:

  • Opening DevTools does NOT resize viewport - overlays on top
  • Does NOT trigger resize events
  • Does NOT change window.innerWidth/Height

Viewport vs Window:

  • window.innerWidth/Height - The viewport (controlled by Playwright)
  • window.outerWidth/Height - The window size
  • Only viewport can be changed via resize command

Use Cases

Interactive development: Keep browser open while testing changes, reload and check console without manual interaction.

Debugging console logs: Track down log sources with automatic source location capture.

Inspecting page state: Query DOM, check element counts, inspect computed styles via JavaScript execution.

Testing workflows: Automate multi-step browser interactions (navigate, fill forms, submit, check results).

Troubleshooting

Daemon not responding:

ls ~/.claude/skills/playwright-skill/.browser-ready
cd ~/.claude/skills/playwright-skill && node browser-daemon.js

Commands timing out:

  • Check if browser window is still open
  • Kill daemon and restart
  • Clean up stuck files: rm -f .browser-command .browser-result

Browser window closed:

  • Kill daemon (Ctrl+C)
  • Restart: node browser-daemon.js
  • Or send any command - lazy restart will trigger automatically

Setup (First Time)

cd ~/.claude/skills/playwright-skill
npm install

This installs Playwright and downloads Chrome browser.

Advanced Capabilities

See META_COMMANDS.md for comprehensive reference of Playwright's meta-level capabilities beyond basic testing:

  • Page events (console, network, dialogs, workers, frames, lifecycle)
  • Content capture (screenshots, PDFs, HTML, video)
  • Network control (interception, mocking, HAR replay, WebSockets)
  • Script injection and Node.js function exposure
  • Performance metrics and garbage collection
  • Chrome DevTools Protocol (CDP) access for low-level browser control
  • Browser context events and meta methods

Integration Notes

When user requests browser interaction:

  1. Check if daemon is running (.browser-ready file exists)
  2. If not, offer to start as background task
  3. Use browser-client.js commands to perform actions
  4. Report results back to user

User can request additional features - the codebase is straightforward and well-documented for extensions.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.