#376 by GitHub stars
lackeyjb/playwright-skill
Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, valid
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/playwright-skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
dd47a6a023e2 → dd47a6a023e2
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → dd47a6a023e2
No earlier version was observed for comparison.
Verified commit dd47a6a023e249eb1b36e9e943eab89d0900865d
git clone --filter=blob:none --no-checkout https://github.com/lackeyjb/playwright-skill.git .hotskills/lackeyjb-playwright-skill && git -C .hotskills/lackeyjb-playwright-skill checkout --detach dd47a6a023e249eb1b36e9e943eab89d0900865d
# Copy each selected skill directory from .hotskills/lackeyjb-playwright-skill into .claude/skills/<skill-name>/Heat
4.8- Star growth, last 7 daysAhead of 70% of tracked repositories
- Star growth, last 24 hoursAhead of 71% of tracked repositories
- Rank movement, last 7 daysAhead of 44% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- playwright-skill
skills/playwright-skill
How it works
playwright-skill
When your agent uses it
Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.
What it loads into context
Frontmatter
133 tokensAlways available to the agent
SKILL.md
1,842 tokensWhen the skill is activated
Reference documents
4,002 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Path resolution
- Workflow
- Setup
- Minimal example
- Current Playwright patterns
- Common tasks
- Helpers
- Configuration
Scripts executed separately
lib/helpers.jspackage.jsonrun.js
Files
../../.claude-plugin/marketplace.jsonasset1,085 bytes../../.claude-plugin/plugin.jsonasset550 bytesAPI_REFERENCE.mddoc16,461 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 bytesSKILL.mdcore7,741 byteslib/helpers.jsruns4,243 bytespackage-lock.jsonasset1,761 bytespackage.jsonruns699 bytesrun.jsruns3,685 bytes
Read SKILL.md
# Playwright Browser Automation
Write and execute focused Playwright scripts for the user's request. Prefer the
skill's executor and helpers, but use the full Playwright API when needed.
## Path resolution
This skill can be installed in several locations, so resolve its directory
first. Set `SKILL_DIR` to the directory containing this SKILL.md file, then run
the commands below as written:
```bash
export SKILL_DIR=<absolute path of the directory containing this SKILL.md>
export TMP_DIR="$(node -p 'require("node:os").tmpdir()')"View the complete source on GitHubSkills included
- playwright-skill
Repository facts
- License
- MIT
- Created
- Oct 19, 2025
- Last pushed
- Nov 1, 2026
- Forks
- 255
- Open issues
- 5
- Project activity
- Active
Rank over the last 12 weeks
Now #376 · best #276 · down 54 in 30 days
- #369 on Oct 31
- #368 on Nov 1
- #369 on Nov 2
- #372 from Nov 3 to Nov 4
- #373 on Nov 5
- #376 since Nov 6
69 earlier periods
- #269 on Aug 2
- #271 on Aug 7
- #273 on Aug 8
- #270 on Aug 9
- #279 on Aug 10
- #275 on Aug 11
- #276 on Aug 12
- #280 on Aug 13
- #278 on Aug 14
- #276 on Aug 15
- #281 on Aug 16
- #280 on Aug 17
- #287 from Aug 18 to Aug 19
- #285 on Aug 20
- #288 on Aug 21
- #283 on Aug 22
- #288 on Aug 23
- #290 on Aug 24
- #292 from Aug 25 to Aug 26
- #291 on Aug 27
- #293 on Aug 28
- #292 on Aug 29
- #295 on Aug 31
- #299 on Sep 1
- #296 on Sep 2
- #303 on Sep 3
- #295 on Sep 4
- #293 from Sep 5 to Sep 6
- #304 from Sep 7 to Sep 9
- #305 on Sep 10
- #301 on Sep 11
- #305 on Sep 12
- #308 on Sep 15
- #305 from Sep 17 to Sep 18
- #303 on Sep 19
- #312 on Sep 20
- #310 on Sep 21
- #315 on Sep 22
- #311 from Sep 23 to Sep 25
- #307 on Sep 26
- #312 on Sep 27
- #316 on Sep 28
- #319 on Sep 29
- #314 on Sep 30
- #313 on Oct 1
- #316 on Oct 2
- #312 on Oct 3
- #308 on Oct 4
- #316 on Oct 5
- #318 on Oct 6
- #322 on Oct 7
- #325 on Oct 8
- #331 on Oct 9
- #324 on Oct 10
- #325 on Oct 11
- #337 on Oct 12
- #334 on Oct 13
- #335 on Oct 14
- #332 on Oct 15
- #338 on Oct 16
- #334 on Oct 17
- #340 on Oct 18
- #343 from Oct 20 to Oct 21
- #344 from Oct 22 to Oct 23
- #342 on Oct 24
- #353 on Oct 25
- #363 on Oct 28
- #366 on Oct 29
- #368 on Oct 30
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 9 notes
skills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/playwright-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 1 broad permissionin 1 file: playwright-skill/SKILL.md:1
- No dangerous shell commands
- 47 network referencesin 7 files: playwright-skill/API_REFERENCE.md:56 playwright-skill/package-lock.json:18 playwright-skill/run.js:70 and 4 more
- No hidden or obfuscated text
- No instruction overrides
- 3 executable scriptsin 3 files: playwright-skill/lib/helpers.js:1 playwright-skill/package.json:1 playwright-skill/run.js:1
- No access to secrets
- No requests to vote in Hot
Show all 51 signals by file
.claude-plugin/marketplace.json
- Network accessline 18
"name": "lackeyjb" }, "homepage": "https://github.com/lackeyjb/playwright-skill", - Network accessline 19
}, "homepage": "https://github.com/lackeyjb/playwright-skill", "repository": "https://github.com/lackeyjb/playwright-skill", - Network accessline 20
"homepage": "https://github.com/lackeyjb/playwright-skill", - Network accessline 21
"repository": "https://github.com/lackeyjb/playwright-skill",
.claude-plugin/plugin.json
skills/playwright-skill/API_REFERENCE.md
- Network accessline 56
reporter: 'html', use: { baseURL: 'http://localhost:3000', - Network accessline 57
use: { baseURL: 'http://localhost:3000', trace: 'on-first-retry', - Network accessline 58
baseURL: 'http://localhost:3000', - Network accessline 69
webServer: { command: 'npm run start', url: 'http://localhost:3000', - Network accessline 70
command: 'npm run start', url: 'http://localhost:3000', reuseExistingServer: !process.env.CI, - Network accessline 71
url: 'http://localhost:3000', - Network accessline 98
// Navigate, then assert a meaningful readiness signal. await page.goto('https://example.com'); - Network accessline 99
await page.goto('https://example.com'); - Network accessline 307
// Page assertions await expect(page).toHaveTitle('My App'); await expect(page).toHaveURL('https://example.com/dashboard'); - Network accessline 308
await expect(page).toHaveTitle('My App'); await expect(page).toHaveURL('https://example.com/dashboard'); await expect(page).toHaveURL(/.*dashboard/); - Network accessline 309
await expect(page).toHaveURL('https://example.com/dashboard'); - Network accessline 496
// Measure page load time const startTime = Date.now(); await page.goto('https://example.com'); - Network accessline 497
const startTime = Date.now(); await page.goto('https://example.com'); const loadTime = Date.now() - startTime; - Network accessline 498
await page.goto('https://example.com'); - Network accessline 640
# Generate code npx playwright codegen https://example.com - Network accessline 641
npx playwright codegen https://example.com - Network accessline 649
- [Playwright Documentation](https://playwright.dev/docs/intro) - Network accessline 650
- [API Reference](https://playwright.dev/docs/api/class-playwright) - Network accessline 651
- [Best Practices](https://playwright.dev/docs/best-practices)
skills/playwright-skill/SKILL.md
- Broad permissionsline 1
Bash(node:*) Bash(npm:*) Read Write - Network accessline 74
const targetUrl = process.env.TARGET_URL || 'http://localhost:3000'; - Network accessline 99
node "$SKILL_DIR/run.js" -e "const browser = await chromium.launch({headless: false}); try { const page = await browser.newPage(); await page.goto('https://example.com'); console.log(await page.title()); } finally { await browser.close(); } - Network accessline 177
const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
skills/playwright-skill/lib/helpers.js
- Executable scriptline 1
Executable file - Network accessline 103
}); })); return servers.sort((a, b) => a - b).map(port => `http://localhost:${port}`); - Network accessline 104
})); return servers.sort((a, b) => a - b).map(port => `http://localhost:${port}`); } - Network accessline 105
return servers.sort((a, b) => a - b).map(port => `http://localhost:${port}`);
skills/playwright-skill/package-lock.json
- Network accessline 18
"node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 19
"version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - Network accessline 20
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 32
"node_modules/playwright": { "version": "1.62.1", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", - Network accessline 33
"version": "1.62.1", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", - Network accessline 34
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", - Network accessline 50
"node_modules/playwright-core": { "version": "1.62.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", - Network accessline 51
"version": "1.62.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", - Network accessline 52
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz",
skills/playwright-skill/package.json
- Executable scriptline 1
Executable file
skills/playwright-skill/run.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 70
const source = args.slice(1).join(' '); if (!source) { console.error('Usage: node run.js -e "await page.goto(\'https://example.com\')"'); - Network accessline 71
if (!source) { console.error('Usage: node run.js -e "await page.goto(\'https://example.com\')"'); process.exit(1); - Network accessline 72
console.error('Usage: node run.js -e "await page.goto(\'https://example.com\')"'); - Network accessline 92
} else { console.error('Usage: node run.js <script.js> [args...]'); console.error(' or: node run.js -e "await page.goto(\'https://example.com\')"'); - Network accessline 93
console.error('Usage: node run.js <script.js> [args...]'); console.error(' or: node run.js -e "await page.goto(\'https://example.com\')"'); process.exit(1); - Network accessline 94
console.error(' or: node run.js -e "await page.goto(\'https://example.com\')"');
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 42 facts
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:18High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:19High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:20High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:21High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:7High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:8High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:9High confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:56Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:57Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:58Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:69Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:70Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:71Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:98Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:99Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:307Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:308Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:309Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:496Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:497Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:498Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:640Low confidence
- Network access in code of documentationplaywright-skill/API_REFERENCE.md:641Low confidence
- Network access in prose of documentationplaywright-skill/API_REFERENCE.md:649Low confidence
- Network access in prose of documentationplaywright-skill/API_REFERENCE.md:650Low confidence
- Network access in prose of documentationplaywright-skill/API_REFERENCE.md:651Low confidence
- Broad permissions in the frontmatter of the SKILL.mdplaywright-skill/SKILL.md:1High confidence
- Network access in code of the SKILL.mdplaywright-skill/SKILL.md:74High confidence
- Network access in code of the SKILL.mdplaywright-skill/SKILL.md:99High confidence
- Network access in code of the SKILL.mdplaywright-skill/SKILL.md:177High confidence
- Executable script in code of a file that runsplaywright-skill/lib/helpers.js:1High confidence
- Network access in code of a file that runsplaywright-skill/lib/helpers.js:103High confidence
- Network access in code of a file that runsplaywright-skill/lib/helpers.js:104High confidence
- Network access in code of a file that runsplaywright-skill/lib/helpers.js:105High confidence
- Executable script in code of a file that runsplaywright-skill/package.json:1High confidence
- Executable script in code of a file that runsplaywright-skill/run.js:1High confidence
- Network access in code of a file that runsplaywright-skill/run.js:70High confidence
- Network access in code of a file that runsplaywright-skill/run.js:71High confidence
- Network access in code of a file that runsplaywright-skill/run.js:72High confidence
- Network access in code of a file that runsplaywright-skill/run.js:92High confidence
- Network access in code of a file that runsplaywright-skill/run.js:93High confidence
- Network access in code of a file that runsplaywright-skill/run.js:94High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/playwright-skill/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/playwright-skill/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/playwright-skill/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/playwright-skill/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/playwright-skill/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/lackeyjb-playwright-skill/)