用途:渲染本地已构建的网页并截取整页截图,输出桌面端与移动端两种尺寸,用于在提交前验证 UI 改动,例如 site/ 落地页或 report/ 审计报告。
主要能力:通过 playwright-core 驱动容器内预装的 Chromium(位于 /opt/pw-browsers/chromium-*/chrome-linux/chrome,需作为 executablePath 并加 --no-sandbox),无需 playwright install,也不下载浏览器。脚本会先从上到下滚动触发滚动显现动画,再回到顶部截图,避免下方卡片因 opacity-0 与 IntersectionObserver 而截成空白。输出文件为 <outDir>/<name>-desktop.png 与 -mobile.png。
使用方式:先构建目标(落地页 cd site && npm install && npm run build 生成 site/dist/;报告用根目录 npm run build 生成 dist/audit-report.template.html),再以该目录为 web 根启动本地服务,例如 cd site/dist && python3 -m http.server 8899,并用 curl 确认返回 200。确保驱动可用:node -e "require.resolve('playwright-core')" 2>/dev/null || npm install --no-save playwright-core。随后运行 node .claude/skills/screenshot/scripts/shot.mjs http://localhost:8899/ "$SCRATCHPAD" landing。可用 SHOT_WIDTHS="1440x900,768x1024,390x844" 覆盖视口。发送前先读取桌面 PNG 确认渲染正常,再通过 SendUserFile(display: render)展示,输出到暂存目录而非仓库。
限制:这是 .claude/ 贡献者技能,属于该仓库自身的工具链,并非已发布的消费者技能。切勿运行 playwright install(会被阻止且浪费时间)。从暂存目录运行的脚本无法用裸导入解析仓库 node_modules,需用 createRequire(cwd + '/package.json')。移动端上传有时在 SendUserFile 返回 400,可重试一次或只发桌面端。若卡片空白,通常是滚动显现未触发所致。