원클릭으로
puppeteer
Use puppeteer to browse websites
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use puppeteer to browse websites
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
You must load this skill if you are creating or updating standalone documentation.
This skill should be used when the user asks to "skillify this", "turn this into a skill", "make a skill out of what we just did", "generalize this task into a reusable skill", or otherwise wants to capture a just-completed session task as a new skill or fold it into an existing one.
Browser automation using the puppeteer NPM package. Use when performing tasks on websites as a user would, taking screenshots, filling forms, or navigating web applications.
Load this skill immediately after a user mentions "@goodfoot/claude-code-hooks" or Claude Code hooks.
Load this skill immediately after a user mentions "@goodfoot/codex-hooks" or Codex hooks.
Load this skill immediately after a user mentions "@goodfoot/codex-hooks" or Codex hooks.
| name | puppeteer |
| description | Use puppeteer to browse websites |
curl -s --connect-timeout 2 http://127.0.0.1:9222/json/version | head -c 200
Empty / FAILED output means Chrome was not launched with --remote-debugging-port=9222 — stop and ask the user.
The browser UUID changes every launch. Always discover it:
WS=$(curl -s http://127.0.0.1:9222/json/version | node -e "let d='';process.stdin.on('data',c=>d+=c).on('end',()=>console.log(JSON.parse(d).webSocketDebuggerUrl))")
echo "$WS"
Run from /workspace so puppeteer-core resolves from the workspace node_modules. The heredoc form below uses tsx for top-level await; node --input-type=module works equivalently.
WS_ENDPOINT="$WS" tsx << 'EOF'
import puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({
browserWSEndpoint: process.env.WS_ENDPOINT,
defaultViewport: null,
});
const page = (await browser.pages())[0] || await browser.newPage();
await page.goto("http://example.com:8080/", { waitUntil: "networkidle2", timeout: 20000 });
console.log(await page.title());
await browser.disconnect(); // never close() — keeps Chrome alive for next call
EOF