# shoot a page, push it to your bucket, get the URL $ bunx @voila.dev/cliche http://localhost:3000 shot.png --upload https://assets.example.com/cliche/2026-08-29-shot-d1cf773c.png # same tools, for your agent $ claude mcp add cliche -- bunx @voila.dev/cliche mcp
A diff shows the code. A screenshot shows what the user gets. Put both in the PR and review stops being guesswork.
Keys are content-hashed and dated, so nothing overwrites anything. Your bucket ends up holding what your app looked like, release by release.
Bun.WebView renders the page. WKWebView on macOS, your
Chrome elsewhere. Nothing to install.
Bun.S3Client pushes it to your bucket. R2, S3, MinIO,
anything that speaks S3.
The URL lands on stdout. Add --markdown for an image line
you can paste as is.
One command opens your bucket as a photo album, month by month. Here it runs on tries.care's screenshots:
Shot with cliche, obviously.
--full-page, --wait-for, --scroll-to, and --local-storage to boot logged-in screens.CLICHE_BUCKET, CLICHE_ENDPOINT and the two keys. Everything is prefixed, so it never collides with variables you already have.cliche mcp serves screenshot and upload to any client over stdio.cliche setup creates the bucket through your wrangler login and writes .env.cliche skill drops a PR-screenshots skill into .claude/skills/. Also at /skill.md.