puppeteer-skill – Agents & Automation skill for AI agents
Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: "Puppeteer", "headless Chrome", "page.goto", "scrape", "PDF generation".
Install the puppeteer-skill skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/puppeteer-skill-b5b06.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /puppeteer-skill – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/puppeteer-skill-b5b06.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $puppeteer-skill – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/puppeteer-skill-b5b06.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /puppeteer-skill – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/puppeteer-skill-b5b06.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /puppeteer-skill – then describe the task you want done.
SKILL.md content
Puppeteer Automation Skill
When to Use
Use this skill when you need generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: "Puppeteer", "headless Chrome", "page.goto", "scrape", "PDF generation".
Core Patterns
Basic Script
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: 'new' });
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 720 });
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
await page.type('#username', '[email protected]');
await page.type('#password', 'password123');
await Promise.all([
page.waitForNavigation({ waitUntil: 'networkidle0' }),
page.click('button[type="submit"]'),
]);
const title = await page.title();
console.log('Title:', title);
await browser.close();
})();Wait Strategies
// Wait for selector
await page.waitForSelector('.result', { visible: true, timeout: 10000 });
// Wait for navigation
await Promise.all([
page.waitForNavigation({ waitUntil: 'networkidle0' }),
page.click('a.nav-link'),
]);
// Wait for function
await page.waitForFunction('document.querySelector(".count").innerText === "5"');
// Wait for network request
const response = await page.waitForResponse(resp =>
resp.url().includes('/api/data') && resp.status() === 200
);Screenshot & PDF
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });Network Interception
await page.setRequestInterception(true);
// One resolution handler: never continue/abort/respond the same request twice.
page.on('request', request => {
if (request.isInterceptResolutionHandled()) return;
if (request.url().includes('/api/data')) {
return request.respond({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ items: [] }),
});
}
if (request.resourceType() === 'image') return request.abort();
return request.continue();
});TestMu AI Cloud
For full setup, capabilities, and shared capability reference, see [reference/cloud-integration.md](https://github.com/LambdaTest/agent-skills/tree/main/puppeteer-skill/reference/cloud-integration.md).
const capabilities = {
browserName: 'Chrome', browserVersion: 'latest',
'LT:Options': {
platform: 'Windows 11', build: 'Puppeteer Build',
user: process.env.LT_USERNAME, accessKey: process.env.LT_ACCESS_KEY,
},
};
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://cdp.lambdatest.com/puppeteer?capabilities=${encodeURIComponent(JSON.stringify(capabilities))}`,
});Quick Reference
| Task | Code |
|------|------|
| Launch headed | puppeteer.launch({ headless: false }) |
| Evaluate JS | await page.evaluate(() => document.title) |
| Extract text | await page.$eval('.el', el => el.textContent) |
| Extract all | await page.$$eval('.items', els => els.map(e => e.textContent)) |
| Set cookie | await page.setCookie({ name: 'token', value: 'abc' }) |
| Emulate device | await page.emulate(puppeteer.devices['iPhone 12']) |
Upstream deep patterns (not bundled)
reference/playbook.md is not present in this AAS tree. Check installed-version APIs before using device/cookie/launch examples. The login selectors are illustrative, not elements on example.com. Use disposable contexts and synthetic accounts, close browsers in finally blocks, and authorize cloud transfer/spend before sending credentials or private pages. Cloud capability URLs may contain secrets; never log them.
| § | Section | Lines |
|---|---------|-------|
| 1 | Production Setup & Configuration | Launch options, Jest integration |
| 2 | Page Object Pattern | BasePage, LoginPage, DashboardPage |
| 3 | Network Interception & Mocking | Request mock, response capture |
| 4 | Wait Strategies | DOM, network, custom conditions |
| 5 | Screenshots, PDF & Media | Full page, clip, PDF, video |
| 6 | Authentication & Cookies | API login, session save/restore |
| 7 | iFrame, Dialog & File Operations | Upload, download, dialogs |
| 8 | Performance & Metrics | Web Vitals, Lighthouse, coverage |
| 9 | Accessibility Testing | axe-core integration |
| 10 | CI/CD Integration | GitHub Actions, Docker |
| 11 | Debugging Quick-Reference | 11 common problems |
| 12 | Best Practices Checklist | 13 items |
Limitations
- Use this skill only when the task clearly matches its upstream source and local project context.
- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
Related skills
- pydantic-ai – Build production-ready AI agents with PydanticAI — type-safe tool use, structured…
- quinn – Verifies specified behavior through appropriate tests and truthful coverage reports.
- quit-sponsor – Helps an AI agent provide non-judgmental, evidence-informed quit-smoking support with…
- recursive-context-pruning-token-budgeting – Optimizes AI agent performance by pruning redundant context, managing token usage, and…
- reddit-automation – Automate Reddit tasks via Rube MCP (Composio): search subreddits, create posts, manage…
- render-automation – Automate Render tasks via Rube MCP (Composio): services, deployments, projects. Always…
- restosignals – Find US restaurants and bars before they open, as scored leads fused from…
- reverse-browser-automation – Automate browsers (Playwright) and Windows desktop applications (UI automation) for…