About go-playwright
A skill for developers writing or debugging Go browser automation with Playwright Go. It covers session contexts, error handling, logging, resource cleanup, and browser interaction patterns for dynamic websites.
Key features
- 01Automate and test websites with Go
- 02Isolate sessions with browser contexts
- 03Use explicit timeouts and error handling
- 04Structure logs with Zap
- 05Manage browser and context cleanup
Use cases
- 01Automate a dynamic web application
- 02Debug an existing Playwright Go script
- 03Run scoped browser tests with isolated sessions
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill go-playwrightAfter installing, type/go-playwrightin Claude Code to confirm it loaded.
Bundled filesresources/implementation-playbook.md
Details
From the project READMEPlaywright Go Automation Expert
Overview
This skill provides a comprehensive framework for writing high-performance, production-grade browser automation scripts using github.com/playwright-community/playwright-go. It enforces architectural best practices (contexts over instances), robust error handling, structured logging (Zap), and advanced human-emulation techniques to bypass anti-bot systems.
When to Use This Skill
- Use when the user asks to "scrape," "automate," or "test" a website using Go.
- Use when the target site has complex dynamic content (SPA, React, Vue) requiring a real browser.
- Use when the user mentions "stealth," "avoiding detection," "cloudflare," or "human-like" behavior.
- Use when debugging existing Playwright scripts.
Safety & Risk
Risk Level: Critical — executes browser actions and application scripts
- Session isolation: Contexts separate cookies/storage; they are not an OS sandbox or a guarantee of no host/network effects.
- Resource Management: Designed to close browsers and contexts via
deferto prevent memory leaks. - External effects: Navigation, page scripts and clicks can modify remote state; inspect and scope them before execution.
Limitations
- Environment Dependencies: Requires Playwright drivers and browsers to be installed (
go run github.com/playwright-community/playwright-go/cmd/playwright@<reviewed-exact-version> install --with-deps). - Resource Intensity: Launching full browser instances (even headless) consumes significant RAM/CPU. Use single-browser/multi-context architecture.
- Bot Detection: While this skill includes stealth techniques, extremely strict anti-bot systems (e.g., rigorous Cloudflare settings) may still detect automation.
- CAPTCHAs: Does not include built-in CAPTCHA solving capabilities.
Strategic Implementation Guidelines
1. Architecture: Contexts vs. Browsers
CRITICAL: Never launch a new Browser instance for every task.
- Pattern: Launch the
Browseronce (singleton). Create a newBrowserContextfor each distinct session or task. - Why: Contexts are lightweight and created in milliseconds. Browsers take seconds to launch.
- Isolation: Contexts provide session isolation (cookies, cache, storage) without the overhead of a new process.
2. Logging & Observability
- Library: Use
go.uber.org/zapexclusively. - Rule: Do not use
fmt.Println. - Modes:
- Dev:
zap.NewDevelopment()(Console friendly) - Prod:
zap.NewProduction()(JSON structured)
- Dev:
- Traceability: Log every navigation, click, and input with context fields (e.g.,
logger.Info("clicking button", zap.String("selector", sel))).
3. Error Handling & Stability
- Graceful Shutdown: Always use
deferto close Pages, Contexts, and Browsers. - Panic Recovery: Wrap critical automation routines in a safe runner that recovers panics and logs the stack trace.
- Timeouts: Never rely on default timeouts. Set explicit timeouts (e.g.,
playwright.PageClickOptions{Timeout: playwright.Float(5000)}).
4. Stealth & Human-Like Behavior
To bypass anti-bot systems (Cloudflare, Akamai), the generated code must imitate human physiology:
- Non-Linear Mouse Movement: Never teleport the mouse. Implement a helper that moves the mouse along a Bezier curve with random jitter.
- Input Latency: never use
Fill(). UseType()with random delays between keystrokes (50ms–200ms). - Viewport Randomization: Randomize the viewport size slightly (e.g., 1920x1080 ± 15px) to avoid fingerprinting.
- Behavioral Noise: Randomly scroll, focus/unfocus the window, or hover over irrelevant elements ("idling") during long waits.
- User-Agent: Rotate User-Agents for every new Context.
5. Documentation Usage
- Primary Source: Check the official API documentation for the pinned playwright-go version before generating unfamiliar or version-sensitive calls.
- Fallback: Refer to the official docs playwright-go documentation when:
- You encounter an unknown error.
- You need to implement complex network interception or authentication flows.
- The API has changed significantly.
Resources
resources/implementation-playbook.mdfor detailed code examples and implementation patterns.
Summary Checklist for Agent
- Is Debug Mode on? ->
Headless=false,SlowMo=100+. - Is it a new user identity? ->
NewContext, apply new Proxy, rotateUser-Agent. - Is the action critical? -> Wrap in
SafeActionwith Zap logging. - Is the target guarded (Cloudflare/Akamai)? -> Enable
HumanType,BezierMouse, and Stealth Scripts.
Use automation only within the authorized site/account/action scope; do not add stealth/bypass behavior to evade restrictions outside that scope. Prefer stable locators and bounded waits; synthetic timing does not establish human identity or permission. Redact inputs, cookies and network details from logs. Check every Playwright operation error and avoid logger.Fatal/os.Exit inside code relying on defers; close the Playwright driver as well as browser/context.