Files
Eddie a0994f733b chore: remove dead files, generate MARKETPLACE.md, refresh stale docs (#97)
* chore: remove dead files, generate MARKETPLACE.md, refresh stale docs

Dead tracked files removed:
- 19 plugins/*/SKILL-ORIGINAL-BACKUP.md (720KB, referenced by nothing)
- 6 finished one-off/stale scripts: renumber-skills.py (target gone),
  extract-keywords.rb + remove-category-from-plugins.sh (migrations fully
  applied), fix-frontmatter.mjs (unwired), release-check.sh (caller removed),
  audit-keywords.sh (stale since Dec 2025)
- plans/ (12 docs; cybersecurity skill shipped July 2026)
- .agents/skills/grill-me/ + skills-lock.json (personal npx-skills install
  artifact shipping to marketplace consumers)
- 2 empty unreferenced files in cloudflare-workers-multi-lang,
  playwright bun.lock

MARKETPLACE.md is now generated:
- generate-marketplace.sh emits a category-grouped catalog derived purely
  from marketplace.json (145 plugins, v3.9.0) — replaces the retired
  18-suite document that README had to warn about
- generator now prunes marketplace.json.backup-* to the 5 newest
  (28 had accumulated)

Docs refreshed to match reality:
- README: MARKETPLACE.md caveats → pointers at the generated catalog
- CLAUDE.md: rebuilt stale directory tree (no commands/, examples/,
  skills-review/), removed dead CLOUDFLARE_SKILLS_AUDIT link, replaced
  rotten "Current Status (2025-11-20)" snapshot, counts 139/142 → 145
- PROJECT_STRUCTURE.md: stats + counts refreshed (145 plugins / 186
  skills / v3.9.0), deleted entries removed
- MARKETPLACE_MANAGEMENT.md: documents MARKETPLACE.md generation

Verified: marketplace.json and .agents/plugins/marketplace.json regenerate
byte-identical; npm run validate (145/145), validate:codex (186/186),
validate-frontmatter all pass. No lockstep bump (hygiene, not a release).

* fix(review): reconcile PROJECT_STRUCTURE stats, guard multiline descriptions

CodeRabbit findings on #97:
- PROJECT_STRUCTURE.md: remaining 183-skill / 2,495-file values updated to
  186 / 2,647; multi-skill arithmetic corrected (4 multi-skill plugins =
  45 skills, 141 single-skill plugins, 186 total); tooling category 24→27
- generate-marketplace.sh: normalize \r\n to spaces in descriptions before
  pipe-escaping so a future multiline description cannot break the catalog
  table (output verified byte-identical today)
2026-09-17 21:10:56 +02:00
..

Playwright - Browser Automation & E2E Testing

Complete browser automation and end-to-end testing skill with Playwright. Auto-detects dev servers, writes clean test scripts, and provides comprehensive automation capabilities.

Overview

Expert knowledge for browser automation and E2E testing with Playwright - combining testing best practices with powerful automation features including dev server auto-detection, helper utilities, and universal code execution.

Key Features

E2E Testing

  • Cross-browser (Chromium, Firefox, WebKit)
  • Auto-wait (no flaky tests)
  • Powerful semantic selectors
  • Network interception and mocking
  • Visual testing (screenshots, videos)
  • Trace viewer for debugging
  • TypeScript-first API

Browser Automation

  • Auto-detects dev servers - Automatically finds running localhost servers
  • Universal executor (run.js) - Execute inline code, files, or stdin
  • Helper library - 15+ utility functions for common tasks
  • Custom HTTP headers - Environment-based header injection
  • Progressive disclosure - Lean skill + comprehensive API reference
  • Temp file management - Writes to /tmp/ to avoid clutter
  • Visible browser by default - See automation in real-time

What's New in 4.0

  • ✅ Dev server auto-detection
  • ✅ Universal executor for flexible code execution
  • ✅ Helper library with retry logic, safe actions, cookie banner handling
  • ✅ Custom HTTP headers via environment variables
  • ✅ Path resolution for multiple installation locations
  • ✅ Comprehensive API reference (progressive disclosure)
  • ✅ Working example templates
  • ✅ Bun-first package management

When to Use

E2E Testing

  • End-to-end testing
  • Cross-browser testing
  • Visual regression testing
  • API testing
  • Authentication flow testing
  • User journey testing

Browser Automation

  • Test any webpage or application
  • Fill forms and automate workflows
  • Take screenshots across viewports
  • Check responsive design
  • Validate UX and accessibility
  • Test login flows
  • Check for broken links
  • Automate repetitive browser tasks

Installation

First-Time Setup

# Navigate to skill directory
cd ~/.claude/skills/playwright  # Or your installation path

# Install using bun (preferred)
bun run setup

# Or using npm
npm run setup:npm

This installs Playwright and Chromium browser. Only needed once.

For E2E Testing Projects

# Using Bun (preferred)
bun add -d @playwright/test
bunx playwright install

# Using npm
npm init playwright@latest

Quick Start

Browser Automation

// /tmp/playwright-test-page.js
const { chromium } = require('playwright');

const TARGET_URL = 'http://localhost:3001'; // Auto-detected

(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 });
  console.log('📸 Screenshot saved to /tmp/screenshot.png');

  await browser.close();
})();

Execute: cd $SKILL_DIR && node run.js /tmp/playwright-test-page.js

E2E Testing

import { test, expect } from '@playwright/test'

test('login flow', async ({ page }) => {
  await page.goto('/')
  await page.getByRole('link', { name: 'Login' }).click()
  await page.getByLabel('Email').fill('user@example.com')
  await page.getByLabel('Password').fill('password123')
  await page.getByRole('button', { name: 'Sign in' }).click()

  await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible()
})

Run tests: bunx playwright test

Helper Library

The skill includes a comprehensive helper library with utilities for common tasks:

const helpers = require('./lib/helpers');

// Detect running dev servers
const servers = await helpers.detectDevServers();

// Safe click with retry logic
await helpers.safeClick(page, 'button.submit', { retries: 3 });

// Safe type with clear
await helpers.safeType(page, '#username', 'testuser');

// Take timestamped screenshot
await helpers.takeScreenshot(page, 'test-result');

// Handle cookie banners
await helpers.handleCookieBanner(page);

// Extract table data
const data = await helpers.extractTableData(page, 'table.results');

// Create context with custom headers
const context = await helpers.createContext(browser);

Examples

The skill includes working example templates in examples/:

  • responsive-test.js - Test across desktop, tablet, and mobile viewports
  • form-test.js - Fill and submit forms
  • link-checker.js - Check for broken links

Workflow

The skill follows a systematic workflow for browser automation:

  1. Auto-detect dev servers - Finds running localhost servers
  2. Write scripts to /tmp - Keeps workspace clean
  3. Use visible browser - Default headless: false for visibility
  4. Parameterize URLs - Makes scripts reusable
  5. Execute via run.js - Universal executor with proper module resolution

Auto-Trigger Keywords

  • playwright
  • browser automation
  • E2E testing
  • end to end testing
  • cross-browser testing
  • visual regression
  • page object model
  • web testing
  • test automation
  • automated testing
  • playwright testing

Structure

playwright/
├── .claude-plugin/
│   └── plugin.json          # Plugin metadata
├── skills/
│   └── playwright/
│       ├── SKILL.md          # Main skill content
│       ├── run.js            # Universal executor
│       ├── package.json      # Dependencies & scripts
│       ├── lib/
│       │   └── helpers.js    # Utility library
│       ├── references/
│       │   └── API_REFERENCE.md  # Comprehensive API docs
│       └── examples/
│           ├── responsive-test.js
│           ├── form-test.js
│           └── link-checker.js
└── README.md                 # This file

Resources

License

MIT

Credits

  • Enhanced from lackeyjb/playwright-skill
  • Original testing patterns from Claude Skills repository
  • Maintained by Claude Skills Maintainers