Screenshot

Capture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...

Iván

@ivangdavila

What This Skill Does

Captures screenshots of screens, windows, regions, web pages, iOS simulators, and CI environments using the most appropriate native or browser-based tool for each platform. Automatically selects the right capture method, wait strategy, viewport, and output format based on the target and context.

Replaces manually juggling multiple screenshot tools and guesswork about timing, viewport consistency, and platform quirks by providing a single decision framework for reliable capture.

When to Use It

  • Capture a macOS desktop window for a bug report
  • Take a stable screenshot of a web page after animations settle
  • Save an iOS simulator screen for QA documentation
  • Compare before-and-after screenshots of a UI change at fixed viewport
  • Screenshot a specific region of a Linux Wayland desktop
  • Capture a headless browser page in a CI pipeline for visual regression

Install

$ openclaw skills install @ivangdavila/screenshot

When to Use

Use when the task needs a screenshot of a desktop app, browser page, simulator, region, window, or full screen, especially for debugging, QA, documentation, release notes, bug reports, visual review, or before/after comparison.

This skill is about taking the right screenshot reliably, not about editing images after the fact.

Tool Choice

ContextBest defaultWhy
macOS desktop or windowscreencaptureBuilt-in, reliable, supports silent, interactive, region, and window capture
iOS Simulatorxcrun simctl io booted screenshotMore reliable than generic desktop capture for simulator output
Linux Waylandgrim + slurpX11 tools often fail or behave oddly on Wayland
Linux X11 / headless CIscrot or browser-native captureWorks in minimal or virtual-display environments
Windows desktop capturenircmd savescreenshot or Pillow ImageGrabEasier than verbose PowerShell screen APIs
Web page or web appPlaywrightBest for stable viewport, element, full-page, masked, and regression screenshots
Visual diff / screenshot testsPlaywright with fixed viewportBetter control over animations, caret, masks, and reproducibility

Default to the most native capture path first. Move to browser-native tooling when determinism, masking, element capture, or visual regression matters more than convenience.

Core Rules

1. Pick the capture path by artifact, not by habit

  • Desktop UI screenshots usually want OS-native tools.
  • Web pages and web apps usually want browser-native capture, not a desktop screenshot of the browser window.
  • Simulator screenshots should come from the simulator tooling when possible.
  • Use region, window, or element capture when the point is local; use full screen or full page only when the full context matters.

2. Stabilize the target before capturing

  • Dynamic pages should settle before capture: wait for network idle or the specific element that matters, then give fonts and transitions a brief moment to finish.
  • Do not take the screenshot before the real rendered state exists.
  • For browser capture, prefer explicit readiness over blind sleeps when possible.
  • If the page never truly goes idle, wait for the exact UI state you need instead of chasing perfect stillness.

3. Freeze viewport, scale, zoom, and theme for reproducibility

  • Screenshot comparisons are meaningless if viewport, zoom level, theme, or device scale changed.
  • For browser captures, fix the viewport before taking baselines or before/after images.
  • Retina and HiDPI displays can produce more pixels than expected; decide whether you want physical pixels or CSS-scale output and keep that choice consistent.
  • If dark/light mode matters, capture both intentionally instead of mixing them accidentally.

4. Capture the smallest useful scope

  • Element, region, or window screenshots are usually better than noisy full-screen captures.
  • Full-page screenshots are useful for audits and archives, but long pages become hard to read and compare.
  • For browser work, element screenshots or clipped regions usually produce cleaner diffs than full-page output.
  • If the screenshot is evidence, keep enough surrounding context that the user can understand what they are looking at.

5. Remove noise before you capture

  • Hide or avoid unstable UI when it is not the subject: cursors, carets, toasts, chat widgets, notifications, loading spinners, timestamps, and randomized content.
  • Mask or avoid secrets, personal data, tokens, and internal URLs before capture.
  • For Playwright-style browser capture, features like disabled animations, hidden carets, and masking are worth using when visual stability matters.
  • If the noise is the bug, keep it; otherwise remove it.

