web

Automate browser interactions on web apps without APIs using Playwright and saved login sessions.

4|2|Updated Sep 1, 2026
One-click install
npx skills add https://github.com/Procesio-Externals/procesio-cli --skill web-procesio-externals
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: web
Source: https://github.com/Procesio-Externals/procesio-cli/tree/main/tools/web
Command: npx skills add https://github.com/Procesio-Externals/procesio-cli --skill web-procesio-externals

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires playwright.

What problem does it solve? Many web applications expose no public API, forcing manual browser work for tasks like form filling, data extraction, and research. This Skill drives those sites through Playwright while reusing saved login sessions, so authentication happens once and every later run works headlessly. ## Core Features & Use Cases - Saved Session Reuse: Capture a login once via a headed browser (storageState cookies plus localStorage, or a persistent profile for IndexedDB-auth sites like WhatsApp Web), then reuse it headlessly across runs. - Declarative Step Lists: Execute JSON step sequences (goto, click, fill, press, wait_for, extract_text, extract_attr, screenshot, upload) against a saved session and collect structured results. - Human Handoff: Stage a form fill with the agent, then hold the headed browser open so a human reviews and clicks the irreversible Submit control. - Runtime Diagnostics: Every run reports console errors, uncaught page exceptions, failed requests, and HTTP 4xx/5xx responses so verification does not rely on screenshots alone. - Use Case: Research a LinkedIn profile by running a step list that navigates to the page, waits for the main element, extracts the name and headline text, and saves a screenshot, all through a previously saved linkedin session. ## Quick Start Ask the agent to run the web tool with the run action against a saved session, for example: use the web skill to open my saved linkedin session and extract the headline text from a profile URL.

Frequently Asked Questions about web

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automate a website that has no API using Playwright?▼

Capture a login session once with save-session in a headed browser, then run declarative JSON step lists (goto, click, fill, extract_text) against that saved session. Playwright reuses the stored cookies and localStorage so later runs work headlessly.

How do I save and reuse a browser login session in Playwright?▼

Run save-session with a name and login URL, log in manually in the headed browser, and the storageState is written to a session file. For IndexedDB-auth sites like WhatsApp Web, use the persistent profile mode, which stores the login on disk instead.

Why does WhatsApp Web not load in headless Chromium?▼

Default headless Chromium advertises a HeadlessChrome user agent and navigator.webdriver, which WhatsApp Web's browser gate rejects. The driver applies stealth hardening: it strips Headless from the UA via CDP and shadows navigator.webdriver on every launch.

Can an agent run save-session to capture a login automatically?▼

Only with the --wait-seconds option, which holds the browser open for a timed period instead of blocking on stdin. Without it, agent stdin returns immediate EOF and a half-authenticated profile gets saved. Verify logins afterward by probing the real target page.

Why does filling a form field time out even though it exists in the HTML?▼

The field is likely inside a hidden container, such as date widgets that expose one visible lite-mode input over hidden day/month/year sub-inputs. Fill the visible proxy input in its declared format and press Tab so the widget propagates the value.

How do I verify a browser automation run actually succeeded?▼

Check final_url and the diagnostics object rather than screenshots. Diagnostics report console errors, uncaught page exceptions, failed requests, and HTTP 4xx/5xx responses; empty lists indicate a clean run, while a screenshot alone hides JavaScript failures.