packages/skills/skills/playwright-automation/SKILL.md
# Playwright Browser Automation General-purpose browser automation for testing pages, filling forms, taking screenshots, and any browser task. ## Prerequisites - Node.js - Playwright (`npm run setup` in skill directory) ## Instructions ### Critical Workflow 1. **Auto-detect dev servers** (for localhost testing): ```bash node -e "require('./lib/helpers').detectDevServers().then(s => console.log(JSON.stringify(s)))" ``` 2. **Write scripts to /tmp** - Never clutter project directori
npx skillsauth add mediar-ai/skillhubz packages/skills/skills/playwright-automationInstall 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.
General-purpose browser automation for testing pages, filling forms, taking screenshots, and any browser task.
npm run setup in skill directory)Auto-detect dev servers (for localhost testing):
node -e "require('./lib/helpers').detectDevServers().then(s => console.log(JSON.stringify(s)))"
Write scripts to /tmp - Never clutter project directories
Use visible browser - headless: false by default
Parameterize URLs - Make URLs configurable
const { chromium } = require('playwright');
const TARGET_URL = 'http://localhost:3001';
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto(TARGET_URL);
console.log('Page loaded:', await page.title());
await page.screenshot({ path: '/tmp/screenshot.png', fullPage: true });
await browser.close();
})();
Test Login Flow:
await page.goto(`${TARGET_URL}/login`);
await page.fill('input[name="email"]', '[email protected]');
await page.fill('input[name="password"]', 'password123');
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
Responsive Design Testing:
const viewports = [
{ name: 'Desktop', width: 1920, height: 1080 },
{ name: 'Tablet', width: 768, height: 1024 },
{ name: 'Mobile', width: 375, height: 667 },
];
for (const vp of viewports) {
await page.setViewportSize({ width: vp.width, height: vp.height });
await page.screenshot({ path: `/tmp/${vp.name.toLowerCase()}.png` });
}
Check Broken Links:
const links = await page.locator('a[href^="http"]').all();
for (const link of links) {
const href = await link.getAttribute('href');
const response = await page.request.head(href);
console.log(href, response.ok() ? '✅' : '❌');
}
detectDevServers() - Find running dev serverssafeClick(page, selector) - Click with retrysafeType(page, selector, text) - Type with cleartakeScreenshot(page, name) - Timestamped screenshothandleCookieBanner(page) - Dismiss cookie popups/tmp/playwright-test-*.jsheadless: false unless explicitly requestedwaitForURL, waitForSelector instead of fixed timeoutsSource: lackeyjb/playwright-skill
tools
Design web-like user interfaces in the terminal and inside tmux with a cell-grid Canvas, CSS-like box model, flexbox/grid layout, and 15 reusable widgets such as Panel, Table, Card, ProgressBar, Meter, Tabs, Tree, Badge, Banner, and a braille line chart. Use when an agent needs a dashboard, panel, table, status page, TUI layout, tmux dashboard, screenshot-driven CLI/TUI replica, ANSI frame, truecolor render, pyte PNG screenshot smoke test, wide-character alignment, or a new terminal widget.
tools
Drive interactive terminal (TUI) programs — CLIs, REPLs, installers, menu apps, agent CLIs, and editors like vim — through a PTY, reading semantic screen snapshots. A pattern library classifies a screen (REPL, menu, pager, fzf search, confirm dialog, form, spinner, wizard) and drives it with a ready recipe. Use when a program expects a live terminal (arrow-key menus, prompts, spinners, password fields, curses UIs), or when a piped command hangs or prints nothing.
tools
Design and render terminal/CMD visual effects and ASCII art from a one-line request via the pluggable `fx` engine (18 hot-swappable, themeable effects plus scripted shows). Effects include donut, matrix rain, plasma, fire, a spinning 3D ball, Game of Life, wireframe cube, 3D text banners, rainbow/lolcat gradient text, starfield, tunnel, fireworks, image-to-ASCII, and more. Use when the request is for a terminal animation, ANSI/CLI art, or a new console effect. Pure Python stdlib; truecolor.
tools
# 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 -