6. Use the right output format

  • PNG is the default for screenshots, UI, code, terminals, and text-heavy captures.
  • JPEG is for photographic content, not normal screenshots.
  • WebP is fine for sharing or storage when compatibility is acceptable, but do not default to it if the consumer expects plain PNG files.
  • Avoid recompressing screenshots through JPEG pipelines unless the user explicitly wants smaller lossy output.

7. Make automation and CI captures debuggable

  • On failures, save a screenshot immediately before retrying or moving on.
  • Use stable filenames for baselines and timestamps for ad hoc or batch captures.
  • In CI, identical viewport and deterministic state matter more than raw screenshot volume.
  • Headless runs should prefer browser-native screenshots over trying to screen-grab the host display.

8. Validate that the screenshot is actually useful

  • Check that the important detail is visible, legible, and not cropped away.
  • Verify that secrets are not still visible in tabs, sidebars, URLs, notifications, or test data.
  • Before/after comparisons should use the same viewport, zoom, theme, and state.
  • A screenshot is bad if it is technically correct but useless for the human who needs it.

High-Value Patterns

  • macOS: screencapture -x out.png for silent capture, -i for interactive selection, -R x,y,w,h for a fixed region.
  • iOS Simulator: xcrun simctl io booted screenshot out.png
  • Linux Wayland: grim -g "$(slurp)" out.png
  • Playwright page capture: wait for the target state, then use page, element, clipped, or full-page screenshots deliberately.
  • Playwright stability features worth remembering: fixed viewport, disabled animations, hidden caret, masks for sensitive regions, and stable theme/media settings.

Common Traps

  • Taking a browser-window screenshot when an element or page screenshot was the real need.
  • Capturing before fonts, data, or layout transitions finish.
  • Comparing screenshots with different viewport sizes or zoom levels and treating the diff as meaningful.
  • Using JPEG for screenshots and blurring text, edges, and code.
  • Letting timestamps, cursor blinks, notifications, or random data ruin visual diffs.
  • Forgetting that Wayland breaks familiar X11 screenshot tools.
  • Sharing screenshots with secrets still visible in tabs, sidebars, URLs, or test accounts.
  • Taking full-page captures of huge pages and ending up with unreadable evidence.

Related Skills

Install with clawhub install <slug> if user confirms:

  • playwright — Browser automation, DOM interaction, and web screenshots
  • image — Post-capture format, cropping, compression, and export decisions
  • image-edit — Annotation, cleanup, masking, and targeted edits after capture
  • documentation — Turning screenshots into docs, guides, and release assets
  • video — When a flow should be recorded instead of reduced to still images

Feedback

  • If useful: clawhub star screenshot
  • Stay updated: clawhub sync

Top skills in this category

Translate

@ivangdavila

Translates and localizes text, software strings, documents, subtitles, and marketing copy between any language pair. Use when translating anything, when fixing a translation that reads machine-made, or when localizing a product: ICU plurals and gender, placeholders that must survive, string catalogs (JSON, XLIFF, .po, .strings, .xcstrings, ARB, RESX, YAML), locale codes and fallback chains, RTL and bidi breakage, CJK typography, mojibake, text expansion that overflows the UI, subtitle timing and reading speed, hreflang and multilingual SEO, glossaries, translation memory and fuzzy matches, and post-editing machine output. Use when choosing register (tu/vous, tú/usted, du/Sie, keigo), between es-ES and es-419 or zh-Hans and zh-Hant, or when a certified, legal, or medical translation carries liability. Not for writing original copy natively in one language (spanish, french, german, japanese, chinese) or generating captions from audio (video-captions).

1012k

Humanizer

@biostartechnology

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

706126k

YouTube Watcher

@michaelgathara

Fetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.

34154k

Elite Longterm Memory

@nextfrontierbuilds

Ultimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.

23264k

SuperDesign

@mpociot

Expert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.

19341k