Playwright 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: 🔵 Safe
- Sandboxed Execution: Browser contexts are isolated; they do not persist data to the host machine unless explicitly saved.
- Resource Management: Designed to close browsers and contexts via
defer to prevent memory leaks.
- No External State-Change: Default behavior is read-only (scraping/testing) unless the script is explicitly designed to submit forms or modify data.
Limitations
- Environment Dependencies: Requires Playwright drivers and browsers to be installed (
go run github.com/playwright-community/playwright-go/cmd/playwright@latest 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
Browser once (singleton). Create a new BrowserContext for each distinct session or task.
- Why: Contexts are lightweight and created in milliseconds. Browsers take seconds to launch.
- Isolation: Contexts provide complete isolation (cookies, cache, storage) without the overhead of a new process.
2. Logging & Observability
- Library: Use
go.uber.org/zap exclusively.
- Rule: Do not use
fmt.Println.
- Modes:
- Dev:
zap.NewDevelopment() (Console friendly)
- Prod:
zap.NewProduction() (JSON structured)
- 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
defer to 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(). Use Type() 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: Rely on your internal knowledge of the API first to save tokens.
- Fallback: Refer to the official docs playwright-go documentation ONLY if:
- You encounter an unknown error.
- You need to implement complex network interception or authentication flows.
- The API has changed significantly.
Resources
resources/implementation-playbook.md for 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, rotate User-Agent.
- Is the action critical? -> Wrap in
SafeAction with Zap logging.
- Is the target guarded (Cloudflare/Akamai)? -> Enable
HumanType, BezierMouse, and Stealth Scripts.
Source: sickn33/agentic-awesome-skills → skills/go-playwright/SKILL.md
Also appears in: sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills/skills/go-playwright/SKILL.md, sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills-claude/skills/go-playwright/SKILL.md
1---2name: go-playwright3description: Expert capability for robust, stealthy, and efficient browser automation using Playwright Go.4---5
6
7# Playwright Go Automation Expert
8
9## Overview
10This 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.
11
12## When to Use This Skill
13- Use when the user asks to "scrape," "automate," or "test" a website using Go.
14- Use when the target site has complex dynamic content (SPA, React, Vue) requiring a real browser.
15- Use when the user mentions "stealth," "avoiding detection," "cloudflare," or "human-like" behavior.
16- Use when debugging existing Playwright scripts.
17
18## Safety & Risk
19**Risk Level: 🔵 Safe**
20
21- **Sandboxed Execution:** Browser contexts are isolated; they do not persist data to the host machine unless explicitly saved.
22- **Resource Management:** Designed to close browsers and contexts via `defer` to prevent memory leaks.
23- **No External State-Change:** Default behavior is read-only (scraping/testing) unless the script is explicitly designed to submit forms or modify data.
24
25## Limitations
26- **Environment Dependencies:** Requires Playwright drivers and browsers to be installed (`go run github.com/playwright-community/playwright-go/cmd/playwright@latest install --with-deps`).
27- **Resource Intensity:** Launching full browser instances (even headless) consumes significant RAM/CPU. Use single-browser/multi-context architecture.
28- **Bot Detection:** While this skill includes stealth techniques, extremely strict anti-bot systems (e.g., rigorous Cloudflare settings) may still detect automation.
29- **CAPTCHAs:** Does not include built-in CAPTCHA solving capabilities.
30
31## Strategic Implementation Guidelines
32
33### 1. Architecture: Contexts vs. Browsers
34**CRITICAL:** Never launch a new `Browser` instance for every task.
35- **Pattern:** Launch the `Browser` *once* (singleton). Create a new `BrowserContext` for each distinct session or task.
36- **Why:** Contexts are lightweight and created in milliseconds. Browsers take seconds to launch.
37- **Isolation:** Contexts provide complete isolation (cookies, cache, storage) without the overhead of a new process.
38
39### 2. Logging & Observability
40- **Library:** Use `go.uber.org/zap` exclusively.
41- **Rule:** Do not use `fmt.Println`.
42- **Modes:**
43 - **Dev:** `zap.NewDevelopment()` (Console friendly)
44 - **Prod:** `zap.NewProduction()` (JSON structured)
45- **Traceability:** Log every navigation, click, and input with context fields (e.g., `logger.Info("clicking button", zap.String("selector", sel))`).
46
47### 3. Error Handling & Stability
48- **Graceful Shutdown:** Always use `defer` to close Pages, Contexts, and Browsers.
49- **Panic Recovery:** Wrap critical automation routines in a safe runner that recovers panics and logs the stack trace.
50- **Timeouts:** Never rely on default timeouts. Set explicit timeouts (e.g., `playwright.PageClickOptions{Timeout: playwright.Float(5000)}`).
51
52### 4. Stealth & Human-Like Behavior
53To bypass anti-bot systems (Cloudflare, Akamai), the generated code must **imitate human physiology**:
54- **Non-Linear Mouse Movement:** Never teleport the mouse. Implement a helper that moves the mouse along a Bezier curve with random jitter.
55- **Input Latency:** never use `Fill()`. Use `Type()` with random delays between keystrokes (50ms–200ms).
56- **Viewport Randomization:** Randomize the viewport size slightly (e.g., 1920x1080 ± 15px) to avoid fingerprinting.
57- **Behavioral Noise:** Randomly scroll, focus/unfocus the window, or hover over irrelevant elements ("idling") during long waits.
58- **User-Agent:** Rotate User-Agents for every new Context.
59
60### 5. Documentation Usage
61- **Primary Source:** Rely on your internal knowledge of the API first to save tokens.
62- **Fallback:** Refer to the official docs [playwright-go documentation](https://pkg.go.dev/github.com/playwright-community/playwright-go#section-documentation) ONLY if:
63 - You encounter an unknown error.
64 - You need to implement complex network interception or authentication flows.
65 - The API has changed significantly.
66
67## Resources
68- `resources/implementation-playbook.md` for detailed code examples and implementation patterns.
69
70### Summary Checklist for Agent
71 - Is Debug Mode on? -> `Headless=false`, `SlowMo=100+`.
72 - Is it a new user identity? -> `NewContext`, apply new Proxy, rotate `User-Agent`.
73 - Is the action critical? -> Wrap in `SafeAction` with Zap logging.
74 - Is the target guarded (Cloudflare/Akamai)? -> Enable `HumanType`, `BezierMouse`, and Stealth Scripts.
75
76---
77
78**Source:** [`sickn33/agentic-awesome-skills`](https://github.com/sickn33/agentic-awesome-skills) → `skills/go-playwright/SKILL.md`
79
80**Also appears in:** `sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills/skills/go-playwright/SKILL.md`, `sickn33/agentic-awesome-skills/plugins/agentic-awesome-skills-claude/skills/go-playwright/SKILL.md`