关于 screenshot
screenshot 是供仓库贡献者使用的本地网页截图技能,使用预装的 Chromium 和 playwright-core 渲染页面并截取全页图。它会滚动页面触发滚动显示内容,并支持指定视口尺寸。
主要功能
- 01使用预装 Chromium 截取本地页面
- 02生成桌面和移动视口截图
- 03滚动页面触发延迟显示内容
- 04支持自定义视口尺寸
- 05发送前检查截图渲染结果
适用场景
- 01提交前检查落地页的界面改动
- 02预览审计报告的页面呈现
- 03生成本地站点的桌面和移动截图
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zernie/ vigiles --skill screenshot安装后在 Claude Code 中输入/screenshot确认已加载。
附带文件scripts/shot.mjs
详细介绍
screenshot — 渲染本地页面并截屏
贡献者开发技能。通过 playwright-core 驱动容器中预装的 Chromium(无需 playwright install,也无需下载浏览器),对本地托管的页面进行全页截屏。该技能总结了手动操作时遇到的棘手问题(见下文)。
适用场景
- “给首页/网站截屏”“报告看起来怎么样”“渲染
site/并展示给我”。 - 提交前验证
site/(首页)或report/(审计报告)中的 UI 更改。
流程
- 构建目标(如果是 Vite 应用,需要
dist/):- 首页:
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 >/tmp/httpd.log 2>&1 & sleep 1 && curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8899/ # expect 200 - 确保驱动程序就绪(不下载浏览器——使用
PLAYWRIGHT_BROWSERS_PATH):node -e "require.resolve('playwright-core')" 2>/dev/null || npm install --no-save playwright-core - 使用内置脚本截屏 → 写入
<outDir>/<name>-desktop.png和-mobile.png:
使用node .claude/skills/screenshot/scripts/shot.mjs http://localhost:8899/ "$SCRATCHPAD" landingSHOT_WIDTHS="1440x900,768x1024,390x844"覆盖视口尺寸。 - 发送前先检查:使用
Read读取桌面 PNG,确认渲染正常,然后使用SendUserFile(display: render)让用户查看。发送到临时目录,而不是仓库。
此技能涵盖的易错点(别再踩坑)
- 滚动显示效果导致卡片空白。 滚动时淡入的部分(
opacity-0+ IntersectionObserver) 会被简单的fullPage截屏捕获为不可见——首屏正常渲染,首屏以下的所有内容都是空白。脚本会从顶部滚动到底部以触发显示效果,然后返回顶部再截屏。 如果卡片是空白的,原因就在这里。 - Chromium 已预装,位置为
/opt/pw-browsers/chromium-*/chrome-linux/chrome;传入executablePath+--no-sandbox。绝不要运行playwright install(操作会被阻止,还浪费时间)。 - 从 ESM 导入 CJS:
playwright-core的入口是 CJS,从临时目录运行的脚本无法通过裸导入解析仓库的node_modules——应使用createRequire(cwd + '/package.json')(脚本已这样处理)。 - 移动版上传有时会在
SendUserFile中返回 400——重试一次,或只发送桌面版。
未随项目发布
这是一个 .claude/ 贡献者技能(本仓库自身的工具),不是面向用户发布的技能。
评论
支持 Markdown